
	function Keisan(){

		//最終ボーナス
		m_EndBouDateY="";
		m_EndBouDateM="";
		m_EndDateY="";
		m_EndDateM="";

		m_rate=Number(document.keisan.inpNRat.value);
		m_kasi=Number(document.keisan.inpKKin.value);
		m_siha=Number(document.keisan.inpSKin.value);
		m_bou=Number(document.keisan.inpBKin.value);
		m_kikan=0;
		m_fusoku=0;
		m_zan=m_kasi;
		m_risoku=0;
		m_gan=0;
		m_zenfsoku=0;
		m_bouT1=Number(document.keisan.inpB1.value);
		m_bouT2=Number(document.keisan.inpB2.value);


		mFy = document.keisan.inpUshiY.value;
		mFm = document.keisan.inpUshiM.value;

		mTy = document.keisan.inpShihaY.value;
		mTm = document.keisan.inpShihaM.value;

		//融資日・支払開始日チェック（数値型）
		if ((isNaN(mFy)) || (isNaN(mFm)) || (isNaN(mTy)) || (isNaN(mTm))) {
			alert("支払開始日及び融資日を正しく設定してください。");
			return;
		}

		//融資日・支払開始日チェック（年）
		if((mFy<1990) || (mFy>2040) || (mTy<1990) || (mTy>2040)){
			alert("支払開始日及び融資日を正しく設定してください。");
			return;
		}

		//融資日・支払開始日チェック（期間）
		m_kdate = mFy + '/' + mFm + '/27';
		m_date =  mTy + '/' + mTm + '/27';
		m_kikan = DateDif('d',m_kdate,m_date);
		if(isNaN(m_kikan) || m_kikan==0){
			alert("支払開始日及び融資日が不正です。");
			return;
		}

		//ボーナスある場合
		if(m_bou>0){
			if(m_bouT1==m_bouT2){
				alert("ボーナス支払月に不備があります。");
				return;
			}
			if(m_bouT1==0 || m_bouT2==0){
				alert("ボーナス支払月に不備があります。");
				return;
			}
		}
		
		k_siha=0;
		k_gan=0;
		k_risoku=0;

		if (isNaN(m_rate)){
			m_rate = 0;
		}
		if (isNaN(m_kasi)){
			m_kasi = 0;
		}
		if (isNaN(m_siha)){
			m_siha = 0;
		}
		if (isNaN(m_bou)){
			m_bou = 0;
		}

	
		if(m_rate==0 || m_kasi == 0 || m_siha==0){
			alert("入力項目に不備があります。");
			return;
		}


		m_kdate = mFy + '/' + mFm + '/27';
		m_date =  mTy + '/' + mTm + '/27';

		//m_kikan = DateDif('d',m_kdate,m_date);

		//alert(m_date);
		
		b=0

		shiha=Number(document.keisan.inpSKin.value);

		for(i=1;i<=60;i++){
			w_date = m_date;
			if(i>1){
				m_date = DateAdd("m",1,m_date);
			}
			m_kikan = DateDif('d',w_date,m_date);

			m_siha=shiha;

			mmb=new Date(m_date);
			m_EndDateY=mmb.getYear();
			m_EndDateM=mmb.getMonth()+1;

			if(m_EndDateM==m_bouT1 || m_EndDateM==m_bouT2){ 
				m_siha = m_siha + m_bou;
				m_EndBouDateY=m_EndDateY;
				m_EndBouDateM=m_EndDateM;
			}


			//利息
			m_risoku = Math.floor(m_zan * m_rate * m_kikan / 36500) - m_fusoku;
			//alert(m_risoku);

			//元金充当
			if(m_siha < m_risoku){
				m_fusoku = m_siha - m_risoku;
				m_gan = 0;
				m_risoku = m_siha;
			}else{
				m_gan = m_siha - m_risoku;
				if(m_zan < m_gan){
					m_gan = m_zan;
					m_siha = m_gan + m_risoku;
					m_fusoku = 0;
					m_zan = m_zan - m_gan;
				}else{
					m_fusoku = 0;
					m_zan = m_zan - m_gan;
				}
			}

			k_siha = k_siha + m_siha;
			k_gan = k_gan + m_gan;
			k_risoku = k_risoku + m_risoku;

			if(m_zan==0) {
				m_saishuB="";
				if(m_bou>0){
					if(shiha < m_siha){
						m_saishuB = m_siha - shiha;
						m_siha=m_siha-m_saishuB;
					}else{
						m_saishuB = m_bou;
					}
				}
				document.keisan.outKaisu.value = i;
				document.keisan.outSogaku.value = k_siha;
				document.keisan.outTesu.value = k_risoku;
				document.keisan.outSaishu.value = m_siha;
				document.keisan.outSaishuB.value = m_saishuB;
				document.keisan.outSaishuDateY.value = m_EndDateY;
				document.keisan.outSaishuDateM.value = m_EndDateM;
				document.keisan.outSaishuBDateY.value = m_EndBouDateY;
				document.keisan.outSaishuBDateM.value = m_EndBouDateM;

				return;
			}

			if(i>=60 && m_zan> 0 ){
				document.keisan.outKaisu.value = "";
				document.keisan.outSogaku.value = "";
				document.keisan.outTesu.value = "";
				document.keisan.outSaishu.value = "";
				document.keisan.outSaishuB.value = "";
				document.keisan.outSaishuDateY.value = "";
				document.keisan.outSaishuDateM.value = "";
				document.keisan.outSaishuBDateY.value = "";
				document.keisan.outSaishuBDateM.value = "";
				alert("支払回数が60回を超えました。\r支払金額、ボーナス加算額を等を増額して再度計算を行ってください。");
			}

		}
	}

//----------------------------------------------------------------------------------------------------
	function GetGetugaku(Kasi,Ritu,Kai,bou){

	
		bouKai=0;
		bouKin=0;
		if(bou > 0 ){
			bouKai=Kai / 6;
			bouKin=bouKai * bou;
		}

		kasitukekin = Kasi - bouKin;

		

		m_getu=0;
		a = kasitukekin * Ritu * 0.01 / 12;
		b = 1 + Ritu * 0.01 / 12;
		c = Kai * -1;
		
		x = Math.pow(b,c);
        m_getu = a / (1 - x);


		m_getu=Math.floor((m_getu + 99) / 100)
		m_getu=m_getu * 100;

//		alert(m_getu);

		return m_getu;

	}

//----------------------------------------------------------------------------------------------------
	function Keisan2(){

		x=0;

		m_rate=Number(document.keisan.inpNRat2.value);
		m_kasi=Number(document.keisan.inpKKin2.value);
		m_kai=Number(document.keisan.inpSKai2.value);
		m_bou=Number(document.keisan.inpBKin2.value);
		m_bouT1=Number(document.keisan.inpB1_2.value);
		m_bouT2=Number(document.keisan.inpB2_2.value);

		mFy = document.keisan.inpUshiY2.value;
		mFm = document.keisan.inpUshiM2.value;

		mTy = document.keisan.inpShihaY2.value;
		mTm = document.keisan.inpShihaM2.value;

		//融資日・支払開始日チェック（数値型）
		if ((isNaN(mFy)) || (isNaN(mFm)) || (isNaN(mTy)) || (isNaN(mTm))) {
			alert("支払開始日及び融資日を正しく設定してください。");
			return;
		}

		//融資日・支払開始日チェック（年）
		if((mFy<1990) || (mFy>2040) || (mTy<1990) || (mTy>2040)){
			alert("支払開始日及び融資日を正しく設定してください。");
			return;
		}

		//融資日・支払開始日チェック（期間）
		m_kdate = mFy + '/' + mFm + '/27';
		m_date =  mTy + '/' + mTm + '/27';
		m_kikan = DateDif('d',m_kdate,m_date);
		if(isNaN(m_kikan) || m_kikan==0){
			alert("支払開始日及び融資日が不正です。");
			return;
		}

		

		if(m_kai>60){
			alert("支払回数を60回以内に設定してください。。");
			return;
		}

		if(m_rate==0 || m_kasi == 0 || m_kai < 2){
			alert("入力項目に不備があります。");
			return;
		}

		//ボーナスある場合
		if(m_bou>0){
			if(m_bouT1==m_bouT2){
				alert("ボーナス支払月に不備があります。");
				return;
			}
			if(m_bouT1==0 || m_bouT2==0){
				alert("ボーナス支払月に不備があります。");
				return;
			}
		}


		siha=GetGetugaku(m_kasi,m_rate,m_kai,m_bou)

		r_Kai=100;
		while (m_kai < r_Kai){
			
			x=x+1;
			r_Kai=ShiharaiKeisan(siha,m_kai);
			
			if(r_Kai == m_kai ){
				return true;
			}
			
			siha = siha + 20;

			if(x>300){
				alert("無効な支払プランです。\r支払回数、ボーナス加算額を等を変更して再度計算を行ってください。");
				return false;
			
			}
		}
		
		if(m_kai > r_Kai)
				alert("無効な支払プランです。\r支払回数、ボーナス加算額を等を変更して再度計算を行ってください。");


	}

//----------------------------------------------------------------------------------------------------
	function ShiharaiKeisan(shiha){

		if(shiha==0) return 0;

		//最終ボーナス
		m_EndBouDateY="";
		m_EndBouDateM="";
		m_EndDateY="";
		m_EndDateM="";
		
		m_rate=Number(document.keisan.inpNRat2.value);
		m_kasi=Number(document.keisan.inpKKin2.value);
		m_bou=Number(document.keisan.inpBKin2.value);
		x_kai=Number(document.keisan.inpSKai2.value);
		
		mFy = document.keisan.inpUshiY2.value;
		mFm = document.keisan.inpUshiM2.value;
		mTy = document.keisan.inpShihaY2.value;
		mTm = document.keisan.inpShihaM2.value;

		m_bouT1=Number(document.keisan.inpB1_2.value);
		m_bouT2=Number(document.keisan.inpB2_2.value);

		m_kikan=0;
		m_fusoku=0;
		m_zan=m_kasi;
		m_risoku=0;
		m_gan=0;
		m_zenfsoku=0;
		
		k_siha=0;
		k_gan=0;
		k_risoku=0;

		if (isNaN(m_rate)){
			m_rate = 0;
		}
		if (isNaN(m_kasi)){
			m_kasi = 0;
		}

		if (isNaN(m_bou)){
			m_bou = 0;
		}

		m_kdate = mFy + '/' + mFm + '/27';
		m_date =  mTy + '/' + mTm + '/27';
		
		b = "";

		for(i=1;i<=60;i++){
			m_siha=shiha;
			w_date = m_date;
			if(i>1){
				m_date = DateAdd("m",1,m_date);
			}
			m_kikan = DateDif('d',w_date,m_date);			

			mmb=new Date(m_date);
			m_EndDateY=mmb.getYear();
			m_EndDateM=mmb.getMonth()+1;

			if(m_EndDateM==m_bouT1 || m_EndDateM==m_bouT2){ 
				m_siha = m_siha + m_bou;
				m_EndBouDateY=m_EndDateY;
				m_EndBouDateM=m_EndDateM;
			}


			//利息
			m_risoku = Math.floor(m_zan * m_rate * m_kikan / 36500) - m_fusoku;
			//alert(m_risoku);

			//元金充当
			if(m_siha < m_risoku){
				m_fusoku = m_siha - m_risoku;
				m_gan = 0;
				m_risoku = m_siha;
			}else{
				m_gan = m_siha - m_risoku;
				if(m_zan < m_gan){
					m_gan = m_zan;
					m_siha = m_gan + m_risoku;
					m_fusoku = 0;
					m_zan = m_zan - m_gan;
				}else{
					m_fusoku = 0;
					m_zan = m_zan - m_gan;
				}
			}

			k_siha = k_siha + m_siha;
			k_gan = k_gan + m_gan;
			k_risoku = k_risoku + m_risoku;

			if(m_zan==0) {

				if( i == x_kai ){
					//alert(x_kai);
					m_saishuB="";
					if(m_bou>0){
						if(shiha < m_siha){
							m_saishuB = m_siha - shiha;
							m_siha=m_siha-m_saishuB;
						}else{
							m_saishuB = m_bou;
						}
					}

					document.keisan.outTuki.value = shiha;
					document.keisan.outSogaku2.value = k_siha;
					document.keisan.outTesu2.value = k_risoku;
					document.keisan.outSaishu2.value = m_siha;
					document.keisan.outSaishuB2.value = m_saishuB;
					document.keisan.outSaishuDateY2.value = m_EndDateY;
					document.keisan.outSaishuDateM2.value = m_EndDateM;
					document.keisan.outSaishuBDateY2.value = m_EndBouDateY;
					document.keisan.outSaishuBDateM2.value = m_EndBouDateM;
					return i;
				}else{
					document.keisan.outTuki.value = "";
					document.keisan.outSogaku2.value = "";
					document.keisan.outTesu2.value = "";
					document.keisan.outSaishu2.value = "";
					document.keisan.outSaishuB2.value = "";
					document.keisan.outSaishuDateY2.value = "";
					document.keisan.outSaishuDateM2.value = "";
					document.keisan.outSaishuBDateY2.value = "";
					document.keisan.outSaishuBDateM2.value = "";
					return i;	
				}
				
			}
		}


		//if( i != kai && m_zan <> 0 ){
			return i;
		//}

	}

