Guest User

Untitled

a guest
Nov 20th, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var demo = window.demo || {};
  2.  
  3. demo.attachEventHandlers = function () {
  4.     /* attach all our event handlers in this function */
  5.  
  6.     /* Attach handlers for amount */
  7.     demo.payDayLoanForm.loanValueSlide.oninput = function () {
  8.         //Update loan value text box;
  9.         demo.payDayLoanForm.loanValue.value = this.value;
  10.     };
  11.  
  12.     /* Increment and decrement handlers for loan amount*/
  13.     demo.payDayLoanForm.loanValueMinus.onclick = function (event) {
  14.         event.preventDefault();
  15.  
  16.         demo.payDayLoanForm.loanValueSlide.stepDown(1);
  17.  
  18.         demo.payDayLoanForm.loanValueSlide.oninput();
  19.     };
  20.  
  21.     demo.payDayLoanForm.loanValuePlus.onclick = function (event) {
  22.         event.preventDefault();
  23.  
  24.         demo.payDayLoanForm.loanValueSlide.stepUp(1);
  25.  
  26.         demo.payDayLoanForm.loanValueSlide.oninput();
  27.     };
  28.  
  29.     /* event handler for text box */
  30.     demo.payDayLoanForm.loanValue.onchange = function () {
  31.         demo.payDayLoanForm.loanValueSlide.value = this.value;
  32.     };
  33.  
  34.     /* Attach handlers for duration */
  35.     demo.payDayLoanForm.durationInDaysSlide.oninput = function () {
  36.         demo.payDayLoanForm.durationInDays.value = this.value;
  37.     };
  38.  
  39.     /* Increment and decrement handlers for loan duration*/
  40.     demo.payDayLoanForm.durationInDaysMinus.onclick = function (event) {
  41.         event.preventDefault();
  42.  
  43.         demo.payDayLoanForm.durationInDaysSlide.stepDown(1);
  44.  
  45.         demo.payDayLoanForm.durationInDaysSlide.oninput();
  46.     };
  47.  
  48.     demo.payDayLoanForm.durationInDaysPlus.onclick = function (event) {
  49.         event.preventDefault();
  50.  
  51.         demo.payDayLoanForm.durationInDaysSlide.stepUp(1);
  52.        
  53.         demo.payDayLoanForm.durationInDaysSlide.oninput();
  54.     };
  55.  
  56.     /* event hander for duration text box */
  57.     demo.payDayLoanForm.durationInDays.oninput = function () {
  58.         demo.payDayLoanForm.durationInDaysSlide.value = this.value;
  59.     };
  60.  
  61.     /* Form change event */
  62.     demo.payDayLoanForm.oninput = demo.payDayLoanForm.onchange = demo.payDayLoanForm.onclick = function (event) {
  63.         // if the event doesn't come from the button or input that disregard.
  64.         if (event.target.tagName !== 'BUTTON' && event.target.tagName !== 'INPUT') return;
  65.         //detect changes in the form and recalculate and update ui
  66.         var payment = demo.calculatePayment(demo.payDayLoanForm.loanValue.value, demo.payDayLoanForm.durationInDays.value);
  67.  
  68.         demo.updateUI(payment);
  69.     };
  70.  
  71.     demo.payDayLoanForm.onsubmit = function (event) {
  72.         event.preventDefault();
  73.  
  74.         alert('Submit Fired');
  75.         //If this was a real implementation, we would probably do some logic before submit.
  76.     }
  77. };
  78.  
  79. demo.updateUI = function (payment) {
  80.     /* update all our ui elements that aren't part of the form */
  81.     demo.borrowingAmountEle.innerHTML = payment.amount;
  82.     demo.interestRepaymentEle.innerHTML = payment.interest.toFixed(2);
  83.     demo.repaymentTotalEle.innerHTML = payment.total.toFixed(2);
  84.  
  85.     demo.repayMentDateEle.innerHTML = "Repayment due on: " + demo.getRepaymentDate(payment.duration);
  86. };
  87.  
  88. demo.getRepaymentDate = function (numOfDays) {
  89.     //gets final loan repayment date
  90.     return moment().add(numOfDays, 'days').format('MMMM Do YYYY');
  91. };
  92.  
  93. demo.calculatePayment = function (amount, numOfDays) {
  94.     var getInterestRateText = function () {
  95.         //get the interest rate that is injected as a form data attribute
  96.         return demo.payDayLoanForm.dataset.interestRateDaily;
  97.     },
  98.  
  99.     getInterestRate = function () {
  100.         //gets the interest rate in a form we can deal with
  101.         return parseFloat(getInterestRateText());
  102.     },
  103.  
  104.     calculateInterest = function () {
  105.         amount = parseInt(amount, 10);
  106.         numOfDays = parseInt(numOfDays, 10);
  107.  
  108.         return getInterestRate() * amount * numOfDays;
  109.     },
  110.  
  111.     calculateTotal = function () {
  112.         //calculates our total
  113.         return amount + calculateInterest();
  114.     };
  115.  
  116.     //return an object literal which has all our information about our pay day loan
  117.     return {
  118.         interest: calculateInterest(),
  119.         total: calculateTotal(),
  120.         amount: amount,
  121.         duration: numOfDays
  122.     };
  123. };
  124.  
  125. //Initialise the form and find important dom elements
  126. window.onload = function () {
  127.     demo.payDayLoanForm = document.forms[0];
  128.  
  129.     demo.repayMentDateEle = document.getElementById('repayment-date');
  130.     demo.borrowingAmountEle = document.getElementById('borrowing-amount');
  131.     demo.interestRepaymentEle = document.getElementById('interest-repayment');
  132.     demo.repaymentTotalEle = document.getElementById('repayment-total');
  133.  
  134.     demo.attachEventHandlers();
  135. };
Advertisement
Add Comment
Please, Sign In to add comment