﻿// MY月額支払い関連(Cookieパラメータ名)
var sfkapmd_cookie_prm = ["MYKPA", "MYKPB", "MYKPC", "MYKPD", "MYKPE"];
// MY月額支払い関連(Formパラメータ名)
var sfkapmd_form_prm = ["atama", "kinri", "bhiritsu", "loany", "loanw"];
// パラメータ名の区切り文字
var	sfkapmd_delimita_prm = "=";
// パラメータ値の区切り文字
var	sfkapmd_delimita_val = "&";
// クッキーにセットするMY月額支払い条件名
var sfkapmd_cookie_search_mykapmd = "ssmykapmd";

/**
 * 通常一覧のMy月額を表示します。
 **/
function sfkapmd_setKapmdFromList_sf100b00002_01()
{
	sfkapmd_setKapmdFromList("");
}

/**
 * 通常一覧－左右表示のMy月額を表示します。
 **/
function sfkapmd_setKapmdFromList_sf100b00004_01()
{
	sfkapmd_setKapmdFromList("L");
	sfkapmd_setKapmdFromList("R");
}

/**
 * My月額を画面にセットします。
 **/
function sfkapmd_setKapmdFromList(lrview_id)
{
	var i = 0;
	// ○Cookieから取得
	var cookie_obj = sfkapmd_getParamFromCookie(lrview_id);
	
	if( cookie_obj == null ){
		return;
	}

	var atama_val = 0;
	var kinri_val = 0;
	var bhiritsu_val = 0;
	var loany_val = 0;
	var loanw_val = 0;

	for( i = 0; i < cookie_obj.length; i++ ){
		// 登録されている条件取得
		if( cookie_obj[i][0] == "atama" ){
			if( cookie_obj[i][1] != undefined ){
				atama_val = eval(cookie_obj[i][1]);
			}
		}
		if( cookie_obj[i][0] == "kinri" ){
			if( cookie_obj[i][1] != undefined ){
				kinri_val = eval(cookie_obj[i][1]);
			}
		}
		if( cookie_obj[i][0] == "bhiritsu" ){
			if( cookie_obj[i][1] != undefined ){
				bhiritsu_val = eval(cookie_obj[i][1]);
			}
		}
		if( cookie_obj[i][0] == "loany" ){
			if( cookie_obj[i][1] != undefined ){
				loany_val = eval(cookie_obj[i][1]);
			}
		}
		if( cookie_obj[i][0] == "loanw" ){
			if( cookie_obj[i][1] != undefined ){
				loanw_val = cookie_obj[i][1];
			}
		}
	}

	// 表示件数を取得
	var cnt_val = "0";
	if( document.getElementsByName('CNT').length ){
		for( i = 0; i < document.getElementsByName('CNT').length; i++ ){
			cnt_val = document.getElementsByName('CNT').item(i).value;
		}
	}
	
	// 総額欄（取得対象）、My月額欄（設定対象）のIDを特定します
	var mykapmd_text_name = "";
	var sougaku_text_name = "";
	if( lrview_id == "L" ){
		// 左右表示－左
		mykapmd_text_name = "sf100b00004_01_myKapmd_L";
		sougaku_text_name = "sf100b00004_01_Ka_L";
	}else if( lrview_id == "R" ){
		// 左右表示－右
		mykapmd_text_name = "sf100b00004_01_myKapmd_R";
		sougaku_text_name = "sf100b00004_01_Ka_R";
	}else {
		// テキスト、画像
		mykapmd_text_name = "sf100b00002_01_myKapmd";
		sougaku_text_name = "sf100b00002_01_Ka";
	}	

	for( i = 0; i <= cnt_val; i++ ){
		if( document.getElementById(mykapmd_text_name + i) != null){

			// 総額取得
			var sougaku_val = "0";
			sougaku_val = document.getElementById(sougaku_text_name + i).innerHTML;
			var sougaku_obj = sfkapmd_divisionStr(sougaku_val);
			var mykapmdmin = "";
			var mykapmdmax = "";
			var mykapmd_val = "";
	
			if( sougaku_obj != null ){
				var soumin_val = eval(sougaku_obj.kapmdmin);
	
				if( loanw_val == "1" ){
					// 元利
					mykapmdmin = sfkapmd_calcKapmd_a(soumin_val, atama_val, kinri_val, bhiritsu_val, loany_val);
				}else {
					// 元金
					mykapmdmin = sfkapmd_calcKapmd_b(soumin_val, atama_val, kinri_val, bhiritsu_val, loany_val);
				}

				if( !isNaN(mykapmdmin) ){
					mykapmd_val += "" + mykapmdmin;
				}
		
				if( sougaku_obj.kapmdmax != "" ){
					var soumax_val = eval(sougaku_obj.kapmdmax);
					
					if( loanw_val == "1" ){
						// 元利
						mykapmdmax = sfkapmd_calcKapmd_a(soumax_val, atama_val, kinri_val, bhiritsu_val, loany_val);
					}else {
						// 元金
						mykapmdmax = sfkapmd_calcKapmd_b(soumax_val, atama_val, kinri_val, bhiritsu_val, loany_val);
					}
					
					if( !isNaN(mykapmdmax) ){
						if( mykapmd_val != "" ){
							mykapmd_val += sougaku_obj.kapmdparse + "" + mykapmdmax;
						}else {
							mykapmd_val = mykapmdmax;
						}
					}
				}
			}

			if( mykapmd_val == "" ){
				mykapmd_val = "－";
			}

			// My月額欄にセット
			document.getElementById(mykapmd_text_name + i).innerHTML = mykapmd_val;
		}
	}
}

/**
 * A.元利均等返済方法
 **/
function sfkapmd_calcKapmd_a(kakaku, atama, kinri, bhiritsu, loany)
{		
	// 価格から頭金を引く
	var kakaku_val = kakaku - atama;
	// 金利
	var kinri_val = kinri / 100;
	// ボーナス比率
	var bhiritsu_val = bhiritsu / 100;

	var bunbo = (kinri_val/12) * Math.pow(1 + (kinri_val/12), loany*12);
	var bunshi = Math.pow(1 + (kinri_val/12), loany*12) -1;
	var a = bunshi / bunbo;

	var bbunshi = bhiritsu_val * 6 * ( Math.pow(1 + (kinri_val/2), loany*2) -1 );
	var bbunbo = ( 1 - bhiritsu_val ) * ( (kinri_val/2) * Math.pow(1 + (kinri_val/2), loany*2) );
	var b = bbunshi / bbunbo;
	
	// 小数点第３位が四捨五入されたように見せる
	var round_val = Math.round( kakaku_val / (a + b) * 100);
	// 結果がマイナス(－)の場合は、0をセット
	if( round_val < 0 ){
		round_val = 0;
	}

	return round_val / 100;

//	// 毎月の返済額＝借入額×(利率÷12)÷{1－(1÷[{1＋(利率÷12)}＾返済月数])}
//	// 価格から頭金を引く
//	var kakaku_val = kakaku - atama;
//	// 金利
//	var kinri_val = kinri / 100;
//	// ボーナス比率
//	var bhiritsu_val = bhiritsu / 100;
//	// 月々支払い
//	var mbunshi = (kakaku_val*(1-bhiritsu_val)) * (kinri_val/12);
//	var mbunbo = 1 - (1 / Math.pow(1 + (kinri_val/12), loany*12));
//	var m = mbunshi / mbunbo;
//	// ボーナス
//	var bbunshi = (kakaku_val*bhiritsu_val) * (kinri_val/2);
//	var bbunbo = 1 - (1 / Math.pow(1 + (kinri_val/2), loany*2));
//	var b = bbunshi / bbunbo;	
//	// 小数点第３位が四捨五入されたように見せる
//	var round_val = Math.round( (m+b) * 100 );
//	// 結果がマイナス(－)の場合は、0をセット
//	if( round_val < 0 ){
//		round_val = 0;
//	}
//	return round_val / 100;
}

/**
 * B.元金均等返済方法（初回）
 **/
function sfkapmd_calcKapmd_b(kakaku, atama, kinri, bhiritsu, loany)
{
	// 価格から頭金を引く
	var kakaku_val = kakaku - atama;
	// ローン金利
	var kinri_val = kinri / 100;
	// ボーナス比率
	var bhiritsu_val = bhiritsu / 100;

	// 月々支払い
	var m1 = kakaku_val / (loany*12);
	var m2 = kakaku_val * (kinri_val/12);
	var m = m1 + m2;

	// ボーナス
	var b1 = (kakaku_val*bhiritsu_val) / (loany*2);
	var b2 = (kakaku_val*bhiritsu_val) * (kinri_val/2);
	var b = b1 + b2;

	// 合計
	var mykapmd_val = m - (m * bhiritsu_val) + b;
	
	// 小数点第３位が四捨五入されたように見せる
	var round_val = Math.round( mykapmd_val * 100 );
	// 結果がマイナス(－)の場合は、0をセット
	if( round_val < 0 ){
		round_val = 0;
	}
	return round_val / 100;
}

/**
 * 総額欄に表示されている文字列から数値部分を抽出します。
 **/
function sfkapmd_divisionStr(str)
{
	var kapmd_obj = null;
	if( str != "" && str != null ){
		kapmd_obj = new Object();

		var tstidx = str.indexOf("～");
		if( tstidx == -1 ){
			var tstidx2 = str.indexOf("・");
			if( tstidx2 == -1 ){
				kapmd_obj.kapmdmin = sfkapmd_replaceStr(str);
				kapmd_obj.kapmdmax = "";
				kapmd_obj.kapmdparse = "";
			}else {
				kapmd_obj.kapmdmin = sfkapmd_replaceStr(str.substr(0, tstidx2));
				kapmd_obj.kapmdmax = sfkapmd_replaceStr(str.substr(tstidx2 + 1, str.length));
				kapmd_obj.kapmdparse = "・";
			}
		}else {
			kapmd_obj.kapmdmin = sfkapmd_replaceStr(str.substr(0, tstidx));
			kapmd_obj.kapmdmax = sfkapmd_replaceStr(str.substr(tstidx + 1, str.length));
			kapmd_obj.kapmdparse = "～";
		}
	}
	return kapmd_obj;
}

/**
 * 単位変換
 **/
function sfkapmd_replaceStr(str)
{
	var dstr = str;
	dstr = dstr.replace(/台/g, "");
	dstr = dstr.replace(/予定/g, "");
	dstr = dstr.replace(/税込/g, "");
	dstr = dstr.replace(/\(.*\)/g, "");
	dstr = dstr.replace(/-/g, "");
	dstr = dstr.replace(/未定/g, "");

	var dstrtst = dstr;
    var xx = dstr.match(/(\d+)億(\d{4})/g);
    if( xx != null ){
    	dstrtst = RegExp.$1 + RegExp.$2;
	}else {	
	    xx = dstr.match(/(\d+)億(\d{1,3})/g);
	    if( xx != null ){
	    	var tt = RegExp.$2;
	    	while( tt.length < 4 )
	    	{
	    		tt = "0" + tt;
	    	}
	    	dstrtst = RegExp.$1 + tt;
		}else {	
		    xx = dstr.match(/(\d+)億(\d{0})/g);
		    if( xx != null ){
		    	dstrtst = RegExp.$1 + "0000";
			}
		}
	}
    dstr = dstrtst;
		// 万円
		dstr = dstr.replace(/万/g, "");
		dstr = dstr.replace(/円/g, "");
	return dstr;
}

/**
 * My月額支払い条件設定パネルを表示します。
 **/
function sfkapmd_setup(my, lrview_id)
{
	// パネルの名前、閉じるボタンの名前を特定します
	var close_name = "";
	var panel_name = "";
	if( lrview_id == "L" ){
		// 左右表示－左
		close_name = "KapmdPanel_L_close";
		panel_name = "KapmdPanel_L";
	}else if( lrview_id == "R" ){
		// 左右表示－右
		close_name = "KapmdPanel_R_close";
		panel_name = "KapmdPanel_R";
	}else {
		// テキスト、画像
		close_name = "KapmdPanel_close";
		panel_name = "KapmdPanel";
	}

	// 閉じる画像先読み促進
	var close_bt = document.getElementById(close_name);
	var pre_img = new Image();
	pre_img.src = close_bt.src;
	// Cookieに登録されている条件をパネルにセット
	sfkapmd_setValueFromCookie(lrview_id);
	// 表示
	open_popup(my, panel_name);
}

/**
 * My月額支払い条件設定パネルを閉じます。
 **/
function sfkapmd_closePopup(lrview_id)
{
	// パネルの名前を特定します
	var panel_name = "";
	if( lrview_id == "L" ){
		// 左右表示－左
		panel_name = "KapmdPanel_L";
	}else if( lrview_id == "R" ){
		// 左右表示－右
		panel_name = "KapmdPanel_R";
	}else {
		// テキスト、画像
		panel_name = "KapmdPanel";
	}

	// 入力された内容をCookieに登録する
	var ret = sfkapmd_setParamToCookie(lrview_id);
	if( ret != undefined ){
		return;
	}
	// 閉じる
	close_popup2(panel_name);
	// My月額を再計算
	sfkapmd_setKapmdFromList(lrview_id);
	if( lrview_id != "" ){
		// 左右表示にて設定が変更された際は、両列の再計算が行われるようにする
		if( lrview_id == "L" ){
			sfkapmd_setKapmdFromList("R");
		}else if( lrview_id == "R" ){
			sfkapmd_setKapmdFromList("L");
		}
	}
}

/**
 * Cookieに登録されている条件をパネルにセットします
 **/
function sfkapmd_setValueFromCookie(lrview_id)
{
	// Cookieに登録されている条件を取得
	var cookie_obj = sfkapmd_getParamFromCookie(lrview_id);
	if( cookie_obj == null ){
		return;
	}

	// 入力項目（テキストボックス、セレクトボックス）の名前を特定します
	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 = "";
	}

	var cookie_val = "";
	var form_obj = "";
	for( var i = 0; i < cookie_obj.length; i++ ){
		// 登録されている条件取得
		cookie_val = cookie_obj[i][1];
		// 値の埋め込み先を取得
		form_obj = document.getElementsByName(cookie_obj[i][0] + panel_element_id).item(0);
		// 両方のオブジェクトが取得できた場合に処理を行う
		if ( (cookie_val != undefined) && (form_obj != null) ) {
			// テキストボックス
			if( form_obj.id == ("atama" + panel_element_id) || form_obj.id == ("kinri" + panel_element_id) ){
				document.getElementById(form_obj.id).value = cookie_val;
			}
			// セレクトボックス
			if( form_obj.id == ("bhiritsu" + panel_element_id) || form_obj.id == ("loany" + panel_element_id) || form_obj.id == ("loanw" + panel_element_id) ){
				for( var j = 0; j < form_obj.length; j++ ){
					if( form_obj[j].value == cookie_val ){
						form_obj[j].selected = true;
					}
				}
			}
		}
	}
}

/**
 * Cookieに登録されている条件を取得します
 **/
function sfkapmd_getParamFromCookie(lrview_id)
{	
	// エラー発生時はクッキーから取得しない
	var err_val = document.getElementById("ErrorDisp01");
	if ( (err_val != null) && (err_val.firstChild.innerHTML != "") ) {
		return null;
	}
	
	var joken_val = sfkapmd_cookie_search_mykapmd;
		
	// クッキーから条件取得(cookieparam.js)
	var objCond = getSearchCondFromCookie( joken_val );
	var param_obj = new Array(sfkapmd_cookie_prm.length);
	var cookie_val = "";	
	for( var i = 0; i < sfkapmd_cookie_prm.length; i++ ){
		param_obj[i] = new Array(2);

		// 登録されている条件取得
		cookie_val = objCond[sfkapmd_cookie_prm[i]];
		param_obj[i][0] = sfkapmd_form_prm[i];
		param_obj[i][1] = cookie_val;
	}
	return param_obj;
}

/**
 * 入力された内容をCookieに登録します。
 **/
function sfkapmd_setParamToCookie(lrview_id)
{
	var cookie_val = "";

	// パネル、入力項目（テキストボックス、セレクトボックス）の名前を特定します
	var obj_val = "";
	var panel_element_id = "";
	if( lrview_id == "L" ){
		// 左右表示－左
		obj_val = document.getElementById("KapmdPanel_L");
		panel_element_id = "_L";
	}else if( lrview_id == "R" ){
		// 左右表示－右
		obj_val = document.getElementById("KapmdPanel_R");
		panel_element_id = "_R";
	}else {
		// テキスト、画像
		obj_val = document.getElementById("KapmdPanel");
		panel_element_id = "";
	}
	
	// クッキー条件名を取得
	var joken_val = sfkapmd_cookie_search_mykapmd;

	var atama_val = document.getElementById("atama" + panel_element_id);
	if ( (atama_val != null) && (atama_val.value != "") ) {
		if( checkNum(atama_val.value) == 1 ){
			alert("頭金は数値を入力してください。");
			return false;
		}else if( checkNum(atama_val.value) == 2 ){
			alert("頭金は0以上の数値を入力してください。");
			return false;
		}
		cookie_val += "MYKPA" + DELIMITA_PRM + escape(atama_val.value) + DELIMITA_VAL;
	}
	var kinri_val = document.getElementById("kinri" + panel_element_id);
	if ( (kinri_val != null) && (kinri_val.value != "") ) {
		cookie_val += "MYKPB" + DELIMITA_PRM + escape(kinri_val.value) + DELIMITA_VAL;
		if( checkNum(kinri_val.value) == 1 ){
			alert("ローン金利は数値を入力してください。");
			return false;
		}else if( checkNum(kinri_val.value) == 2 ){
			alert("ローン金利は0以上の数値を入力してください。");
			return false;
		}
	}
	var bhiritsu_val = document.getElementById("bhiritsu" + panel_element_id);
	if ( (bhiritsu_val != null) && (bhiritsu_val.value != "") ) {
		cookie_val += "MYKPC" + DELIMITA_PRM + escape(bhiritsu_val.value) + DELIMITA_VAL;
	}
	var loany_val = document.getElementById("loany" + panel_element_id);
	if ( (loany_val != null) && (loany_val.value != "") ) {
		cookie_val += "MYKPD" + DELIMITA_PRM + escape(loany_val.value) + DELIMITA_VAL;
	}
	var loanw_val = document.getElementById("loanw" + panel_element_id);
	if ( (loanw_val != null) && (loanw_val.value != "") ) {
		cookie_val += "MYKPE" + DELIMITA_PRM + escape(loanw_val.value) + 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;
}

/**
 * 条件設定パネルに入力された値の数値チェックを行います
 * 許容するもの：0～9、.(小数点)
 **/
function checkNum(value)
{
	if( isNaN(value) ){
		return 1;
	}else if( value < 0 ){
		return 2;
	}else if( value.replace(/[0-9]|[.]/g, "") != "" ){
		return 1;
	}
	return -1;
}
