function payMonth(kariire, kinri, kikan, bonus)
{
	kinriMonth = kinri / 100 / 12;
	bonusRate = bonus / kariire;
	
	if (kinri == 0)
	{
		answer = (Math.pow(1, kikan) * (1 - bonusRate) * kinriMonth) / (Math.pow(1, kikan) - 1) * kariire;
	}
	else
	{
		answer = (Math.pow(1 + kinriMonth, kikan) * (1 - bonusRate) * kinriMonth) / (Math.pow(1 + kinriMonth, kikan) - 1) * kariire;
	}

 	return answer;
}

function payBonus(kariire, kinri, kikan, bonus)
{
	bonusRate = bonus / kariire;
	kinriBonus = kinri / 100 / 2;

	answer = Math.pow(1 + kinriBonus, kikan - 1) * bonusRate * kinriBonus * (1 + kinriBonus * 6 / 6) / (Math.pow(1 + kinriBonus, kikan) - 1) * kariire;

	return answer;
}

function remainBonus(payAllBonus, kinri, payBonusNum, payBonus)
{
	kinri = kinri / 100 / 2;
	answer = Math.pow(1 + kinri, payBonusNum) * payAllBonus;
	
	for (i = 1; i < (payBonusNum + 1); i++)
	{
		answer = answer - (Math.pow(1 + kinri, i - 1) * payBonus);
	}

	if (answer < 0)
	{
		answer = 0;
	}

	return answer;
}

function remainMonth(payAllMonth, kinri, payMonthNum, payMonth)
{
	kinri = kinri / 100 / 12;
	answer = Math.pow(1 + rate, payMonthNum) * payAllMonth;

	for (i = 1; i < (payMonthNum + 1); i++)
	{
		answer = answer - (Math.pow(1 + kinri, i - 1) * payMonth);
	}

	if (answer < 0)
	{
		answer = 0;
	}

	return answer;
}

function monthTotal(kingaku, kinri, kikan)
{
	kinri = kinri / 100 / 12;
	answer = (Math.pow(1 + kinri, kikan) - 1) / (Math.pow(1 + kinri, kikan) * kinri) * kingaku;

	return answer;
}

function bonusTotal(kingaku, kinri, kikan)
{
	kinri = kinri / 100 / 2;
	answer = (Math.pow(1 + kinri, kikan) - 1) / (Math.pow(1 + kinri, kikan) * kinri) * kingaku;

	return answer;
}

function addComma(string)
{
	var s = "" + string;
	var r = "";
	var c = "";

	p = s.indexOf(".");
	if (p < 0)
	{
		p = s.length;
	}

	r = s.substring(p, s.length);
	for (i = 0; i < p; i++) 
	{
		c = s.substring(p - i - 1, p - i);

		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 calcLoan()
{
	kariire = document.LoanForm.kariire.value;
	atamakin = document.LoanForm.atamakin.value;
	bonus = document.LoanForm.bonus.value;
	kinri= document.LoanForm.kinri.value;
	nensuu= document.LoanForm.nensuu.value;

	if (kariire.match(/[^0-9]/g) ||
		atamakin.match(/[^0-9]/g) ||
		bonus.match(/[^0-9]/g) ||
		kinri.match(/[^0-9\.]/g) ||
		nensuu.match(/[^0-9]/g) ||
		kinri == "" || kinri == "0" ||
		nensuu == "")
	{
		document.getElementById("hensai").innerHTML = "";
		return;
	}

	if (atamakin >= price)
	{
		document.getElementById("hensai").innerHTML = "0";
		return;
	}

	if (bonus > (price - atamakin))
	{
		document.getElementById("hensai").innerHTML = "0";
		return;
	}

	kariire = kariire - atamakin;
	paymonth = payMonth(kariire * 10000, kinri, nensuu * 12, bonus * 10000);
	paymonth = Math.round(paymonth);
	paybonus = payBonus(kariire * 10000, kinri, nensuu * 2, bonus * 10000);
	paybonus = Math.round(paybonus);
	document.getElementById("hensai").innerHTML = addComma(paymonth);
}

