//change 

MonthlyPayment = 0;
LoanAmount = 0;

_monthlyPayment = 0;
_loanAmount = 10000;
_rate = 6.25;
_repaymentTime = 10;
_paymentOption = "Deferment";

RATE_MIN = 5;
RATE_MAX = 9;

LOAN_AMT_MIN = 0;
LOAN_AMT_MAX = 100000;

REPAYMENT_TIME_MIN = 1;
REPAYMENT_TIME_MAX = 20;

function sliderPctToValue( v, min, max ){
	return maxDec(((min + (v/100) * (max - min)) ),2);
}
function valueToSliderPct( v, min, max ){// returns a value between 0 and 100 for use as the slider value
	return Math.floor((v - min) / (max - min) * 100);
}

function formatMoney( val, decimals ){
	val = String(val);
	if (val=='') return val;
	if (decimals==null) decimals = false;
	var tVal, tArr;	
	val = val.replace(/\$/g,'').replace(/,/g,'').replace(/-/g,'').replace(/^\$0{1,}|^0{1,}/,'');	

	if(val =='')
	{
		val = "0";
	}

	if (val.indexOf(".") == -1) 
		val = val + ".00";
	else {
		tArr = val.split(".");
		if (tArr[1].length > 2) {		
			tArr[1] = tArr[1].substr(0,2) + "." + tArr[1].substr(2);		
			tVal = Math.round(parseFloat(tArr[1]));		
			if (tVal > 99) {
				tArr[0] = String(parseInt(tArr[0]) + 1);
				tVal = tVal - 100;
			}
			if (tVal < 10) 	val = tArr[0] + ".0" + String(tVal);			
			else val = tArr[0] + "." + String(tVal);
		}
		else if (tArr[1].length == 2) val = tArr[0] + "." + tArr[1];
		else val = tArr[0] + "." + tArr[1] + "0";
	}	
	
	tArr = val.split(".");
	tVal = "";
	var j = 0;
	for (i=tArr[0].length-1;i>-1;i--) {
		if (j % 3 == 0 && j!=0) tVal = ',' + tVal;
		tVal = tArr[0].substr(i,1) + tVal;		
		j++;
	}	
	tArr[0] = tVal;
	
	val = '$' + tArr[0] + ((decimals) ? '.' + tArr[1] : '');
	return val;
}

function maxDec( v, n ){
	var vArr = String(v).split('.');
	var newV = vArr[0];
	if( n > 0 ) newV += ".";
	for( var i=0; i<n; i++ ){
		if( vArr.length > 1 ){
			if( vArr[1].length > i ) newV += vArr[1].substr(i,1);
			else newV += "0";
		} else {
			newV += "0";
		}
	}
	return newV;
}
function calcMonthlyPayment(){
	var r = _rate / 1200;
	
	if( _paymentOption == "PrincipalAndInterest" ){
		var P = _loanAmount;
		var monthlyPmt = ( r / (Math.pow(1+r, _repaymentTime * 12) - 1) + r ) * P;
		var preMonthlyPmt = ( r / (Math.pow(1+r, _repaymentTime * 12) - 1) + r ) * P;
	} else if( _paymentOption == "InterestOnly" ) {
		var P = _loanAmount;
		var monthlyPmt = ( r / (Math.pow(1+r, _repaymentTime * 12) - 1) + r ) * P;
		var preMonthlyPmt = ( r * _loanAmount );
	} else {
		var P = _loanAmount * Math.pow((1 + r), 12*4);
		var monthlyPmt = ( r / (Math.pow(1+r, _repaymentTime * 12) - 1) + r ) * P;
		var preMonthlyPmt = 0;
	}
	
	$( '#costPerMonth' ).html(formatMoney( preMonthlyPmt ));
	$( '#costPerMonth2' ).html(formatMoney( monthlyPmt ));
	
}


function update_loanAmount( v ){
	_loanAmount = v;
	$( '#amountBorrowed' ).html(formatMoney(_loanAmount));
	calcMonthlyPayment();
}
function update_interest( v ){
	_rate = sliderPctToValue(v, RATE_MIN,RATE_MAX);
	$( '#interestRate' ).html(_rate + '%');
	calcMonthlyPayment();
}
function update_repaymentTime( v ){
	_repaymentTime = Math.floor(v);
	$( '#payOver' ).html(_repaymentTime + ' years');
	calcMonthlyPayment();
}
function update_paymentOption( e ){
	_paymentOption = getEvtTarget( e ).value;
	calcMonthlyPayment();
}

function calc_setRepaymentOption( rpOp ){
	_paymentOption = rpOp;
	$( '#paymentOption' ).val(rpOp);
	calcMonthlyPayment();
}

$(function(){
	setup_interestCalculator();
});

function setup_interestCalculator(){
	$( '#amountBorrowed' ).html(formatMoney(_loanAmount));
	$( 'interestRate' ).html( _rate + '%');
	$( 'payOver' ).html(_repaymentTime + ' years');
	$( 'paymentOption' ).val(_paymentOption);
	var rateSliderVal = valueToSliderPct(_rate,RATE_MIN,RATE_MAX);
	setupSliderOther($('#slider_amountBorrowed'),update_loanAmount, _loanAmount, LOAN_AMT_MIN, LOAN_AMT_MAX  );
	setupSliderOther($('#slider_interestRate'),update_interest, rateSliderVal,0, 100 );
	setupSliderOther($('#slider_payOver'),update_repaymentTime, _repaymentTime, REPAYMENT_TIME_MIN, REPAYMENT_TIME_MAX );
	
	$('#paymentOption').change(update_paymentOption);
	calcMonthlyPayment();
}

function setupSliderOther($slider, change_fn, initialValue, min, max){
	$slider.slider({
		slide : function(e,ui){change_fn(ui.value);},
		minValue : min,
		maxValue : max,
		startValue : initialValue
	});
}
