//How much can I borrow Calculator

//Variables

// Current Loan
var loan_min = 0;
var loan_max = 900000;
var loan_initial = 100000;
var current_loan_value = loan_initial;
var loanValues = null;

// Current ioLoan
var ioloan_min = 0;
var ioloan_max = 900000;
var ioloan_initial = 0;
var current_ioloan_value = ioloan_initial;
var ioloanValues = null;


// Term
var term_min = 5;
var term_max = 45;
var term_initial = 25;
var current_term_value = term_initial;
var termValues = 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;

//Rate Change
var ratechange_min = 0;
var ratechange_max = 5;
var ratechange_initial = 0.5;
var current_ratechange_value = ratechange_initial;
var ratechangeValues = 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);
	
	 // ioloan slider values
    ioloanValues = CreateSliderValues(new Array(), ioloan_min, 25000, 1000);
    ioloanValues = CreateSliderValues(ioloanValues, 26000, ioloan_max, 1000);

    // 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);
	
	// ratechange  values
    ratechangeValues = CreateR2SliderValues(new Array(), ratechange_min, ratechange_max);
	
	

    // 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]);
        }
    });
	
	// ioloan slider
    $('#ioloanTrack').slider({
        min: 0,
        max: ioloanValues.length - 1,
        steps: ioloanValues.length,
        change: function(e, ui)
		
        {
            current_ioloan_value = ioloanValues[ui.value]; 
            ShowResult();
        },
        slide: function(e, ui)
        {
            $('#ioloanTextInput').val(ioloanValues[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]);
        }
    });
	
	  
    
    // 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]);
        }
    });
	
	    // ratechange slider
    $('#ratechangeTrack').slider({
        min: 0,
        max: ratechangeValues.length - 1,
        steps: ratechangeValues.length,
        change: function(e, ui)
        {
            current_ratechange_value = ratechangeValues[ui.value]; recalmpay=1;
            ShowResult();
        },


        slide: function(e, ui)
        {
            $('#ratechangeTextInput').val(ratechangeValues[ui.value]);
        }
    });
	  
	  
	  
	  
   
    $('#loanTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, loanValues, 'loanTrack'); });
    $('#loanTextInput').val(current_loan_value);
	
	$('#ioloanTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, ioloanValues, 'ioloanTrack'); });
    $('#ioloanTextInput').val(current_ioloan_value);
		
    $('#rateTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, rateValues, 'rateTrack'); });
    $('#rateTextInput').val(current_rate_value);
	
	$('#termTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, termValues, 'termTrack'); } );
    $('#termTextInput').val(current_term_value);
	
	$('#ratechangeTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, ratechangeValues, 'ratechangeTrack'); });
    $('#ratechangeTextInput').val(current_ratechange_value);
	
	$('#ioloanTrack').slider("value", FindValueIndex(ioloanValues, current_ioloan_value));
    $('#loanTrack').slider("value", FindValueIndex(loanValues, current_loan_value));
	$('#termTrack').slider("value", FindValueIndex(termValues, current_term_value));
	$('#rateTrack').slider("value", FindValueIndex(rateValues, current_rate_value));
	$('#ratechangeTrack').slider("value", FindValueIndex(ratechangeValues, current_ratechange_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; }    
	
	var	Loan			=	(document.getElementById("loanTextInput").value);
		Loan 			= 	parseFloat(Loan.replace(/[^0-9.]/g, ''));
		if (isNaN(Loan)){
		
		Loan = 0
		}; 
	var InterestOnly 	=	document.getElementById("ioloanTextInput").value;
		InterestOnly	= 	parseFloat(InterestOnly.replace(/[^0-9.]/g, ''));
		if (isNaN(InterestOnly)){InterestOnly = 0}; 
	var Rate 			=  document.getElementById("rateTextInput").value;
		Rate			= 	parseFloat(Rate.replace(/[^0-9.]/g, ''));
	var Term			= 	new Number(document.getElementById("termTextInput").value);
	
// GET CURRENT INTEREST ONLY PAYMENT
	var InterestOnlyPayment =  (InterestOnly * (Rate/100))/12
	
// GET CURRENT REPAYMENT PAYMENT	
	var repaymentamount = calculaterepaymentpayment(Loan, Rate, Term);

// Get current monthly payment
	var CurrentMonthlyPayment = repaymentamount + InterestOnlyPayment
	CurrentMonthlyPayment = Math.round(CurrentMonthlyPayment)

	
// Change
	var AmountofChange = new Number(document.getElementById("ratechangeTextInput").value);
	var NewRate = new Number(document.getElementById("rateTextInput").value) + AmountofChange
	
// Get new interest only payment
	var NewInterestOnlyPayment = (InterestOnly * (NewRate/100))/12

// Get new repayment payment
	var Newrepaymentamount = calculaterepaymentpayment(Loan, NewRate, Term);

// Get new monthly payment
	var NewMonthlyPayment = Newrepaymentamount + NewInterestOnlyPayment
	NewMonthlyPayment = Math.round(NewMonthlyPayment)
	
// Monthly difference
	var monthlydifference = NewMonthlyPayment - CurrentMonthlyPayment 
	
// Annual difference 
	var Annualdifference = monthlydifference * 12
	
	var	changedirection = ""
	
	if(AmountofChange>0){changedirection = "increase "}
	else	{changedirection = "decrease "}		 
					 

	document.getElementById('monthlypayment').innerHTML = CurrentMonthlyPayment;
	document.getElementById('change').innerHTML = AmountofChange;
	document.getElementById('changedirection').innerHTML = changedirection;
	document.getElementById('newmonthlypayment').innerHTML = NewMonthlyPayment
	document.getElementById('monthlydifference').innerHTML = monthlydifference;
	document.getElementById('annauldifference').innerHTML = Annualdifference;
	
	document.getElementById('resultPane').style.display = "block";
	window.location.hash="calchead"



}



$(document).ready(InitializeHowMuchCanIBorrowCalculator);






 
