
var tab1 = {

	/**
	 * 設定
	 */
	config : {
		rateConfigUrl  : "rate_conf.xml",
		calcImage      : "img/btn_calculate.gif",
		calcImageOn    : "img/btn_calculate_on.gif",
		calcImageOver  : "img/btn_calculate_ovr.gif",
		moreImage      : "img/btn_moredetails.gif",
		moreImageOn    : "img/btn_moredetails_on.gif",
		moreImageOver  : "img/btn_moredetails_ovr.gif",
		detailurl      : "loan/index.html"
	},

	/**
	 * 初期化
	 */
	init : function() {

		msjCommon.loadXml(tab1.config.rateConfigUrl);

		$("#borrowings").keydown(tab1.onBorrowingsKeyDown);
		$("#borrowings").keyup(tab1.onBorrowingsKeyUp);
		$("#period").keyup(tab1.checkPeriod);
		$("#period").change(tab1.checkPeriod);

		$("#calc").mouseover(tab1.onCalcOver);
		$("#calc").mouseout(tab1.onCalcOut);
		$("#calc").click(tab1.calcMonthlypayment);

		$("#more").mouseover(tab1.onMoreOver);
		$("#more").mouseout(tab1.onMoreOut);
		$("#more").click(tab1.goDetail);

		// 省エネルギー対応
		$("[name=eco]").click(tab1.checkEco);

		// 被災地対応
		if ( msjCommon.config.isStrickenAreaCorrespondence ) {
			$("[name=area]").click(tab1.checkArea);
			$("button[name=checkStrikenAreaAddress]").click(msjCommon.onClickCheckStrikenAreaAddressButton);
		} else {
			$("tr.strickenArea").css("display","none");
			$("input[name=eco]").parent().parent().attr("align","right");
		}

		tab1.checkValue();

	},

	checkValue : function() {
		tab1.checkBorrowings();
		tab1.checkPeriod();
		tab1.checkEco();
		tab1.checkArea();
		tab1.calcMonthlypayment();
	},

	isAllow : function() {

		var allow = false;

		// 被災地対応あり
		if ( msjCommon.config.isStrickenAreaCorrespondence ) {
			if ( tab1.borrowingsFlg && tab1.periodFlg && tab1.ecoFlg && tab1.areaFlg ) allow = true;

		// 被災地対応なし
		} else {
			if ( tab1.borrowingsFlg && tab1.periodFlg && tab1.ecoFlg ) allow = true;
		}

		return allow;

	},

	/**
	 * 返済額覧をクリアする
	 */
	clearMonthlypayment : function() {
		$("#monthlypayment").val("");
	},

	/**
	 * 入力値によって
	 * 「計算する」ボタンと「もっと詳しく知りたい方はこちら」ボタンをトグルさせる
	 */
	toggleButton : function() {

		if ( tab1.isAllow() ) {
			$("#calc").attr("src",tab1.config.calcImageOn);
			$("#calc").css("cursor","pointer");
			$("#more").attr("src",tab1.config.moreImageOn);
			$("#more").css("cursor","pointer");
		} else {
			$("#calc").attr("src",tab1.config.calcImage);
			$("#calc").css("cursor","");
			$("#more").attr("src",tab1.config.moreImage);
			$("#more").css("cursor","");
		}

	},

	/**
	 * 借入希望金額覧でキーが押された
	 */
	onBorrowingsKeyDown : function(e) {
		var n = msjCommon.onKeyDown(e,4);
		switch (n) {
			case -1:
				return false;
			case 0:
				return true;
			case 1:
				tab1.clearMonthlypayment();
				return false;
		}
	},

	/**
	 * 借入希望金額覧でキーが離された
	 */
	onBorrowingsKeyUp : function(e) {
		var n = msjCommon.onKeyUp(e);
		switch (n) {
			case 1:
				tab1.checkBorrowings(e);
				tab1.toggleButton();
		}
		return true;
	},

	/**
	 * 借入希望金額チェック
	 */
	checkBorrowings : function(e) {
		var borrowings = $("input[name=borrowings]").val().replace(/[^0-9]/,"");
		if ( !borrowings || borrowings == "" || borrowings.match(/[^0-9]/) || parseInt(borrowings) < 100 || 8000 < parseInt(borrowings) ) {
			tab1.borrowingsFlg = false;
			$("#borrowingsCheck").css("visibility","hidden");
		} else {
			tab1.borrowingsFlg = true;
			$("#borrowingsCheck").css("visibility","visible");
		}
		tab1.borrowings = borrowings;
	},

	/**
	 * 借入期間チェック
	 */
	checkPeriod : function(e) {
		var period = $("select[name=period]").val();
		if ( !period || period == "" ) {
			tab1.periodFlg = false;
			$("#periodCheck").css("visibility","hidden");
		} else {
			tab1.periodFlg = true;
			$("#periodCheck").css("visibility","visible");
		}
		tab1.period = period;
		tab1.clearMonthlypayment();
		tab1.setInterest(tab1.period,tab1.eco,tab1.area);
		tab1.toggleButton();
	},

	/**
	 * 省エネルギー性チェック
	 */
	checkEco : function(e) {
		var eco = $("input[name=eco]:checked").val();
		if ( !eco || eco == "" ) {
			tab1.ecoFlg = false;
			$("#ecoCheck").css("visibility","hidden");
		} else {
			tab1.ecoFlg = true;
			$("#ecoCheck").css("visibility","visible");
		}
		tab1.eco = eco;
		tab1.clearMonthlypayment();
		tab1.setInterest(tab1.period,tab1.eco,tab1.area);
		tab1.toggleButton();
	},

	/**
	 * 物件住所チェック
	 */
	checkArea : function(e) {
		var area = $("input[name=area]:checked").val();
		if ( !area || area == "" ) {
			tab1.areaFlg = false;
			$("#areaCheck").css("visibility","hidden");
		} else {
			tab1.areaFlg = true;
			$("#areaCheck").css("visibility","visible");
		}
		tab1.area = area;
		tab1.clearMonthlypayment();
		tab1.setInterest(tab1.period,tab1.eco,tab1.area);
		tab1.toggleButton();
	},

	/**
	 * 金利設定
	 */
	setInterest : function(period,eco,area) {

		var interest = tab1.getInterest(period,eco,area);
		tab1.interest = interest;

		var intereststr = "";
		if ( interest == 0 ) {
			intereststr = "";
			$("#interestCheck").css("visibility","hidden");
		} else {
			intereststr = interest + "0";
			intereststr = intereststr.substr(0,5);
			$("#interestCheck").css("visibility","visible");
		}

		$("#interest").val(intereststr);

	},

	/**
	 * 金利を求める
	 * @param period 返済期間
	 * @param area 被災地であるかどうか
	 * @returns interest 金利
	 */
	getInterest : function(period, eco, area) {

		var interest = 0;

		// 被災地対応でない場合は "no" を設定
		if ( !msjCommon.config.isStrickenAreaCorrespondence ) {
			if ( !area || area == "" ) area = "no";
		}

		if ( !period || period=="" || !eco || eco=="" || !area || area=="" ) {
			return interest;
		}

		// 省エネルギー性該当
		if ( eco == "yes" ) {

			// 被災地の場合
			if ( area == "yes" ) {
				if ( parseInt(period) < 21 ) {
					interest = (parseInt(rate20under) - msjCommon.config.preferentialRateEcoInA) / 1000;
				} else if ( 21 <= parseInt(period) ) {
					interest = (parseInt(rate21over)  - msjCommon.config.preferentialRateEcoInA) / 1000;
				}

			// 被災地外の場合
			} else if ( area == "no" ) {
				if ( parseInt(period) < 21 ) {
					interest = (parseInt(rate20under) - msjCommon.config.preferentialRateEcoOutA) / 1000;
				} else if ( 21 <= parseInt(period) ) {
					interest = (parseInt(rate21over)  - msjCommon.config.preferentialRateEcoOutA) / 1000;
				}
			}

		// 省エネルギー性非該当
		} else {

			// 被災地の場合
			if ( area == "yes" ) {
				if ( parseInt(period) < 21 ) {
					interest = (parseInt(rate20under) - msjCommon.config.preferentialRateBasicInA) / 1000;
				} else if ( 21 <= parseInt(period) ) {
					interest = (parseInt(rate21over)  - msjCommon.config.preferentialRateBasicInA) / 1000;
				}

			// 被災地外の場合
			} else if ( area == "no" ) {
				if ( parseInt(period) < 21 ) {
					interest = (parseInt(rate20under) - msjCommon.config.preferentialRateBasicOutA) / 1000;
				} else if ( 21 <= parseInt(period) ) {
					interest = (parseInt(rate21over)  - msjCommon.config.preferentialRateBasicOutA) / 1000;
				}
			}
		}

		return interest;

	},

	/**
	 * 「計算する」ボタンにマウスが乗った場合の動作
	 */
	onCalcOver : function() {
		if ( tab1.isAllow() ) {
			$("#calc").attr("src",tab1.config.calcImageOver);
		}
	},

	/**
	 * 「計算する」ボタンからマウスが出た場合の動作
	 */
	onCalcOut : function() {
		if ( tab1.isAllow() ) {
			$("#calc").attr("src",tab1.config.calcImageOn);
		}
	},

	/**
	 * 返済額計算（結果は四捨五入して表示）
	 * 借入額  ：tab1.borrowings
	 * 金利    ：tab1.rate
	 * 返済期間：tab1.period
	 */
	calcMonthlypayment : function() {

		if ( tab1.isAllow() ) {
			var borrowings = parseInt(tab1.borrowings) * 10000;
			var period     = parseInt(tab1.period);
			var interest   = tab1.interest;

			var pay1 = msjCommon.calcPayment(borrowings,interest,period);
			var payment = Math.round(pay1/1000)/10;

			$("#monthlypayment").val(payment);
		}

	},

	/**
	 * 「もっと詳しく知りたい方はこちら」ボタンにマウスが乗った場合の動作
	 */
	onMoreOver : function() {
		if ( tab1.isAllow() ) {
			$("#more").attr("src",tab1.config.moreImageOver);
		}
	},

	/**
	 * 「もっと詳しく知りたい方はこちら」ボタンからマウスが出た場合の動作
	 */
	onMoreOut : function() {
		if ( tab1.isAllow() ) {
			$("#more").attr("src",tab1.config.moreImageOn);
		}
	},

	/**
	 * 「もっと詳しく知りたい方はこちら」ボタンをクリックした際の動作
	 */
	goDetail : function(e) {
		var url = tab1.config.detailurl;
		if ( tab1.isAllow() ) {
			url += "?params";
			url += "=" + tab1.borrowings;
			url += "," + tab1.period;
			url += "," + tab1.eco;
			if ( msjCommon.config.isStrickenAreaCorrespondence ) {
				url += "," + tab1.area;
			}
			window.location.href = url;
		}
	}

};

$(window).bind("load", tab1.init);

