//How much can I borrow Calculator

//Variables

// Current Loan
var loan_min = 1000;
var loan_max = 500000;
var loan_initial = 20000;
var current_loan_value = loan_initial;
var loanValues = null;

// deposit
var deposit_min = 1000;
var deposit_max = 1000000;
var deposit_initial = 100000;
var current_deposit_value = deposit_initial;
var depositValues = null;

//Current Rate
var rate_min = 0.25;
var rate_max = 10;
var rate_initial = 4.5;
var current_rate_value = rate_initial;
var rateValues = null;

// Term
var term_min = 1;
var term_max = 45;
var term_initial = 5;
var current_term_value = term_initial;
var termValues = null;




//Only call the function when you need to - on mouse up
var cancelAjax = true;


// Set Inital Values and create slider Arrays

function InitializeHowMuchCanIBorrowCalculator()
{   

    // loan slider values
    loanValues = CreateSliderValues(new Array(), loan_min, 25000, 1000);
    loanValues = CreateSliderValues(loanValues, 26000, loan_max, 1000);

    // deposit  values
    depositValues = CreateSliderValues(new Array(), deposit_min, 100000, 1000);
    depositValues = CreateSliderValues(depositValues, 100000, deposit_max, 10000);
	
    // rate  values
    rateValues = CreateRSliderValues(new Array(), rate_min, rate_max);
	
	      // term slider values
    termValues = CreateSliderValues(new Array(), term_min, 5, 1);
    termValues = CreateSliderValues(termValues, 5, term_max, 1);

    // loan slider
    $('#loanTrack').slider({
        min: 0,
        max: loanValues.length - 1,
        steps: loanValues.length,
        change: function(e, ui)
		
        {
            current_loan_value = loanValues[ui.value]; recalmpay=1;
            ShowResult();
        },
        slide: function(e, ui)
        {
            $('#loanTextInput').val(loanValues[ui.value]);
        }
    });

    // deposit slider
    $('#depositTrack').slider({
        min: 0,
        max: depositValues.length - 1,
		
        steps: depositValues.length,
        change: function(e, ui)
        {
            current_deposit_value = depositValues[ui.value]; recalmpay=1;
            ShowResult();
        },
        slide: function(e, ui)
        {
            $('#depositTextInput').val(depositValues[ui.value]);
        }
    });
	
	  
    
    // rate slider
    $('#rateTrack').slider({
        min: 0,
        max: rateValues.length - 1,
        steps: rateValues.length,
        change: function(e, ui)
        {
            current_rate_value = rateValues[ui.value]; recalmpay=1;
            ShowResult();
        },


        slide: function(e, ui)
        {
            $('#rateTextInput').val(rateValues[ui.value]);
        }
    });
	
  // term slider
    $('#termTrack').slider({
        min: 0,
        max: termValues.length - 1,
		
        steps: termValues.length,
        change: function(e, ui)
        {
            current_term_value = termValues[ui.value]; recalmpay=1;
            ShowResult();
        },
        slide: function(e, ui)
        {
            $('#termTextInput').val(termValues[ui.value]);
        }
    });
	

   
   
    $('#loanTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, loanValues, 'loanTrack'); });
    $('#loanTextInput').val(current_loan_value);
	
    $('#rateTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, rateValues, 'rateTrack'); });
    $('#rateTextInput').val(current_rate_value);
	
	$('#depositTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, depositValues, 'depositTrack'); } );
    $('#depositTextInput').val(current_deposit_value);
	
$('#termTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, termValues, 'termTrack'); } );
    $('#termTextInput').val(current_term_value);
	
    $('#loanTrack').slider("value", FindValueIndex(loanValues, current_loan_value));
	$('#depositTrack').slider("value", FindValueIndex(depositValues, current_deposit_value));
	$('#rateTrack').slider("value", FindValueIndex(rateValues, current_rate_value));
$('#termTrack').slider("value", FindValueIndex(termValues, current_term_value));
    
	// setting this to false will trigget the ajax call
	cancelAjax = false;
    
}

function handleKeyPress(eventArgs, valuesArr, trackId)
{
//    if (eventArgs.keyCode == 13)
//    {
        var v = parseFloat($(eventArgs.target).val());

        // is it a number?
        if (isNaN(v))
        {
            alert('Sorry, the amount is invalid.');
            return false;
        }
        else
        {
            var sliderIdx = FindValueIndex(valuesArr, v);

            if (!isNaN(sliderIdx))
            {
                // cancel this ajax request - we'll call it later on
                cancelAjax = true;
                $('#' + trackId).slider("value", sliderIdx);
                cancelAjax = false;
            }
            else
            {
                alert('Please enter a value higher than ' + valuesArr[0] + ' and lower than ' + valuesArr[valuesArr.length - 1] + '.');
                return false;
            }
        }

        $(eventArgs.target).val(v);

       
		
		
        ShowResult(); // calling the ajax request here will send the correct "current" values
        //return false;
 
}

function ShowResult()
{

// don't keep doing it, honestly, everything will go crazy.  
    if (cancelAjax) { return; }    
	

function payment(rate, nper, pv, fv, type)
{
   nper = parseFloat(nper);
   pv = parseFloat(pv);
   fv = parseFloat(fv);
   rate = parseFloat(rate);
   type = parseFloat(type);
   if ( rate == 0 )
   {
        pmt_value = -((fv + pv)/nper);
   }
   else 
   {
        pmt_value = -((fv+(pv*(Math.pow((1+rate),nper))))/((1+rate*type)*((Math.pow((1+rate),nper)-1)/rate)));
   }
   return (pmt_value);
}

//declare variables
var balance = Number(document.getElementById("loanTextInput").value);
var rate = Number(document.getElementById("rateTextInput").value);
var target = Number(document.getElementById("depositTextInput").value);
var months = 0
var years = Number(document.getElementById("termTextInput").value);
rate = rate/1200

if (isNaN(months))
{months = 0}
var term = (years * 12) + months
var result = ""
var result1 = Math.round(payment(rate, term, balance,target*-1,1) * 100) /100
var displayyears = Number(document.getElementById("termTextInput").value);
var displaymonths = 0
if (parseFloat(displayyears) <= 0 || displayyears=='' || displayyears==' ') { displayyears = '0' }
if (parseFloat(displaymonths) <= 0 || displaymonths=='' || displaymonths==' ') { displaymonths = '0' }

var resultoutput = ' '
var decplacelen = 0
var doadd = 0

if (parseFloat(result1) < 0)
		{
			result = "With the given interest rate and term you should reach your target amount with no additional savings"
		}
		else {
		result1 = addCommas(result1);
			result = "With the given interest rate and term you would need to save an extra &pound;" + result1 + " a month to reach your target amount"}


		document.getElementById("result").innerHTML = result
	

	



	document.getElementById('resultPane').style.display = "block";



}



$(document).ready(InitializeHowMuchCanIBorrowCalculator);






 
