
function LPCalc() {
  this.page = 0;
  this.dateDue = new Date();
  this.datePaid = new Date();
  this.interest = 0.0;
  this.compensation = 0.0;
  
  document.getElementById('lpcalcDate').value = this.dateAsString(this.dateDue);
  document.getElementById('lpcalcDatePaid').value = this.dateAsString(this.datePaid);
  this.showPage();
  this.setButtons();
}

LPCalc.prototype.dateAsString = function(date) {
  return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
}

LPCalc.prototype.getRate = function(date) {
  if (date >= new Date(2009, 6-1, 30)) {
    return 8.5;
  }
  else if (date >= new Date(2008, 12-1, 31)) {
    return 10;
  }
  else if (date >= new Date(2008, 6-1, 30)) {
    return 13;
  }
  else if (date >= new Date(2007, 6-1, 30)) {
    return 13.5;
  }
  else if (date >= new Date(2006, 12-1, 31)) {
    return 13.0;
  }
  else if (date >= new Date(2005, 12-1, 31)) {
    return 12.5;
  }
  else if (date >= new Date(2004, 12-1, 31)) {
    return 12.75;
  }
  else if (date >= new Date(2004, 6-1, 30)) {
    return 12.25;
  }
  else if (date >= new Date(2003, 6-1, 30)) {
    return 11.75;
  }
  else if (date >= new Date(2002, 8-1, 7)) {
    return 12.0;
  }
  else {
    return 0.0;
  }
}

LPCalc.prototype.getCompensation = function(amount) {
  if (amount >=10000.0) {
    return 100.0;
  }
  else if (amount>=1000.0) {
    return 70.0;
  }
  else {
    return 40.0;
  }
}

LPCalc.prototype.calc = function() {
  var ddmmyy  = document.getElementById('lpcalcDate').value.split('/');
  this.dateDue = new Date(ddmmyy[2],ddmmyy[1]-1,ddmmyy[0]);
  ddmmyy  = document.getElementById('lpcalcDatePaid').value.split('/');
  this.datePaid = new Date(ddmmyy[2],ddmmyy[1]-1,ddmmyy[0]);

  this.amount = 0.0;
  this.amount = parseFloat(document.getElementById('lpcalcAmount').value);
  this.compensation = this.getCompensation(this.amount);
  this.rate = this.getRate(this.dateDue);
  this.daily = (this.amount * this.rate/100)/365;
  this.interest = this.daily * (this.datePaid-this.dateDue)/(24*60*60*1000);

  document.getElementById('lpcalcPrincipal').innerHTML = '&#163;' + this.amount.toFixed(2);
  document.getElementById('lpcalcRate').innerHTML = '' + this.rate + '%';
  document.getElementById('lpcalcDaily').innerHTML = '&#163;' + this.daily.toFixed(4);
  document.getElementById('lpcalcFrom').innerHTML = this.dateAsString(this.dateDue);
  document.getElementById('lpcalcTo').innerHTML = this.dateAsString(this.datePaid);
  document.getElementById('lpcalcInterest').innerHTML = '&#163;' + this.interest.toFixed(2);
  document.getElementById('lpcalcCompensation').innerHTML = '&#163;' + this.compensation.toFixed(2);
  document.getElementById('lpcalcTotal').innerHTML = '&#163;' + (this.interest + this.compensation).toFixed(2);

  document.getElementById('lpcalcRate2').innerHTML = '' + this.rate + '%';
  document.getElementById('lpcalcDaily2').innerHTML = '&#163;' + this.daily.toFixed(4);
  document.getElementById('lpcalcFrom2').innerHTML = this.dateAsString(this.dateDue);
  document.getElementById('lpcalcTo2').innerHTML = this.dateAsString(this.datePaid);
  document.getElementById('lpcalcInterest2').innerHTML = '&#163;' + this.interest.toFixed(2);
  document.getElementById('lpcalcCompensation2').innerHTML = '&#163;' + this.compensation.toFixed(2);
  
  
  if (typeof statEvent !== 'undefined') {
    statEvent('CALC: ' + this.amount.toFixed(2));
  }
}



LPCalc.prototype.showPage = function() {
  document.getElementById('lpcalcInput').className = 'page';
  document.getElementById('lpcalcInput2').className = 'page';
  document.getElementById('lpcalcResult').className = 'page';
  document.getElementById('lpcalcCourt').className = 'page';
  document.getElementById('lpcalcWarning').className = 'page';
  switch (this.page) {
    case 0 : document.getElementById('lpcalcInput').className = 'pageVisible';
             break;
    case 1 : document.getElementById('lpcalcInput2').className = 'pageVisible';
             break;
    case 2 : document.getElementById('lpcalcResult').className = 'pageVisible';
             break;
    case 3 : document.getElementById('lpcalcCourt').className = 'pageVisible';
             break;
    case 4 : document.getElementById('lpcalcWarning').className = 'pageVisible';
             break;
  }
}

LPCalc.prototype.setButtons = function() {
  if (this.page == 0) {
    document.getElementById('lpcalcBtnBack').disabled = true;
  }
  else {
    document.getElementById('lpcalcBtnBack').disabled = false;
  }
  if (this.page >= 3) { document.getElementById('lpcalcBtnNext').disabled = true;
  }
  else {
    document.getElementById('lpcalcBtnNext').disabled = false;
  }
}

LPCalc.prototype.back = function() {
  switch (this.page) {
    case 4 :
      this.page = 0;
      break;
    default :
      this.page = this.page - 1;
      if (this.page < 0) { this.page = 0; }
      break;
  }
  this.showPage();
  this.setButtons();
}

LPCalc.prototype.next = function() {
  switch (this.page) {
    case 0 :
      if (document.getElementById('lpcalcCheck').checked) {
        this.page = 1;
      }
      else {
        this.page = 4;
      }
      break;
    case 1 :
      this.calc();
      this.page = 2;
      break;
    default :
      this.page = this.page + 1;
      if (this.page < 0) { this.page = 0; }
      if (this.page > 3) { this.page = 3; }
      break;
  }
  this.showPage();
  this.setButtons();
}



