var data = new Array("元金", "利息", "残高");
var colors=new Array("AFD8F8", "F6BD0F", "8BBA00");

window.onload = function() {
	top.document.loan_form.amt.value="30000000";
	top.document.loan_form.pay.value="35";
	top.document.loan_form.rate.value="3.0";
	show(); 
	updateChart();
}

function check() { 
	var loanamt = top.document.loan_form.amt.value;
	var paymnt = top.document.loan_form.pay.value;
	var rate = top.document.loan_form.rate.value;

	if(loanamt=="" || isNaN(parseFloat(loanamt)) || loanamt==0) { 
		alert("ローン総額を正しく入力して下さい。");
		top.document.loan_form.amt.value="";
		top.document.loan_form.amt.focus();
		return false; 
	} else if(paymnt=="" || isNaN(parseFloat(paymnt)) || paymnt==0 || paymnt>35) {
		alert("借入期間を正しく入力して下さい。");
		top.document.loan_form.pay.value="";
		top.document.loan_form.pay.focus();
		return false; 
	} else if(rate=="" || isNaN(parseFloat(rate)) || rate==0) {
		alert("金利を正しく入力して下さい。");
		top.document.loan_form.rate.value="";
		top.document.loan_form.rate.focus();
		return false; 
	} else {
		show(); 
		updateChart();
	}
}

function fixVal(value,numberOfCharacters,numberOfDecimals,padCharacter) { 
	var i, stringObject, stringLength, numberToPad;            
	value=value*Math.pow(10,numberOfDecimals);                 	
	value=Math.round(value); 

	stringObject=new String(value); 
	stringLength=stringObject.length;
		while(stringLength<numberOfDecimals) {                     
		stringObject="0"+stringObject;                     
		stringLength=stringLength+1;                       
	}

	if(numberOfDecimals>0) {			           
		stringObject=stringObject.substring(0,stringLength-numberOfDecimals)+"."+
		stringObject.substring(stringLength-numberOfDecimals,stringLength);
	}

	if (stringObject.length<numberOfCharacters && numberOfCharacters>0) {
		numberToPad=numberOfCharacters-stringObject.length; 
		for (i=0; i<numberToPad; i=i+1) {
			stringObject=padCharacter+stringObject;
		}
	}

	return stringObject;  
}

function addFigure(str) {
var num = new String(str).replace(/,/g, "");
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
return num;
}

function show() {
	var amount=parseFloat(top.document.loan_form.amt.value);
	var numpay=parseInt(top.document.loan_form.pay.value*12);
	var rate=parseFloat(top.document.loan_form.rate.value);
	
	var show_rate=rate;
	var show_monthly=show_rate/12;
	
	rate=rate/100;
	var monthly=rate/12;
	var payment=((amount*monthly)/(1-Math.pow((1+monthly),-numpay)));
	var total=payment*numpay;
	var interest=total-amount;

	var equal_payment=payment;
	var equal_total=total;
	var equal_interest=interest;
	
	var show_pmt ="";
	
	var output = "";
	var detail = "";

	
	if(!top.document.loan_form.r[1].checked){
		show_pmt ="回";
	} else {
		show_pmt ="年";
	}
		

	detail += "<center><b>返済予定表（単位：円）</b><table style='width:400px;margin:10px;border:1px solid #999;'> \
			<tr class='even'><td style='text-align:center'><b>"+show_pmt+"</b></td> \
			<td style='text-align:center'><b>返済額</b></td> \
			<td style='text-align:center'><b>利息</b></td><td style='text-align:center'><b>元金</b></td> \
			<td style='text-align:center'><b>残高</b></td></tr>";

	newPrincipal=amount;
	total_payment=0;
	
	var i = 1;
	var sum_year=0;
	var sum_reduction=0;
	var sum_newInterest=0;
	var sum_payment=0;
	
	while (i <= numpay) {
		newInterest=monthly*newPrincipal;
		if(!top.document.loan_form.q[1].checked){
			reduction=payment-newInterest;
			newPrincipal=newPrincipal-reduction;
		} else {
			reduction=amount/numpay;
			newPrincipal=newPrincipal-reduction;
			payment=newInterest+reduction;
			total_payment=total_payment+payment;
		}
		
		if(!top.document.loan_form.r[1].checked){
			if ( i%2 == 0 ) {
				detail += "<tr class='even'>";
			} else {
				detail += "<tr class='odd'>";
			}
			detail += "<td style='text-align:center'>"+i+"</td> \
						<td style='text-align:right'>"+addFigure(fixVal(payment,0,0,' '))+"</td> \
						<td style='text-align:right'>"+addFigure(fixVal(newInterest,0,0,' '))+"</td> \
						<td style='text-align:right'>"+addFigure(fixVal(reduction,0,0,' '))+"</td> \
						<td style='text-align:right'>"+addFigure(fixVal(newPrincipal,0,0,' '))+"</td></tr>";	
		} else {
			sum_reduction=sum_reduction+reduction;
			sum_newInterest=sum_newInterest+newInterest;
			sum_payment=sum_payment+payment;
			if (i%12 == 0) {
				sum_year=i/12;
				if ( sum_year%2 == 0 ) {
					detail += "<tr class='even'>";
				} else {
					detail += "<tr class='odd'>";
				}
				detail += "<td style='text-align:center'>"+sum_year+"</td> \
							<td style='text-align:right'>"+addFigure(fixVal(sum_payment,0,0,' '))+"</td> \
							<td style='text-align:right'>"+addFigure(fixVal(sum_newInterest,0,0,' '))+"</td> \
							<td style='text-align:right'>"+addFigure(fixVal(sum_reduction,0,0,' '))+"</td> \
							<td style='text-align:right'>"+addFigure(fixVal(newPrincipal,0,0,' '))+"</td></tr>";	
				sum_reduction=0;
				sum_newInterest=0;
				sum_payment=0;
			}
		}				
		i++;
	}
	
	detail += "</table></center>";
	output += "<table style='margin: 10px'><tbody style='border:none'> \
				<tr><td>ローン総額:</td><td>"+addFigure(amount)+" 円</td></tr><tr><td>支払回数:</td> \
				<td>"+numpay+" 回</td></tr><tr><td>金利:</td><td>"+fixVal(show_rate,0,3,' ')+" ％</td></tr> \
				<tr><td>月利:</td><td>"+fixVal(show_monthly,0,3,' ')+" ％</td></tr><tr><td>";
	
	if(!top.document.loan_form.q[1].checked){
		output += "返済方式:</td><td>元利均等返済</td></tr> \
			<tr><td>月間返済額:</td><td>"+addFigure(fixVal(equal_payment,0,0,' '))+" 円</td></tr> \
			<tr><td>返済総額:</td><td>"+addFigure(fixVal(equal_total,0,0,' '))+" 円</td></tr> \
			<tr><td>利息総額:</td><td>"+addFigure(fixVal(equal_interest,0,0,' '))+" 円</td></tr></tbody></table>";
	} else {
		total=total_payment;
		interest=total-amount;
		output += "返済方式:</td><td>元金均等返済</td></tr> \
				<tr><td>返済総額:</td><td>"+addFigure(fixVal(total,0,0,' '))+" 円</td></tr> \
				<tr><td>利息総額:</td><td>"+addFigure(fixVal(interest,0,0,' '))+" 円</td></tr></tbody></table>";
	}

	document.getElementById("pmt").innerHTML = output;
	document.getElementById("det").innerHTML = detail;
}

function updateChart(){
	var chart1 = new FusionCharts("/sites/all/modules/fusioncharts/FusionChartsFree/Charts/FCF_StackedColumn2D.swf", "chart1Id", "360", "300");		   
	var strXML=generateXML(1);
	chart1.setDataXML(strXML);
	chart1.render("chart1div");
	
	var chart2 = new FusionCharts("/sites/all/modules/fusioncharts/FusionChartsFree/Charts/FCF_StackedColumn2D.swf", "chart2Id", "360", "300");		   
	var strXML=generateXML(2);
	chart2.setDataXML(strXML);
	chart2.render("chart2div");
	
	updateChartXML('chart1Id',generateXML(1));
	updateChartXML('chart2Id',generateXML(2));
}
		

function generateXML(generateIndex){
	var numyears=parseInt(top.document.loan_form.pay.value);
	//Variable to store XML
	var strXML="";
	
	if (generateIndex == 1){
		strXML = "<graph caption='元金＋利息' xAxisName='年' snumberPrefix='' decimalPrecision='0' animation='1' showValues='0' rotateValues='1'>";
	} else {
		strXML = "<graph caption='ローン残高' xAxisName='年' numberPrefix='' decimalPrecision='0' animation='1' showValues='0' rotateValues='1'>";
	}

	strXML = strXML + "<categories>";
	var i = 1;
	while (i <= numyears) {
		if (i%2 == 0) {
			strXML = strXML + "<category name='" + i + "' showName='1'/>";
		} else {
			strXML = strXML + "<category name='" + i + "' showName='0'/>";
		}
		
		i++;
	}
	
	strXML = strXML + "</categories>";

	//Based on the products for which we've to generate data, generate XML	
	if (generateIndex == 1){		
		strXML = strXML + getdataXML(0);
		strXML = strXML + getdataXML(1);
	} else {
		strXML = strXML + getdataXML(2);
	}
	//Close <graph> element;
	strXML = strXML + "</graph>";

	//Return data
	return strXML;
}


function getdataXML(dataIndex){	
	var amount=parseFloat(top.document.loan_form.amt.value);
	var numpay=parseInt(top.document.loan_form.pay.value*12);
	var rate=parseFloat(top.document.loan_form.rate.value);
	
	var numyear=parseInt(top.document.loan_form.pay.value);
	
 
	rate=rate/100;
	var monthly=rate/12;
	var payment=((amount*monthly)/(1-Math.pow((1+monthly),-numpay)));
	var total=payment*numpay;
	var interest=total-amount;

	var output = "";
	var detail = "";
	
	var dataXML;
	dataXML = "<dataset seriesName='" + data[dataIndex] + "' color='"+ colors[dataIndex]  +"' >";			
	
	newPrincipal=amount;

	var i = 1;
	var sum_reduction=0;
	var sum_newInterest=0;
	
	
	while (i <= numpay) {
		newInterest=monthly*newPrincipal;
		if(!top.document.loan_form.q[1].checked){
			reduction=payment-newInterest;
			newPrincipal=newPrincipal-reduction;
		} else {
			reduction=amount/numpay;
			newPrincipal=newPrincipal-reduction;
		}
		
		if (dataIndex == 0){
			sum_reduction=sum_reduction+reduction
			if (i%12 == 0) {
				dataXML = dataXML + "<set value='" + fixVal(sum_reduction,0,2,' ') + "' />";
				sum_reduction=0
			}
		} else if (dataIndex == 1){
			sum_newInterest=sum_newInterest+newInterest
			if (i%12 == 0) {
				dataXML = dataXML + "<set value='" + fixVal(sum_newInterest,0,2,' ') + "' />";
				sum_newInterest=0
			}
		} else {
			if (i%12 == 0) {
				dataXML = dataXML + "<set value='" + fixVal(newPrincipal,0,2,' ') + "' />";
			}
		}

		i++;
	}
	
	dataXML = dataXML + "</dataset>";

	return dataXML;			
}


		
