KJE.LunchSaverCalc=function(){this.NBR_PERIODS=12;this.PERC_RESULTS_FACTOR=100;this.MSG_ERROR1=KJE.parameters.get("MSG_ERROR1","Your bagged lunch cost must be less than eating out.");this.cats=null;this.DS_SAVINGS=null;this.sSchedule=new KJE.Repeating()};KJE.LunchSaverCalc.prototype.clear=function(){this.YEARS_TO_SAVE=0;this.AMT_SAVE_MONTH=0;this.ROR_INVEST=0;this.EAT_OUT_PRICE=0;this.BAGGED_PRICE=0;this.NUMBER_BAGGED=0};KJE.LunchSaverCalc.prototype.calculate=function(t){var d=KJE;var g=this.YEARS_TO_SAVE;var f=this.AMT_SAVE_MONTH;var m=this.ROR_INVEST;var l=this.EAT_OUT_PRICE;var a=this.BAGGED_PRICE;var j=this.NUMBER_BAGGED;var q=0;var s=0;var f=0;f=(l-a)*j;if(f<0){throw (this.MSG_ERROR1)}q=KJE.ROR_MONTH(m/this.PERC_RESULTS_FACTOR);s=KJE.FV_BEGIN(q,g*this.NBR_PERIODS,f);var h=Math.round(g);var o=0;this.DS_SAVINGS=KJE.FloatArray(h);this.cats=new Array(h);if(t){var e=this.sSchedule;e.clearRepeat();e.addHeader(e.sReportCol("Year",1),e.sReportCol("Lunch Savings",2),e.sReportCol("Interest",3),e.sReportCol("Savings Total",4))}var u=0;var r=0;var c=0;var b=0;var p=0;for(var k=1;k<=h;k++){o=k-1;this.cats[o]=KJE.MSG_YEAR_LBL+" "+d.number(k);u=KJE.FV_BEGIN(q,k*this.NBR_PERIODS,f);this.DS_SAVINGS[o]=(u);if(t){e.addRepeat(this.cats[o],d.dollars(this.NBR_PERIODS*f),d.dollars(u-p-this.NBR_PERIODS*f),d.dollars(u))}p=u}this.ROR_PERIOD_PERC=q;this.AMOUNT_SAVED_BTI=s;this.AMT_SAVE_MONTH=f};KJE.LunchSaverCalc.prototype.formatReport=function(b){var c=KJE;var a=this.iDecimal;var d=b;d=KJE.replace("YEARS_TO_SAVE",c.number(this.YEARS_TO_SAVE),d);d=KJE.replace("AMT_SAVE_MONTH",c.dollars(this.AMT_SAVE_MONTH,2),d);d=KJE.replace("AMT_SAVE_YEAR",c.dollars(this.AMT_SAVE_MONTH*12,2),d);d=KJE.replace("ROR_INVEST",c.percent(this.ROR_INVEST/100,2),d);d=KJE.replace("ROR_PERIOD_PERC",c.percent(this.ROR_PERIOD_PERC,2),d);d=KJE.replace("AMOUNT_SAVED_BTI",c.dollars(this.AMOUNT_SAVED_BTI),d);d=KJE.replace("EAT_OUT_PRICE",c.dollars(this.EAT_OUT_PRICE,2),d);d=KJE.replace("BAGGED_PRICE",c.dollars(this.BAGGED_PRICE,2),d);d=KJE.replace("BAGGED_SAVINGS",c.dollars(this.EAT_OUT_PRICE-this.BAGGED_PRICE,2),d);d=KJE.replace("NUMBER_BAGGED",c.number(this.NUMBER_BAGGED),d);d=d.replace("**REPEATING GROUP**",this.sSchedule.getRepeat());this.sSchedule.clearRepeat();return d};KJE.CalcName="Lunch Savings";KJE.CalcType="CITLunchSaver";KJE.CalculatorTitleTemplate="After KJE1 years you could have KJE2.";KJE.parseInputs=function(a){return a};KJE.initialize=function(){KJE.CalcControl=new KJE.LunchSaverCalc();KJE.GuiControl=new KJE.LunchSaver(KJE.CalcControl)};KJE.LunchSaver=function(h){var g=KJE;var e=KJE.gLegend;var b=KJE.inputs.items;this.bYears=false;this.bRateofReturn=false;this.MSG_GRAPH2=KJE.parameters.get("MSG_GRAPH2","Balance end of year");KJE.NumberSlider("YEARS_TO_SAVE","Years to save",1,20,0);KJE.DollarSlider("EAT_OUT_PRICE","Eating out lunch price",1,50,2,1);KJE.DollarSlider("BAGGED_PRICE","Cost of bagged lunch",1,50,2,1);KJE.InvestRateSlider("ROR_INVEST","Expected Rate of return");KJE.NumberSlider("NUMBER_BAGGED","Bagged lunches per month",1,30,0);KJE.Label("AMT_SAVE_MONTH","Monthly savings");var a=KJE.gNewGraph(KJE.gCATEGORIES,"GRAPH1",true,false,KJE.colorList[1],KJE.parameters.get("MSG_GRAPH_TITLE","Lunch Savings Totals by Year"));a._showItemLabel=true;a._showItemLabelOnTop=true;a._axisX._fSpacingPercent=0.1;a._legend.setVisible(false);a._bPopDetail=true;var f=KJE.parameters.get("MSG_DROPPER_TITLE","Lunch Inputs:");var d=KJE.parameters.get("MSG_DROPPER_CLOSETITLE","KJE1 years saving KJE2 per lunch at KJE3");var c=function(){return f+KJE.subText(KJE.getKJEReplaced(d,b.YEARS_TO_SAVE.getFormatted(),g.dollars(h.BAGGED_SAVINGS,2),b.ROR_INVEST.getFormatted(),b.NUMBER_BAGGED.getFormatted()),"KJECenter")};KJE.addDropper(new KJE.Dropper("INPUTS",true,f,c),KJE.colorList[0])};KJE.LunchSaver.prototype.setValues=function(b){var a=KJE.inputs.items;b.YEARS_TO_SAVE=a.YEARS_TO_SAVE.getValue();b.ROR_INVEST=a.ROR_INVEST.getValue();b.EAT_OUT_PRICE=a.EAT_OUT_PRICE.getValue();b.BAGGED_PRICE=a.BAGGED_PRICE.getValue();b.NUMBER_BAGGED=a.NUMBER_BAGGED.getValue()};KJE.LunchSaver.prototype.refresh=function(e){var d=KJE;var c=KJE.gLegend;var b=KJE.inputs.items;var a=KJE.gGraphs[0];KJE.setTitleTemplate(d.number(e.YEARS_TO_SAVE),d.dollars(e.AMOUNT_SAVED_BTI));a.removeAll();a.setTitleTemplate(d.number(e.YEARS_TO_SAVE));a.setGraphCategories(e.cats);if(e.DS_SAVINGS.length<5){a._showItemLabel=true}else{a._showItemLabel=false}a.add(new KJE.gGraphDataSeries(e.DS_SAVINGS,this.MSG_GRAPH2,a.getColor(1)));a.paint();b.AMT_SAVE_MONTH.setText(d.dollars(e.AMT_SAVE_MONTH,2))};KJE.InputScreenText="
**ROR_DEFINITION**
Cost of bagged lunch | BAGGED_PRICE |
---|---|
Eating out lunch price | EAT_OUT_PRICE |
Number of bagged lunches | NUMBER_BAGGED per month |
Monthly lunch savings | AMT_SAVE_MONTH |
Annual lunch savings | AMT_SAVE_YEAR |
Expected rate of return | ROR_INVEST |
Total savings after YEARS_TO_SAVE years | AMOUNT_SAVED_BTI |