//変数宣言
var myForm;
//フォーム入力の情報の変数
var fKariirekin, fShohin, fRiritsu, fNensu, fRiritsu2, fKikanY, fKikanM, fBonus;
var  gKariirekin;//お借入金額
var  gBonus;//ボーナス金額
var  gHensaikaisuB;//ボーナス返済回数
var  gHensaigakuBu;//内ボーナス分
var  gHensaikaisu;//返済回数
var  gHensaigakuM;//毎月返済額
var  gHensaigakuB;//ボーナス時返済額
var  gRiritsu;//利率
var  gHensaigakuY;//年間ご返済額
var  gLoan;//商品

//○年目以降
var  gRiritsu2;//利率
var  gHensaigakuM2;//毎月返済額
var  gHensaikaisu2B//ボーナス返済回数
var  gHensaigaku2Bu;//内ボーナス分
var  gHensaigaku2Y;//年間ご返済額


//★返済予定表
var  gZandaka1;//月返済後残高
var  gZandaka2;//○年目以降ご返済額月返済後残高
var  gRisoku;//利息
var  gNensu;//○年目以降を月変換
var  gBkaisu;//ボーナス返済後残算出用
var fShohin ;//商品


function Calculation(f){
	delResult();//結果表示削除
	//フォーム入力の情報取得
//	fKariirekin = eval(f.kariirekin.value);//お借入金額
	fKariirekin = delComma1(f.kariirekin.value);//お借入金額
	fKariirekin = eval(fKariirekin);
	fShohin = ShohinSet(document.form1);//商品
	fRiritsu = eval(f.riritsu.value);//利率
	
	Z = f.nensu.value//利率　○年目以降
	if (Z =="−"){
		Z = 0;
	}
	fNensu =  eval(Z);
	Z = f.riritsu2.value
	if (Z =="−"){
		Z = 0;
	}
	fRiritsu2 =  eval(Z);

	fKikanY = eval(f.kikanY.value);//返済期間　年
	fKikanM = f.kikanM.options[f.kikanM.selectedIndex].value;//返済期間　月
	fKikanM = eval(fKikanM);
	fBonus = f.bonus.options[f.bonus.selectedIndex].value;//ボーナス割合
	fBonus = eval(fBonus);

//□入力項目チェック
	if  ((fKariirekin==null) ||(fKariirekin=="")||(fKariirekin==0)) {
		alert("お借入金額が入力されていません。");
		return;
	}
	if  ((fShohin==null) ||(fShohin=="")||(fShohin==0)) {
		alert("商品が選択されていません。");
		return;
	}
	if  ((fRiritsu==null) ||(fRiritsu=="")||(fRiritsu==0)) {
		alert("利率が入力されていません。");
		return;
	}
	if  ((fKikanY==null)||(fKikanY=="")) {
		fKikanY = 0;
	}
	if  ((fRiritsu==null)||(fRiritsu=="")) {
		fRiritsu = 0;
	}
	if  ((fRiritsu2==null)||(fRiritsu2=="")) {
		fRiritsu2 = 0;
	}
	//商品エラーチェック
	Y = fKikanY * 12 + fKikanM;
	if ((gLoan == "jloan05")||(gLoan == "jloan10")||(gLoan == "jloan")){
		if (fKariirekin > 50000000){
			alert("ご融資額は5,000万円以内です。");
			return;
		}
		
		if (Y > 420){
			alert("融資期間は35年以内です。");
			return;
		}
	}
	if ((gLoan == "aloan05")||(gLoan == "aloan")){
		if (fKariirekin > 300000000){
			alert("ご融資額は3億円以内です。");
			return;
		}
		if (Y > 300){
			alert("融資期間は25年以内です。");
			return;
		}
		if (fBonus != 0){
			alert("ボーナス返済の利用は出来ません。");
			return;
		}
	}


//計算

	gHensaikaisu = CalHensaikikan();//返済回数
	if  (gHensaikaisu<=0) {
		alert("返済期間が入力されていません。");
		return;
	}
	gKariirekin = CalKariirekin();//お借入金額
	gBonus = CalBonus();//ボーナス金額
	gRiritsu = CalRiritsu(fRiritsu);//利率
	gHensaikaisuB = CalHensaikaisuB();//ボーナス返済回数
	gRiritsu2 = CalRiritsu(fRiritsu2);//○年目以降利率
	gHensaigakuM = CalHensaigakuM(gKariirekin,gRiritsu,gHensaikaisu);//■毎月返済額
	gHensaigakuBu = CalHensaigakuBu();//■（うちボーナス分）
	gHensaigakuB = CalHensaigakuB(gHensaigakuM,gHensaigakuBu);//■ボーナス時返済額
	gHensaigakuY = CalHensaigakuY();//■年間ご返済額
//○年目以降
	if (fNensu == 6){
		gNensu = 60;
	}
	else if(fNensu == 11){
		gNensu = 120;
	}
	else {
		gNensu = 0;
	}
	gZandaka1 = CalHyouM(gNensu);//月返済額
	gHensaikaisu2 = CalHensaikaisu2();//固定金利期間終了後の返済回数
	zandaka = gZandaka1 + gBonus//残高調整
	gHensaigakuM2 = CalHensaigakuM(zandaka,gRiritsu2,gHensaikaisu2);//■毎月返済額
	gHensaikaisu2B = CalHensaikaisu2B();//固定金利期間終了後のボーナス返済回数
	//ボーナス返済後残算出用
	if (fNensu == 6){
		gBkaisu = 10;
	}
	else if(fNensu == 11){
		gBkaisu = 20;
	}
	gZandaka2 = CalHyouB(gBkaisu);//ボーナス返済後残高
	gHensaigaku2Bu = CalHensaigaku2Bu();//■（うちボーナス分）
	gHensaigaku2B = CalHensaigakuB(gHensaigakuM2,gHensaigaku2Bu);//■ボーナス時返済額
	gHensaigaku2Y = CalHensaigaku2Y();//■年間ご返済額
	gHensaigakuA = CalHensaigakuA();//■総ご返済額



//結果表示
//		f.kariirekin.value=insertComma1(f.kariirekin.value);
		f.hensai_m.value = gHensaigakuM;//毎月返済額
		f.hensai_m.value=insertComma1(f.hensai_m.value);
		f.hensai_b.value = gHensaigakuB;//（ボーナス時返済額）
		f.hensai_b.value=insertComma1(f.hensai_b.value);
		f.bonus1.value = gHensaigakuBu;//（うちボーナス分）
		f.bonus1.value=insertComma1(f.bonus1.value);
		f.hensai_y.value = gHensaigakuY;//年間ご返済額
		f.hensai_y.value=insertComma1(f.hensai_y.value);

	if (fShohin != 12) {
		if  ((fRiritsu2==null) ||(fRiritsu2=="")||(fRiritsu2==0)) {
			alert(fNensu + "年目以降の利率が入力されていません。");
			return;
		}
	//○年目以降の結果表示	
		f.hensai_a.value = fNensu;//○年目以降ご返済額
		f.hensai2_m.value = gHensaigakuM2;//毎月返済額
		f.hensai2_m.value=insertComma1(f.hensai2_m.value);
		f.bonus2.value = gHensaigaku2Bu;//（うちボーナス分）
		f.bonus2.value=insertComma1(f.bonus2.value);
		f.hensai2_b.value = gHensaigaku2B;//（ボーナス時返済額）
		f.hensai2_b.value=insertComma1(f.hensai2_b.value);
		f.hensai2_y.value = gHensaigaku2Y;//年間ご返済額
		f.hensai2_y.value=insertComma1(f.hensai2_y.value);
	}
	f.sohensai.value = gHensaigakuA;//総ご返済額
	f.sohensai.value=insertComma1(f.sohensai.value);

}


//■総ご返済額
function CalHensaigakuA(){
	result = ((gHensaikaisu - gHensaikaisu2)*gHensaigakuM) + (gHensaikaisuB - gHensaikaisu2B) * gHensaigakuBu + (gHensaikaisu2 * gHensaigakuM2) + (gHensaikaisu2B * gHensaigaku2Bu);
	return result;
}

//■年間ご返済額
function CalHensaigakuY(){
	if (gHensaikaisu == 0){
		result = 0;
	}
	else if (gHensaikaisu >= 12){
		result = gHensaigakuM*12 + gHensaigakuBu*2;
	}
	else if (0 < gHensaikaisu && gHensaikaisu < 6){
		result = gHensaigakuM*gHensaikaisu ;
	}
	else if (6 <= gHensaikaisu && gHensaikaisu < 12){
		result = gHensaigakuM*gHensaikaisu + gHensaigakuBu;
	}
	result=Math.floor(result);//小数点以下切り捨て
	return result;
}

//■利率変更後の年間ご返済額
function CalHensaigaku2Y(){
//	alert("回数=" + gHensaikaisu2);
	if (gHensaikaisu2 == 0){
		result = 0;
	}
	else if (gHensaikaisu2 >= 12){
		result = gHensaigakuM2*12 + gHensaigaku2Bu*2;
	}
	else if (0 < gHensaikaisu2 && gHensaikaisu2 < 6){
		result = gHensaigakuM2*gHensaikaisu2 ;
	}
	else if (6 <= gHensaikaisu2 && gHensaikaisu2 < 12){
		result = gHensaigakuM2*gHensaikaisu2 + gHensaigaku2Bu;
	}
	result=Math.floor(result);//小数点以下切り捨て

	return result;
}



//■毎月返済額
function CalHensaigakuM(x,y,z){
	if (z == 0) {
		result= 0;
	}
	else {
		aa = (x - gBonus);
		ab = (1 + y * 1 / 12);
		ac = CalBeki(ab,z);
		ad = (y*1/12);
		a = aa*ac*ad
		ba = (1+y*1/12);
		bb =  CalBeki(ba,z);
		b= bb-1;
		result = a/b;
	}
	result=Math.floor(result);//小数点以下切り捨て
//	alert("毎月返済額=" + result);
	return result;
}

//■ボーナス時返済額
function CalHensaigakuB(x,y){
	result = x+y;
	result=Math.floor(result);//小数点以下切り捨て
//ボーナス返済有り無し
	if (gHensaikaisu < 6){
		result = 0;
	}
	return result;
//	alert("ボーナス時返済額=" + gHensaigakuB);
}

//■（うちボーナス分）
function CalHensaigakuBu(){
	if (fBonus == 0) {
		result = 0;
//	alert("ボーナス分=" + gHensaigakuBu);
	}
	else {
		aa = gBonus*gRiritsu*6/12;
		ab = 1+gRiritsu*6/12;
		ac = CalBeki(ab,gHensaikaisuB);
		ad = aa*ac;
		ba = 1+gRiritsu*6/12;
		bb = CalBeki(ba,gHensaikaisuB);
		bc = bb-1;
		result = ad/bc;
		
	}
	
//ボーナス返済有り無し
	if (gHensaikaisu < 6){
		result = 0;
	}
	result=Math.floor(result);//小数点以下切り捨て
	return result;
//	alert("（うちボーナス分）=" + gHensaigakuBu);
}

//★返済予定表（月返済後残高）
function CalHyouM(x){
	zandaka = gKariirekin-gBonus;

	for (var i = 0; i < x; i++ ) {
	//利息計算
		if (i <= 60){
			risoku = zandaka*gRiritsu/12;//60回目までの利息
			risoku=Math.floor(risoku);//小数点以下切り捨て
				//alert("60回目までの利息=" + risoku);
		}
		else if (i > 60 && i <= 120){
			if (fNensu == 6){
				risoku = zandaka*gRiritsu2/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
				//alert("120回目までの利息=" + risoku);
			}
			else {
				risoku = zandaka*gRiritsu/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
		}
		else{
			if (fNensu == 0){
				risoku = zandaka*gRiritsu/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
				//alert("121回目以降の利息=" + risoku);
			}
			else {
				risoku = zandaka*gRiritsu2/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
		}

		zandaka = zandaka-(gHensaigakuM-risoku);//返済後残高
		zandaka=Math.floor(zandaka);//小数点以下切り捨て
		//alert("返済予定表（毎月分）"+ i +"回目"+ zandaka);
	}
	if (zandaka <= 0){
		zandaka = 0;
	}
//	alert("月返済後残高"+zandaka);
	result=Math.floor(zandaka);//小数点以下切り捨て
	return zandaka;

}

//■○年目以降（うちボーナス分）
function CalHensaigaku2Bu(){
	if (gZandaka2 == 0) {
		result= 0;
//	alert("残高"+ gZandaka2);
	}
	else {
		aa = gZandaka2;
		ab = (1 + gRiritsu2 * 6 / 12);
		ac = CalBeki(ab,gHensaikaisu2B);
		ad = (gRiritsu2*6/12);
		a = aa*ac*ad
		ba = (1+gRiritsu2*6/12);
		bb =  CalBeki(ba,gHensaikaisu2B);
		b= bb-1;
		result = a/b;
	}
	result=Math.floor(result);//小数点以下切り捨て
	//alert("○年目以降（うちボーナス分）"+ result);
	return result;
}

//★返済予定表（ボーナス返済後残高）
function CalHyouB(x){
	zandaka = gBonus;
	for (var i = 0; i < x; i++ ) {
	//利息計算
		if (i <= 10){
			risoku = zandaka*gRiritsu*6/12;
			risoku=Math.floor(risoku);//小数点以下切り捨て
			//alert("10回目までの利息=" + risoku);
		}
		else if (i >=11 && i < 21){
			if (fNensu == 6){
				risoku = zandaka*gRiritsu2*6/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
			else{
				risoku = zandaka*gRiritsu*6/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
			//alert("20回目までの利息=" + risoku);
		}
		else{
			if (fNensu == 0){
				risoku = zandaka*gRiritsu*6/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
			else{
				risoku = zandaka*gRiritsu2*6/12;
				risoku=Math.floor(risoku);//小数点以下切り捨て
			}
			//alert("21回目以降の利息=" + risoku);
		}

		zandaka = zandaka-(gHensaigakuBu - risoku);//返済後残高
	}
	if (zandaka <= 0){
		zandaka = 0;
	}
	//alert(i + "回目の残高=" + zandaka);
	return zandaka;

}






//未入力の場合0に設定
function Check0(zero){
	alert(zero);

	if  ((zero==null)||(zero=="")) {
	return 0;
	}
}

//返済回数
function CalHensaikikan(){
	result = fKikanY*12+fKikanM;
	return result;
//	alert("返済回数" + gHensaikaisu);
}

//お借入金額
function CalKariirekin(){
	result = fKariirekin;
	return result;
//	alert("お借入金額" + gKariirekin);
}

//ボーナス金額
function CalBonus(){
	x = fBonus/100;
	result = gKariirekin*x;
	return result;
//	alert("ボーナス金額" + gBonus);
}

//利率
function CalRiritsu(x){
	if (x =="−"){
		x = 0;
	}
	result = x/100;
	return result;
//	alert("利率" + gRiritsu);
}

//ボーナス返済回数
function CalHensaikaisuB(){
	if (fBonus==0){
		result=0;
//		alert("ボーナス返済回数0");
	}
	else{
		if (fKikanM<6){
			result = fKikanY*2;
//			alert("ボーナス6以下"+gHensaikaisuB);
		}
		else{
			result = fKikanY*2+1;
//			alert("ボーナス返済回数6以上"+gHensaikaisuB);
		}
	}
	//alert("ボーナス返済回数" + result);
	return result;
}


//○年目以降
//固定金利期間終了後の返済回数
function CalHensaikaisu2(){
	if (fNensu == 0) {
		result= 0;
	}
	else if(((fNensu-1)*12) >= gHensaikaisu) {
		result= 0;
	}
	else {
		result = gHensaikaisu-((fNensu-1)*12);
	}
	result=Math.floor(result);//小数点以下切り捨て
	return result;
}

//固定金利期間終了後のボーナス返済回数
function CalHensaikaisu2B(){
	if (fNensu==0){
		result=0;
	}
	else if (fBonus == 0){
		result=0;
	}
	else if (((fNensu-1)*2) >= gHensaikaisuB){
		result=0;
	}
	else{
		result = gHensaikaisuB-(fNensu-1)*2;
	}
	//alert("固定金利期間終了後のボーナス返済回数=" + result);
	return result;
	
}


//商品
function ShohinSet(f){
	gLoan = f.shohin.options[f.shohin.selectedIndex].value;//商品　年目以降
//	alert(gLoan);
	if (gLoan == "none"){
		fShohin = 0;//商品年数
		f.nensu.value = "−";
		f.riritsu2.value = "−";
	}
	else if (gLoan == "jloan05"){
		fShohin = 6;
		f.nensu.value = 6;
	}
	else if (gLoan == "jloan10"){
		fShohin = 11;
		f.nensu.value = 11;
	}
	else if (gLoan == "jloan"){
		fShohin = 12;
		f.nensu.value = "−";
		f.riritsu2.value = "−";
	}
	else if (gLoan == "aloan05"){
		fShohin = 6;
		f.nensu.value = 6;
	}
	else if (gLoan == "aloan"){
		fShohin = 12;
		f.nensu.value = "−";
		f.riritsu2.value = "−";
	}
	return fShohin;
}


//べき乗
function CalBeki(a,b){
	b = b-1;
	c = a
	for (var i = 0; i < b; i++ ) {
		c = c*a
	}
	return c
}

//入力された値が半角の正の整数かどうかチェック*
function suCheck (suu)
{
	if ( isNumber (suu) == false ) {
		confirm ( "恐れ入りますが、\n半角の正の整数をご記入ください" );
	return;
	}

}

function isNumber (inputmoji) {
	stR = "" + inputmoji
	for (var i = 0; i < stR.length; i++ ) {
		var itimoji = stR.charAt(i)
		if ( itimoji < "0" || itimoji > "9" ) {
			return false
		}
	}
	return true
}

//金額にカンマを入れる
function insertComma1(sourceStr) {
	var destStr = delComma1(sourceStr);
	var tmpStr = "";
	while (destStr != (tmpStr = destStr.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))) {
	destStr = tmpStr;
  }
return destStr;
}

//カンマ削除
function delComma1(w) {
	var z = w.replace(/,/g,"");
	return (z);
}

//表示項目削除
function delResult() {
	for (var i =18; i < 28; i++ ) {
		document.forms[0].elements[i].value = "";
	}
}

