      var loan = new Calculators.loan.Loan(0.065, 12 * 30, 100000.00);

      function plotValues(){
        var stmt = loan.getTotalStatement();
				var principal = stmt.getPrincipal();
				var interest = stmt.getInterest();

        var chart = new FusionCharts("FusionCharts/FCF_Pie3D.swf", "graphId", "240", "250");
        var dataXml = generateDataXml(principal, interest);
        chart.setDataXML(dataXml);
        chart.render("graph");
      };

      function generateDataXml(principal, interest){
        var returnXml = new Array();
        returnXml.push("<?xml version='1.0'?>\n");
        returnXml.push("<graph caption='' xAxisName='' yAxisName='' showNames='1' showValues='0' decimalPrecision='2' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0'>");
        returnXml.push("  <set name='Principal' value='" + principal.getAmount() + "' hoverText='Principal: ");
        returnXml.push(principal.formatted());
        returnXml.push("' color='afd8f8' />");
        returnXml.push("  <set name='Interest' value='");
        returnXml.push(interest.getAmount());
        returnXml.push("' hoverText='Interest: ");
        returnXml.push(interest.formatted());
        returnXml.push("' color='f6bd0f' />");
        returnXml.push("</graph>");

        return returnXml.join("");
      }

      function updateCalcs(){
        var loanAmount = parseFloat(document.getElementById("loanAmount").value.replace(/\$/g, "").replace(/,/g, ""));
        var term = document.getElementById("term").value;
        var interestRate = parseFloat(document.getElementById("interestRate").value.replace(/%/g, "")) / 100;
        var prepaymentSchedule = document.getElementById("prepaymentSchedule").value;
        var prepaymentAmount = parseFloat(document.getElementById("prepaymentAmount").value.replace(/\$/g, "").replace(/,/g, ""));
        var startPayment = parseFloat(document.getElementById("startPayment").value.replace(/\$/g, "").replace(/,/g, ""));

        var frequency = new Calculators.loan.PaymentFrequency();
				switch (prepaymentSchedule)
				{
					case "None":
						var prepayment = new Calculators.loan.Prepayment(prepaymentAmount, frequency.getPaymentFrequency(frequency.NONE), startPayment);
						break;
					case "Lumpsum":
						var prepayment = new Calculators.loan.Prepayment(prepaymentAmount, frequency.getPaymentFrequency(frequency.LUMPSUM), startPayment);
						break;
					case "Monthly":
						var prepayment = new Calculators.loan.Prepayment(prepaymentAmount, frequency.getPaymentFrequency(frequency.MONTHLY), startPayment);
						break;
					default:
						var prepayment = new Calculators.loan.Prepayment(prepaymentAmount, frequency.getPaymentFrequency(frequency.YEARLY), startPayment);
						break;
				}

        if (loanAmount != loan.getPv().getAmount() ||
            term != loan.getMonthlyNper() ||
            interestRate != loan.getRate().getAmount() ||
            Number(prepayment.getPrepayment().getAmount()) != Number(loan.getPrepayment().getPrepayment().getAmount()) ||
            String(prepayment.getSchedule()) != String(loan.getPrepayment().getSchedule()) ||
            prepayment.getStartmonth() != loan.getPrepayment().getStartmonth()) {

            loan = new Calculators.loan.Loan(interestRate, 12 * term, loanAmount, prepayment);
            calculate();
        }
      }

      function calculate(){
        var stmt = loan.getTotalStatement();
        var total = stmt.getInterest().add(stmt.getPrincipal());
        // Update the static fields
        document.getElementById("monthlyPayment").value = loan.getMonthlyPayment().formatted();
        document.getElementById("totalInterest").value = stmt.getInterest().formatted();
        document.getElementById("totalPayment").value = total.formatted();

        // Update the data entry fields (with proper formatting)
        document.getElementById("loanAmount").value = loan.getPv().formatted();
        document.getElementById("interestRate").value = loan.getRate().formatted();
        document.getElementById("prepaymentAmount").value = loan.getPrepayment().getPrepayment().formatted();
        document.getElementById("startPayment").value = loan.getPrepayment().getStartmonth();

        // Update the graph
        plotValues();
      }

      function displayReport(){
        var report = new Calculators.report.LoanReport(loan);
        var WINDOW_OPTIONS = "toolbar=no, menubar=no, resizable=yes, scrollbars=yes";
        var reportWindow = window.open("", "_new", WINDOW_OPTIONS);
        reportWindow.document.write(report.getHtmlReport());
        reportWindow.document.close();
      }


