//How much can I borrow Calculator

//Variables

// Current Loan
var loan_min = 25000;
var loan_max = 900000;
var loan_initial = 100000;
var current_loan_value = loan_initial;
var loanValues = 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;

//Current Penalty
var penalty_min = 250;
var penalty_max = 15000;
var penalty_initial = 1000;
var current_penalty_value = penalty_initial;
var penaltyValues = 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);
	
	 // penalty slider values
    penaltyValues = CreateSliderValues(new Array(), penalty_min, 15000, 100);
   

    // rate  values
    rateValues = CreateRSliderValues(new Array(), rate_min, rate_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]);
        }
    });
	
    // 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]);
        }
    });
	
	// penalty slider
    $('#penaltyTrack').slider({
        min: 0,
        max: penaltyValues.length - 1,
        steps: penaltyValues.length,
        change: function(e, ui)
		
        {
            current_penalty_value = penaltyValues[ui.value]; 
            ShowResult();
        },
        slide: function(e, ui)
        {
            $('#penaltyTextInput').val(penaltyValues[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);

  	$('#penaltyTextInput').change(function(eventArgs) { return handleKeyPress(eventArgs, penaltyValues, 'penaltyTrack'); });
    $('#penaltyTextInput').val(current_penalty_value);
	
	
    $('#loanTrack').slider("value", FindValueIndex(loanValues, current_loan_value));
	$('#rateTrack').slider("value", FindValueIndex(rateValues, current_rate_value));
	$('#penaltyTrack').slider("value", FindValueIndex(penaltyValues, current_penalty_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; }    
	
	
	//declare key variables
	var	Loan		=	document.getElementById("loanTextInput").value;
	//Loan			=	parseFloat(Loan.replace(/[^0-9.]/g, ''));
	Loan			=	parseFloat(Loan); 
	var	Rate		=	document.getElementById("rateTextInput").value;
	Rate			=	parseFloat(Rate.replace(/[^0-9.]/g, ''));
	
	var TermYears	= 	new Number(document.getElementById("penyearsTextInput").value);
	var TermMonths	= 	new Number(document.getElementById("penmonthsTextInput").value);
	var Term		= 	TermYears * 12 + TermMonths
	var PenaltyAmount = document.getElementById("penaltyTextInput").value;
	PenaltyAmount 	= 	parseFloat(PenaltyAmount.replace(/[^0-9.]/g, ''));	

	var Penalty = PenaltyAmount;
	


	var AddToLoan = document.getElementById("addpen").value;
	var Fees = 80000 / Loan
	var PenaltyAsPerc = (Penalty / Loan) * 100
	
// Calculations for if not added to loan
	var NotAddedPayFees =  Rate - (((Fees + PenaltyAsPerc)*12) / Term) 
	// Round to 2 decimal places
		NotAddedPayFees = Math.round(NotAddedPayFees * 100)
		NotAddedPayFees = NotAddedPayFees / 100
		var NotAddedFeesPaid = Rate - ((PenaltyAsPerc*12) / Term)
	// Round to 2 decimal places
		NotAddedFeesPaid = Math.round(NotAddedFeesPaid * 100)
		NotAddedFeesPaid = NotAddedFeesPaid / 100
// Calculations for if added to loan
	var TerminYears = TermMonths/12 + TermYears
	var CostofStaying = Loan * Rate/100 * TerminYears
	var numerator = CostofStaying - Penalty
	var denomiator = (TerminYears/100) * (Loan + Penalty)
	var AddedPayfees = (numerator - 800) / denomiator
	// Round to 2 decimal places
		AddedPayfees = Math.round(AddedPayfees * 100)
		AddedPayfees = AddedPayfees / 100
	var AddedFeesFree = numerator / denomiator
	// Round to 2 decimal places
	AddedFeesFree = Math.round(AddedFeesFree * 100)
	AddedFeesFree = AddedFeesFree / 100
	
if(AddToLoan=="Yes"){
document.getElementById("feespaid").innerHTML = AddedPayfees
document.getElementById("feesfree").innerHTML = AddedFeesFree
}
else {
document.getElementById("feespaid").innerHTML = NotAddedPayFees
document.getElementById("feesfree").innerHTML = NotAddedFeesPaid
}


	document.getElementById('resultPane').style.display = "block";
	window.location.hash="calchead"
}


function calculatepenalty(){
var penpercent = document.getElementById("penaltypercent").value; 
var	Loan		=	document.getElementById("loanTextInput").value;
if(isNaN(penpercent)){document.getElementById("percentmessage").innerHTML ="Please only enter numbers"}
var penalty = (penpercent/100) * Loan
penalty = Math.round(penalty)
if(isNaN(penalty)){document.getElementById("percentmessage").innerHTML ="Please only enter numbers"}
else {document.getElementById("penaltyTextInput").value = penalty

$('#penaltyTrack').slider("value", ((penalty-150)/100));

}
}


$(document).ready(InitializeHowMuchCanIBorrowCalculator);

function showeelement(id){
document.getElementById(id).style.display = "block";
}




 
