//################################################################################
// 月々の返済額の計算
//################################################################################

function loan_payMonth(valKariire, valRate, valYears, valBonus){
	var valRateMonth = valRate / 100 / 12;
	var valTerm = valYears;
	var valBonusRate = valBonus / valKariire;
	var valReturn = (Math.pow((1 + valRateMonth), valTerm) *  (1 - valBonusRate) * valRateMonth) /  (Math.pow((1 + valRateMonth), valTerm) - 1) * valKariire;
	return valReturn;
}

//################################################################################
// ボーナス月の返済額の計算
//################################################################################
function loan_payBonus(valKariire, valRate, valYears, valBonus) {
	var valBonusRate = valBonus / valKariire;
	var val_kinriBonus = valRate / 100 / 2;
	var valTerm = valYears;
	var valReturn = Math.pow((1 + val_kinriBonus), (valTerm - 1)) * valBonusRate * val_kinriBonus * (1 + val_kinriBonus * 6/6) / (Math.pow((1 + val_kinriBonus), valTerm) - 1) * valKariire;
	return valReturn;
}


//################################################################################
// ボーナス月の返済額の端数
//################################################################################
function loan_remainBonus(valPayAllBonus, valRate, valYears, val_payBonusNum, val_payBonus){
	valRate = valRate / 100 / 2;
	var valPayBonusRemain = Math.pow((1 + valRate), val_payBonusNum) * valPayAllBonus;
	for(i = 1; i < (val_payBonusNum + 1); i++) {
		valPayBonusRemain = valPayBonusRemain - (Math.pow((1 + valRate), (i - 1)) * val_payBonus);
	}
	if (valPayBonusRemain < 0){
		valPayBonusRemain = 0;
	}
	return valPayBonusRemain;
}

//################################################################################
// 月々の返済額の端数
//################################################################################
function loan_remainMonth(valPayAllMonth, valRate, valYears, val_payMonthNum, val_payMonth){
	var valPayMonthRemain;
	valRate = valRate / 100 / 12;
	valPayMonthRemain = Math.pow((1 + valRate), val_payMonthNum) * valPayAllMonth;
	for(i = 1; i < (val_payMonthNum + 1); i++){
		valPayMonthRemain = valPayMonthRemain - (Math.pow((1 + valRate), (i - 1)) * val_payMonth);
	}
	if (valPayMonthRemain < 0){
		valPayMonthRemain = 0;
	}
	return valPayMonthRemain;
}

//################################################################################
// 月々の返済額から借入額を算出
//################################################################################
function loan_monthAll(valPayPerMonth, valRate, valTerm){
	var valRateMonth = valRate / 100 / 12;
	var valMonthAll = (Math.pow((1 + valRateMonth), valTerm) - 1) / (Math.pow((1 + valRateMonth), valTerm) * valRateMonth) * valPayPerMonth;
	return valMonthAll;
}

//################################################################################
// ボーナスの返済額から借入額を算出
//################################################################################
function loan_bonusAll(valPayPerBonus, valRate, valTerm){
	var valRateBonus = valRate / 100 / 2;
	var valBonusAll = (Math.pow((1 + valRateBonus), valTerm) - 1) / (Math.pow((1 + valRateBonus), valTerm) * valRateBonus) * valPayPerBonus;
	return valBonusAll;
}

//################################################################################
// 結果をHTMLに書き出す
//################################################################################
function loan_OutputResult(strId,valResult) {
	document.getElementById(strId).innerHTML = valResult;
}


//################################################################################
// 数字にカンマをつけ、桁を揃える
//################################################################################
function numberFormat(valNum,valKeta) {
	//var s = ""+valNum;
	var s = keta(valNum,valKeta);
	var r = "";
	var c = "";
	p = s.indexOf(".");
	if (p < 0) p = s.length;
	r = s.substring(p, s.length);
	for (var i = 0; i < p; i++) {
		c = s.substring(p - 1 - i, p - 1 - i + 1);
		if (c < "0" || c > "9") {
			r = s.substring(0, p - i) + r;
			break;
		}
		if (i > 0 && i % 3 == 0) {
			r = "," + r;
		}
		r = c + r;
	}
	return r;
}


//################################################################################
// 桁を揃える
//################################################################################
function keta(valNum, valKeta) {
	var strFloorval;
	var i;
	strFloorval = ""+(Math.floor(valNum * Math.pow(10, valKeta)) / Math.pow(10,valKeta));
	if(strFloorval.indexOf(".", 0) != -1) {
		if(((strFloorval.length - 1)- strFloorval.indexOf(".", 0)) != valKeta) {
			for(i = 0;(strFloorval.length - 1) - strFloorval.indexOf(".", 0) < valKeta; i++) strFloorval = strFloorval + "0";
		}
	} else if ( valKeta > 0 ) {
		strFloorval = strFloorval + ".";
		for(i = 0;i < valKeta; i++) strFloorval = strFloorval + "0";
	}
	return strFloorval;
}


//################################################################################
// 結果を表示
//################################################################################
var objResultTween;

function loan_showResultTable() {
	var objResultTable = document.getElementById("resultTable");
	objResultTable.style.display = "block";
	var valScrollTo = YAHOO.util.Dom.getY(objResultTable);
	valResultTableHeight = objResultTable.offsetHeight-10;
	objResultTween = new YAHOO.util.Anim('resultTable', {height:{from:0,to:valResultTableHeight}}, 0.5, YAHOO.util.Easing.easeOut);
	objResultTween.onTween.subscribe(function(){
		window.scrollTo(0,valScrollTo);
	});
	objResultTween.animate();
}

