function isFloat(theNum) {
  var theLen = "";
  var thePos = "";
  var isNum  = "";
  var isDot  = "";
  var isAt   = "";
  var dotPos = "";
  
  theLen = theNum.length;
  thePos = theLen - 3;
  dotPos = theNum.indexOf(".");
  
  isNum = (isNaN(theNum)) ? false:true;
  isDot = (dotPos != -1) ? true:false;
  isAt  = (dotPos == thePos) ? true:false;
  isOne = (theNum.indexOf(".",dotPos+1) == -1) ? true:false;
  
  if((isNum) && (isDot) && (isAt) && (isOne)){
    return true;
  }
  else {
    return false;
  }
}

function formatAsMoney(mnt) {

  mnt -= 0;
  mnt  = (Math.round(mnt*100))/100;
  return (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
}

function calculate(form) {
  if(form.loanAmount.value=="" || isNaN(form.loanAmount.value) || form.loanAmount.value<=0) {
    alert("Please enter a valid loan amount");
    form.loanAmount.focus();
    return;
  }
  if(form.Apr.value=="" || isNaN(form.Apr.value) || form.Apr.value<=0) {
    alert("Please enter a valid APR");
    form.Apr.focus();
    return;
  }
  var loanAmount = form.loanAmount.value;
  var Apr        = form.Apr.value;
  var index      = form.Term.selectedIndex;
  var term       = form.Term.options[index].value;

  var rec        = 1/(1+Apr/1200);
  var repayment  = loanAmount*(1-rec)/(1-Math.pow(rec,term));

  form.repayment.value  = "£ " + formatAsMoney(repayment);
  form.totalrepay.value = "£ " + formatAsMoney(repayment * term);
  form.cost.value       = "£ " + formatAsMoney(repayment * term - loanAmount);
}

function calculate_term(form){
  if(form.loanAmount.value=="" || isNaN(form.loanAmount.value) || form.loanAmount.value<=0) {
    alert("Please enter a valid loan amount");
    form.loanAmount.focus();
    return;
  }
  if(form.Apr.value=="" || isNaN(form.Apr.value) || form.Apr.value<=0) {
    alert("Please enter a valid APR");
    form.Apr.focus();
    return;
  }

  var loanAmount = form.loanAmount.value;
  var Apr        = form.Apr.value;
  var repayment  = form.repayment.value;
  var rec        = Apr/1200;

  if(repayment < (rec * loanAmount)) {
    alert("This repayment amount will never pay off the loan");
    form.repayment.focus();
    return;
  }

  var term  = Math.log(1-loanAmount*rec/repayment)/Math.log(1 + rec) * -1;
  var years = term/12;

  form.term.value       = formatAsMoney(term);
  form.years.value      = formatAsMoney(years);
  form.totalrepay.value = "£ " + formatAsMoney(repayment * term);
  form.cost.value       = "£ " + formatAsMoney(repayment * term - loanAmount);

}
