      var payoff = new Calculators.loan.CreditCardLoan(0.1750, 24, 5000.00, 200.00, 100.00, 35.00, 0.00, 0, 0.00, 0);

      function plotValues(){
	  	var graphType = null;
	  	var graphTypeElement = document.graph_method_form.graph_method;
		for (var i=0; i<graphTypeElement.length; i++) {
			if (graphTypeElement[i].checked == true) {
			  	graphType = graphTypeElement[i].value;
			}
		}
		if (graphType == "month") {
			// Line graph
	        var chart = new FusionCharts("FusionCharts/FCF_MSLine.swf", "graphId", "500", "175");
	        var dataXml = generateMonthlyDataXml();
	        chart.setDataXML(dataXml);
	        chart.render("graph");
		}
		else if (graphType == "scenario") {
			// Bar graph
	        var chart = new FusionCharts("FusionCharts/FCF_Column3D.swf", "graphId", "500", "175");
	        var dataXml = generateScenarioDataXml();
	        chart.setDataXML(dataXml);
	        chart.render("graph");
		}
      };

      function generateMonthlyDataXml() {
        var returnXml = new Array();
        returnXml.push("<?xml version='1.0'?>\n");
        returnXml.push("<graph caption='' subcaption='' bgcolor='ffffff' formatNumberScale='0' decimalPrecision='0' animation='0' showvalues='0' showanchors='0' numberPrefix='$' yAxisMinValue='0'>");
		returnXml.push("<categories>");
		var statements = payoff.getCurrentStatements();
		for (var i = 0; i < statements.length; i++) {
			var showMarker = (i % 10) ? 0 : 1;
			returnXml.push("  <category name='" + i + "' showname='" + showMarker + "'/>");
		}
		returnXml.push("</categories>");
		returnXml.push("<dataset seriesName='Current payment' color='afd8f8'>");
		for (var i=0; i<statements.length; i++) {
			var value = payoff.getCurrentMonthlyStatement(i).getBalance().rounded();
      if (value < 1) {
        value = 1;
      }
	    returnXml.push("  <set name='" + value + "' value='" + value + "' />");
		}
		returnXml.push("</dataset>");
		
		var goalPayment = payoff.getPayoffMonthlyPaymentUsingFormulas(payoff.getPayoffGoal());
		returnXml.push("<dataset seriesName='New payment' color='f6bd0f'>");
		var goalStatements = payoff.calculateMonthlySnapshots(payoff.getPayoffGoal());
		for (var i=0; i<statements.length; i++) {
      var value = 0;
			if (i < goalStatements.length) {
        value = goalStatements[i].getBalance().rounded();
      }
      if (value < 1) {
        value = 1;
      }
		  returnXml.push("  <set value='" + value + "' />");
		}
		returnXml.push("</dataset>");
		
		
        returnXml.push("</graph>");

        return returnXml.join("");
	  }
	  
      function generateScenarioDataXml() {
        var returnXml = new Array();
        returnXml.push("<?xml version='1.0'?>\n");
        returnXml.push("<graph caption='' bgcolor='ffffff' xAxisName='' yAxisName='' showNames='1' showValues='1' decimalPrecision='0' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0'>");
        var payment = payoff.getPayoffMonthlyPaymentUsingFormulas(12);
        returnXml.push("  <set name='12 months' value='" + payment.getAmount() + "' />");
        payment = payoff.getPayoffMonthlyPaymentUsingFormulas(24);
        returnXml.push("  <set name='24 months' value='" + payment.getAmount() + "' />");
        payment = payoff.getPayoffMonthlyPaymentUsingFormulas(36);
        returnXml.push("  <set name='36 months' value='" + payment.getAmount() + "' />");
        payment = payoff.getPayoffMonthlyPaymentUsingFormulas(48);
        returnXml.push("  <set name='48 months' value='" + payment.getAmount() + "' />");
        payment = payoff.getPayoffMonthlyPaymentUsingFormulas(60);
        returnXml.push("  <set name='60 months' value='" + payment.getAmount() + "' />");
        returnXml.push("</graph>");

        return returnXml.join("");
      }
	  
      function updateCalcs(){
        var currentBalance = parseFloat(document.getElementById("current_balance").value.replace(/\$/g, "").replace(/,/g, ""));
        var monthlyPayments = parseFloat(document.getElementById("current_monthly_payments").value.replace(/\$/g, "").replace(/,/g, ""));
        var interestRate = parseFloat(document.getElementById("interest_rate").value.replace(/%/g, "")) / 100;
    		var payoffGoal = document.getElementById("payoff_goal").value;
        var monthlyCharges = parseFloat(document.getElementById("additional_monthly_charges").value.replace(/\$/g, "").replace(/,/g, ""));
        var annualFee = parseFloat(document.getElementById("annual_fee").value.replace(/\$/g, "").replace(/,/g, ""));
        var majorPurchaseAmt1 = parseFloat(document.getElementById("major_purchase_amount1").value.replace(/\$/g, "").replace(/,/g, ""));
    		var majorPurchaseMonth1 = document.getElementById("major_purchase_month1").value;
		
        if (currentBalance != payoff.getBalance().getAmount() ||
            monthlyPayments != payoff.getPayment().getAmount() ||
            interestRate != payoff.getInterestRate().getAmount() ||
            payoffGoal != payoff.getPayoffGoal() ||
            monthlyCharges != payoff.getMonthlyCharges().getAmount() ||
            annualFee != payoff.getAnnualFee().getAmount() ||
            majorPurchaseAmt1 != payoff.getMajorPurchaseAmountOne().getAmount() ||
            majorPurchaseMonth1 != payoff.getMajorPurchaseMonthOne()) {
          		payoff = new Calculators.loan.CreditCardLoan(interestRate, payoffGoal, currentBalance, monthlyPayments, monthlyCharges, annualFee, majorPurchaseAmt1, majorPurchaseMonth1, 0, 0);
              calculate();
        }
      }

      function calculate(){

		var goalPayment = payoff.getPayoffMonthlyPaymentUsingFormulas(payoff.getPayoffGoal());
		    document.getElementById("notice_header").innerHTML = "Paying " + goalPayment.formatted() + " a month will eliminate the debt in " + payoff.getPayoffGoal() + " months";
        document.getElementById("current_balance").value = payoff.getBalance().formatted();
        document.getElementById("current_monthly_payments").value = payoff.getPayment().formatted();
        document.getElementById("interest_rate").value = payoff.getInterestRate().formatted();
	    	document.getElementById("payoff_goal").value = payoff.getPayoffGoal();
        document.getElementById("additional_monthly_charges").value = payoff.getMonthlyCharges().formatted();
        document.getElementById("annual_fee").value = payoff.getAnnualFee().formatted();
        document.getElementById("major_purchase_amount1").value = payoff.getMajorPurchaseAmountOne().formatted();
	    	document.getElementById("major_purchase_month1").value = payoff.getMajorPurchaseMonthOne();

        // Update the graph
        plotValues();
      }

      function displayReport(){
        var report = new Calculators.report.CreditCardReport(payoff);
        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();
      }


