var MAX_LOAN_VALUE = 100;
var MAX_LOAN_COUNT = 60;
var DEF_INTEREST = 0.292;
var	bLowLimitCheckEnable = 0;
var	m_SMonthDays = 30;

function EditCamma( SNumber )
{
	var strTemp = "";
	var STemp = "" + SNumber;
	var SCount = 0;
	
	for ( var SInc = STemp.length - 1; 0 <= SInc; SInc-- )
	{
		if ( SCount % 3 == 0 && SCount != 0 )
		{
			strTemp= "," + strTemp;
		}
		
		strTemp = STemp.charAt(SInc) + strTemp;
		SCount ++;
	}
	return strTemp;
}

function GetDispLoanInterest()
{
	return (DEF_INTEREST * 100);
}

function GetDispLoanMaxValue()
{
	return MAX_LOAN_VALUE;
}

var str_value_min = 0;
var str_value_max = 0;
var str_result = 0;

function CheckLoanValue( sLoan, sReturn )
{
	var loanCheck_value = 50000, loanCheck_result = 3000;
	var loanNext_value  = 50000, loanNext_result  = 2000;
	
	while ( loanCheck_value <= sLoan )
	{
		var loanCheck_value_low = (loanCheck_value - (loanNext_value - 10000));
//	alert( loanCheck_value_low + "<" + sLoan + "<" + loanCheck_value + "|" + sReturn + "<" + loanCheck_result );	// DEBUG
		if (
			( loanCheck_value_low < sLoan )
			&&
			( sLoan <= loanCheck_value )
			&&
			( sReturn < loanCheck_result )
		)
		{
			str_value_min = EditCamma( loanCheck_value_low );
			str_value_max = EditCamma( loanCheck_value );
			str_result = EditCamma( loanCheck_result );
			return false;
		}
		loanCheck_value  += loanNext_value;
		loanCheck_result += loanNext_result;
	}
	return true;
}

function Calc1( objForm )
{
	var	SLoan = 0;			// 貸付金額
	var	SNumber = 0;		// 返済回数
	var	SReturn = 0;		// 回数毎の返済金額
	var	dfMonthInterest;	// 月利率
	
	objForm.Result.value = "";
	
	if( "" == objForm.Loan.value )
	{
		alert( "ご融資金額を入力して下さい。" );
		objForm.Loan.select();
		return;
	}
	
	if ( "" == objForm.Number.value )
	{
		alert( "ご返済回数を入力して下さい。" );
		objForm.Number.select();
		return;
	}
	
	SLoan = parseInt(objForm.Loan.value) * 10000;	// 最低単位が1万円なので10000を掛ける。
//	dfMonthInterest = DEF_INTEREST / 365 * m_SMonthDays;
	dfMonthInterest = DEF_INTEREST / 12;
	SNumber = parseInt(objForm.Number.value);
	
	if ( ( SLoan < 1 ) || ( (MAX_LOAN_VALUE * 10000) < SLoan ) )
	{
		alert("ご利用金額の範囲は1万円〜" + MAX_LOAN_VALUE + "万円です");
		objForm.Loan.select();
		return;
	}
	
	if ( ( SNumber< 1 ) || ( MAX_LOAN_COUNT < SNumber ) )
	{
		alert( "ご返済回数は1〜" + MAX_LOAN_COUNT + "回までです" );
		objForm.Number.select();
		return;
	}
	
	if ( SNumber == 1 )
	{
//		SReturn = SLoan + (SLoan / 10000 * 8 * m_SMonthDays);
		SReturn = Math.floor( SLoan * dfMonthInterest * (Math.pow(1 + dfMonthInterest, SNumber) / (Math.pow(1 + dfMonthInterest, SNumber) - 1)) );
	}
	else
	{
		SReturn = Math.floor( SLoan * dfMonthInterest * (Math.pow(1 + dfMonthInterest, SNumber) / (Math.pow(1 + dfMonthInterest, SNumber) - 1)) );
		
		if ( bLowLimitCheckEnable )
		{
			if ( !CheckLoanValue( SLoan, SReturn ) )
			{
				alert(
					"ご利用金額が" + str_value_min + "円以上" + str_value_max + "円以下の場合は、\n" +
					"最低返済金額は" + str_result + "円以上に設定しており、\n" +
					"ご希望の返済回数ではご利用出来ない可能性があります。\n" +
					"返済回数を変更してください。"
				);
				objForm.Number.select();
				return;
			}
		}
	}
	
	objForm.Result.value = EditCamma( SReturn );
}

function Calc2( objForm )
{
	var	SLoan;			// ご利用金額
	var	SDayInterest;	// 日利率
	var	SReturn;		// 返済金額
	var	SCount;			// 返済回数
	var	STemp;			// テンポラリ
	var	SUemp;			// 同上
	var	SInc;				// インクリメント
	
	objForm.Result1.value = "";
	objForm.Result2.value = "";
	
	if ( "" == objForm.Loan.value )
	{
		alert( "[ご希望融資額]を入力して下さい。" );
		objForm.Loan.select();
		return;
	}
	
	if ( "" == objForm.Return.value )
	{
		alert( "[毎月のご返済額]を入力して下さい。" );
		objForm.Return.select();
		return;
	}
	
	SLoan   = parseInt( objForm.Loan.value ) * 10000;
	SReturn = parseInt( objForm.Return.value ) * 1000;
	
	if ( SLoan < 10000 || (MAX_LOAN_VALUE * 10000) < SLoan )
	{
		alert("ご利用金額の範囲は1万円〜" + MAX_LOAN_VALUE + "万円です");
		objForm.Result1.value = "";
		objForm.Result2.value = "";
		return;
	}
	
	if ( bLowLimitCheckEnable )
	{
		if ( !CheckLoanValue( SLoan, SReturn ) )
		{
			alert(
				"ご利用金額が" + str_value_min + "円以上" + str_value_max + "円以下の場合は、\n" +
				"最低返済金額が" + str_result + "円以上になりますので、\n" +
					"ご希望の返済回数ではご利用出来ない可能性があります。\n" +
					"返済回数を変更してください。"
			);
			objForm.Return.select();
			return;
		}
	}
	
	STemp = SLoan;
	SCount = 0;
	while ( 0 < STemp )
	{
		SDayInterest = parseInt( ((STemp * DEF_INTEREST) / 365) * m_SMonthDays );
//		alert( "STemp:" + STemp + "\n" + "SDayInterest:" + SDayInterest );
		if ( SReturn < SDayInterest )
		{
			alert(
				"ご希望のご返済額では、ご返済回数が" + MAX_LOAN_COUNT + "回を越えてしまい、ご利用出来ない可能性があります。\n" +
				"毎月のご返済額を変更して下さい。"
			);
			objForm.Return.select();
			return;
		}
		else if ( (SDayInterest + STemp) < SReturn )
		{
			SReturn = SDayInterest + STemp;
		}
		
		SUemp = SReturn - SDayInterest;
		STemp = STemp - SUemp;
		SCount++;
	}
	
	if ( MAX_LOAN_COUNT < SCount )
	{
		alert(
			"ご希望のご返済額では、ご返済回数が" + MAX_LOAN_COUNT + "回を越えてしまい、ご利用出来ない可能性があります。\n" +
			"毎月のご返済額を変更して下さい。"
		);
		objForm.Return.select();
		return;
	}
	
	objForm.Result1.value = SCount;
	objForm.Result2.value = EditCamma( SReturn );
}
