      			var regularIRA = new Calculators.planning.IRA(3000.00, 0.09, 0.09, 30, 65, 15, 0.25, 0.0, false, 0.15);
			      var rothIRA = new Calculators.planning.RothIRA(3000.00, 0.09, 0.09, 30, 65, 15, 0.25, 0.0, false, 0.15);
						
            function plotValues(){
                // Line graph
                var chart = new FusionCharts("FusionCharts/FCF_Column3D.swf", "graphId", "260", "210");
                var dataXml = generateAccumulatedAtRetirementDataXml();
                chart.setDataXML(dataXml);
                chart.render("accumulations_graph");

                // Bar graph
                var chart = new FusionCharts("FusionCharts/FCF_Column3D.swf", "graphId", "260", "210");
                var dataXml = generateMonthlyIncomeDataXml();
                chart.setDataXML(dataXml);
                chart.render("income_graph");
            };
            
            function generateAccumulatedAtRetirementDataXml(){
                var regularTotal = regularIRA.getTotalAccumulatedAtRetirement().getAmount();
                var rothTotal = rothIRA.getTotalAccumulatedAtRetirement().getAmount();
                var maxValueAttribute = "";
                if ((regularTotal < 0.01) && (rothTotal < 0.01)) {
                  maxValueAttribute = "yAxisMaxValue='5'";
                }
                var returnXml = new Array();
                returnXml.push("<?xml version='1.0'?>\n");
                returnXml.push("<graph caption='Retirement Totals' bgcolor='ffffff' xAxisName='' yAxisName='' showNames='1' showValues='1' decimalPrecision='0' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0' " + maxValueAttribute + ">");
                returnXml.push("  <set name='Reg. IRA' value='" + regularTotal + "' color='f6bd0f' />");
                returnXml.push("  <set name='Roth IRA' value='" + rothTotal + "' color='afd8f8' />");
                returnXml.push("<\/graph>");
                
                return returnXml.join("");
            }
            
            function generateMonthlyIncomeDataXml(){
                var regularIncome = regularIRA.getRetirementMonthlyIncomeAfterTaxes().getAmount();
                var rothIncome = rothIRA.getRetirementMonthlyIncomeAfterTaxes().getAmount();
                var maxValueAttribute = "";
                if ((regularIncome < 0.01) && (rothIncome < 0.01)) {
                  maxValueAttribute = "yAxisMaxValue='5'";
                }
                var returnXml = new Array();
                returnXml.push("<?xml version='1.0'?>\n");
                returnXml.push("<graph caption='Monthly Income' bgcolor='ffffff' xAxisName='' yAxisName='' showNames='1' showValues='1' decimalPrecision='0' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0' " + maxValueAttribute + ">");
                returnXml.push("  <set name='Reg. IRA' value='" + regularIncome + "' color='f6bd0f' />");
                returnXml.push("  <set name='Roth IRA' value='" + rothIncome + "' color='afd8f8' />");
                returnXml.push("<\/graph>");
                
                return returnXml.join("");
            }
            
            function updateCalcs(){
                var contributions = parseFloat(document.getElementById("contributions").value.replace(/\$/g, "").replace(/,/g, ""));
                var rateOfReturn = parseFloat(document.getElementById("pre_rate_of_return").value.replace(/%/g, "")) / 100;
                var retiredRateOfReturn = parseFloat(document.getElementById("post_rate_of_return").value.replace(/%/g, "")) / 100;
                var currentAge = document.getElementById("current_age").value;
                var retirementAge = document.getElementById("retirement_age").value;
                var yearsOfRetirement = document.getElementById("years_of_retirement").value;
                var federalTaxRate = parseFloat(document.getElementById("fed_tax_rate").value.replace(/%/g, "")) / 100;
                var stateTaxRate = parseFloat(document.getElementById("state_tax_rate").value.replace(/%/g, "")) / 100;
                var includeStateTax = document.getElementById("include_state_tax").checked;
                var retirementTaxRate = parseFloat(document.getElementById("retirement_tax_rate").value.replace(/%/g, "")) / 100;
              
                if (contributions != regularIRA.getAnnualContributions().getAmount() ||
                  rateOfReturn != regularIRA.getPreRetirementRateOfReturn().getAmount() ||
                  retiredRateOfReturn != regularIRA.getRetirementRateOfReturn().getAmount() ||
                  currentAge != regularIRA.getCurrentAge() || 
                  retirementAge != regularIRA.getRetirementAge() ||
                  yearsOfRetirement != regularIRA.getYearsOfRetirement() ||
                  federalTaxRate != regularIRA.getFederalTaxRate().getAmount() ||
                  stateTaxRate != regularIRA.getStateTaxRate().getAmount() ||
                  includeStateTax != regularIRA.getIncludeStateTax().valueOf() ||
                  retirementTaxRate != regularIRA.getRetiredTaxRate().getAmount()) {
                  regularIRA = new Calculators.planning.IRA(contributions, rateOfReturn, retiredRateOfReturn, currentAge, retirementAge, yearsOfRetirement, federalTaxRate, stateTaxRate, includeStateTax, retirementTaxRate);
                  rothIRA = new Calculators.planning.RothIRA(contributions, rateOfReturn, retiredRateOfReturn, currentAge, retirementAge, yearsOfRetirement, federalTaxRate, stateTaxRate, includeStateTax, retirementTaxRate);

                  calculate();
                }
            }
            
            function calculate(){
                // Update form fields
                document.getElementById("contributions").value = regularIRA.getAnnualContributions().formatted();
                document.getElementById("pre_rate_of_return").value = regularIRA.getPreRetirementRateOfReturn().formatted();
                document.getElementById("post_rate_of_return").value = regularIRA.getRetirementRateOfReturn().formatted();
                document.getElementById("current_age").value = regularIRA.getCurrentAge();
                document.getElementById("retirement_age").value = regularIRA.getRetirementAge();
                document.getElementById("years_of_retirement").value = regularIRA.getYearsOfRetirement();
                document.getElementById("fed_tax_rate").value = regularIRA.getFederalTaxRate().formatted();
                document.getElementById("state_tax_rate").value = regularIRA.getStateTaxRate().formatted();
                document.getElementById("include_state_tax").checked = regularIRA.getIncludeStateTax().valueOf();
                document.getElementById("retirement_tax_rate").value = regularIRA.getRetiredTaxRate().formatted();

                // Update static fields
                //document.getElementById("calculated_contributions").value = regularIRA.getTotalContributions().formatted();
				
                // Update the graph
                plotValues();
            }
            
            function displayReport(){
                var report = new Calculators.report.RegularVersusRothIRAReport(regularIRA, rothIRA);
                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();
            }


