lera.cernolev
1/2/2020 - 6:10 PM

FundingCircle Calculator Updates

<script>
const initialAmount = 250000;
const initialTerm = 2;
const initialCredit = 'Excellent';


let deposited, oneTime, payment, value, intRate, fee;

let durationField = $("input[name=loan-duration][value='" + initialTerm * 12 + "']");
let duration = durationField.val();
durationField.attr('checked', true);
durationField.parent().addClass('active');

let creditValues = {
    "Good": "B",
    "Excellent": "A"
};
let creditField = $("input[name=credit-score][value='" + creditValues[initialCredit] + "']");
let creditScore = creditField.val();
creditField.attr('checked', true);
creditField.parent().addClass('active');

$('.state').on('click', function () {
    $(this).parent().find('.state.active').removeClass('active');
    $(this).addClass('active');
});

var fees = {
    greater: {
        'A': [3.49, 3.49, 3.49, 3.49, 3.99, 4.99,],
        'B': [3.49, 3.99, 4.99, 4.99, 5.99, 5.99,]
    },
    less: {
        'A': [3.49, 3.49, 3.49, 3.99, 4.99, 5.99,],
        'B': [3.49, 3.99, 4.99, 5.99, 6.99, 6.99,]
    }
};

var CREDIT_RATES = {
    'A': [4.99, 6.99, 7.49, 7.99, 8.49, 8.99,],
    'B': [13.49, 13.99, 14.49, 15.49, 16.49, 17.99,]
};

var range_all_sliders = {
    'min': [25000],
    '10%': [50000],
    '20%': [100000],
    '30%': [150000],
    '40%': [200000],
    '50%': [250000],
    '60%': [300000],
    '70%': [350000],
    '80%': [400000],
    '90%': [450000],
    'max': [500000]
};

var pipsSteps = document.getElementById('range');
noUiSlider.create(pipsSteps, {
    range: range_all_sliders,
    start: initialAmount,
    snap: true,
    pips: {
        mode: 'count',
        density: 9,
        values: 11,
        stepped: true,
    }
});


pipsSteps.noUiSlider.on('update', function (values, handle) {
    value = values[handle];
    let loanValue = formatNumber(parseInt(values[handle]));
    $('.loan-ammount p').text('$' + loanValue)
    update();
});

$('.state.label-duration').on('click', function () {
    duration = $(this).children('input').val();
    update();
});
$('.state.label-credit').on('click', function () {
    creditScore = $(this).children('input').val();
    update();
});


function update() {
    //start
    if (duration === '6' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[0];
        intRateS = intRate / 1200;
        fee = fees.less.A[0] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '6' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[0];
        intRateS = intRate / 1200;
        fee = fees.greater.A[0] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '6' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[0];
        intRateS = intRate / 1200;
        fee = fees.less.B[0] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '6' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[0];
        intRateS = intRate / 1200;
        fee = fees.greater.B[0] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    //start
    else if (duration === '12' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[1];
        intRateS = intRate / 1200;
        fee = fees.less.A[1] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '12' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[1];
        intRateS = intRate / 1200;
        fee = fees.greater.A[1] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '12' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[1];
        intRateS = intRate / 1200;
        fee = fees.less.B[1] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '12' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[1];
        intRateS = intRate / 1200;
        fee = fees.greater.B[1] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    //start
    else if (duration === '24' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[2];
        intRateS = intRate / 1200;
        fee = fees.less.A[2] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '24' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[2];
        intRateS = intRate / 1200;
        fee = fees.greater.A[2] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '24' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[2];
        intRateS = intRate / 1200;
        fee = fees.less.B[2] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '24' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[2];
        intRateS = intRate / 1200;
        fee = fees.greater.B[2] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    //start
    else if (duration === '36' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[3];
        intRateS = intRate / 1200;
        fee = fees.less.A[3] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '36' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[3];
        intRateS = intRate / 1200;
        fee = fees.greater.A[3] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '36' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[3];
        intRateS = intRate / 1200;
        fee = fees.less.B[3] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '36' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[3];
        intRateS = intRate / 1200;
        fee = fees.greater.B[3] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    //start
    else if (duration === '48' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[4];
        intRateS = intRate / 1200;
        fee = fees.less.A[4] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '48' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[4];
        intRateS = intRate / 1200;
        fee = fees.greater.A[4] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '48' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[4];
        intRateS = intRate / 1200;
        fee = fees.less.B[4] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '48' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[4];
        intRateS = intRate / 1200;
        fee = fees.greater.B[4] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    //start
    else if (duration === '60' && creditScore === 'A' && value < 75000) {
        intRate = CREDIT_RATES.A[5];
        intRateS = intRate / 1200;
        fee = fees.less.A[5] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '60' && creditScore === 'A' && value > 75000) {
        intRate = CREDIT_RATES.A[5];
        intRateS = intRate / 1200;
        fee = fees.greater.A[5] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '60' && creditScore === 'B' && value < 75000) {
        intRate = CREDIT_RATES.B[5];
        intRateS = intRate / 1200;
        fee = fees.less.B[5] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    else if (duration === '60' && creditScore === 'B' && value > 75000) {
        intRate = CREDIT_RATES.B[5];
        intRateS = intRate / 1200;
        fee = fees.greater.B[5] / 100;
        oneTime = Math.round(value * fee);
        net = value - oneTime;
        payment = value * intRateS / (1 - (Math.pow(1 / (1 + intRateS), duration)));
    }
    //end
    $('.one-time').val('$' + formatNumber(net));
    $('input.fixed-monthly-payment').val('$' + formatNumber(payment.toFixed(2)));
}

function formatNumber(num) {
    return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
}
</script>
<div id="calculator-widget">

    <div id="requested-ammount">
        <div class="requested-title">Requested<br>Loan Amount</div>
        <div class="range-ammount">
            <div class="loan-ammount">
                <p>Requested<br>Loan Amount</p>
                <span class="ammount"></span>
            </div>
            <div id="range"></div>
        </div>
    </div>

    <div id="loan-duration">
        <label for="loan-duration"> Term(yrs)</label>
        <div class="loan-items">
            <div class="state label-duration">
                <label for="duration-6">1/2</label>
                <input class="duration" type="radio" name="loan-duration" value="6" id="duration-6">
            </div>

            <div class="state label-duration">
                <label for="duration-12">1</label>
                <input class="duration" type="radio" name="loan-duration" value="12" id="duration-12">
            </div>

            <div class="state label-duration">
                <label for="duration-24">2</label>
                <input class="duration" type="radio" name="loan-duration" value="24" id="duration-24">
            </div>

            <div class="state label-duration">
                <label for="duration-36">3</label>
                <input class="duration" type="radio" name="loan-duration" value="36" id="duration-36">
            </div>

            <div class="state label-duration">
                <label for="duration-48">4</label>
                <input class="duration" type="radio" name="loan-duration" value="48" id="duration-48">
            </div>

            <div class="state label-duration">
                <label for="duration-60">5</label>
                <input class="duration" type="radio" name="loan-duration" value="60" id="duration-60">
            </div>
        </div>
    </div>

    <div id="credit-score">
        <label for="credit-score">Credit &<br>Financials</label>
        <div class="credit-items">
            <div class="state label-credit">
                <label for="B">Good</label>
                <input class="credit" type="radio" name="credit-score" id="B" value="B">
            </div>

            <div class="state label-credit">
                <label for="A">Excellent</label>
                <input class="credit" type="radio" name="credit-score" id="A" value="A">
            </div>
        </div>
    </div>

    <div class="deposited-funds">
        <label for="one-time">Deposited<br>Funds</label>
        <input type="text" placeholder="" class="one-time" name="one-time" id="one-time" readonly>
    </div>

    <div class="fixed-monthly-payment">
        <label for="fixed-monthly-payment">Fixed Monthly Payment<sup>3</sup></label>
        <input type="text" placeholder="" class="fixed-monthly-payment" id="fixed-monthly-payment" readonly>
    </div>
</div>