{"version":3,"file":"retirementCalculator.js","mappings":"uBACA,WAEI,aAEAA,EAAEC,UAAUC,OAAM,WAEd,IAAIC,EAAOH,EAAEI,MA0UbC,OAAOC,KAAO,IAxUC,WAEX,IAEIC,EAFAC,EAAU,CAAC,EACXC,GAAY,EAIhBL,KAAKM,KAAO,SAAUC,GAclB,KAZAA,EAASA,GAAU,CAAC,GAYRC,SAER,OADAP,OAAOQ,QAAQC,KAAK,sDACb,GAmBf,SAAcH,GAEV,IAAII,EAAU,CACVC,QAAS,EACTC,IAAKjB,EAAE,8BAA8BkB,QAErCC,EAAY,CAERC,mBAAoB,WAEhBpB,EAAE,uBAAuBqB,KAAKC,EAAcP,EAAQE,KAEvD,EAEDM,uBAAwB,WAEpBvB,EAAE,2BAA2BqB,KAAKC,EAAcP,EAAQC,SAE3D,EAEDQ,uBAAwB,WAEpB,IACIC,EAAYzB,EAAE,aACd0B,EAAuBD,EAAUE,GAAGZ,EAAQC,QAAU,GACtDY,EAAmB5B,EAAE,kBACrB6B,OAAgF,IAAnDH,EAAqBI,KAAK,qBACvDC,EAAkBL,EAAqBI,KAAK,2BAA4B,EACxEE,EAAWC,UAAUC,UAAUC,MAAM,6CACrCC,EAAiBV,EAAqBW,KAAK,sBAAsBC,SAAS,QAE1EF,GAAkBrB,EAAQC,UAAYD,EAAQE,KAC9CS,EAAqBW,KAAK,eAAeE,QAEzCH,GAAkBrB,EAAQC,UAAYD,EAAQE,MAC9CF,EAAQC,UACRU,EAAuBD,EAAUE,GAAGZ,EAAQC,QAAU,IAG1DS,EAAUe,YAAY,QAjBRpC,KAkBNmB,yBACRG,EAAqBe,SAAS,QAE1BV,GAAmBA,IAAoBH,EAAiBP,SAExDO,EAAiBa,SAAS,QAE1BC,YAAW,WAEPd,EAAiBP,KAAKU,EAEzB,GAAE,KAEHH,EAAiBY,YAAY,SAIjCE,YAAW,WAGP,IAA2B,IAAvBb,EAA6B,CAE7B,IAAIc,EAAiBnC,EAAQoC,OAAOC,KAAKrC,GAASoC,OAAOC,KAAKrC,GAASU,OAAS,IAClDlB,EAAE,6BAER8C,QAAO,WAE3B,IAAIC,EAAQ/C,EAAEI,MACV4C,EAAuBD,EAAME,KAAK,kBAAkBC,MAAM,KAE9DlD,EAAEmD,KAAKH,GAAsB,SAAUI,GAE/BT,IAAmBK,EAAqBI,IAExCL,EAAMP,YAAY,OAMzB,GAEJ,GAEJ,CAEDd,EAAqB2B,IAAI,CAAEC,QAAS,IAE/BtB,GACDhC,EAAE,QAAS0B,GAAsB6B,OAGxC,GAAE,KAGCxC,EAAQC,OASf,EAEDwC,WAAY,WAER,IAAIC,EAASrD,KAEbD,EAAKuD,GAAG,QAAS,eAAe,WAE5B3C,EAAQE,IAAMjB,EAAE,8BAA8BkB,OAC9ClB,EAAE,uBAAuBqB,KAAKC,EAAcP,EAAQE,MACpD,IAAI0C,EAAa3D,EAAEI,MAAMwD,QAAQ,aAAavB,KAAK,4DAMnD,IA6BJ,SAA4BsB,EAAYE,GACpC,IAAIC,EAAM,KACNC,EAAM,KAEV,OAAQF,GAEJ,IAAK,QACyB,IAAtBF,EAAWzC,QACX4C,EAAM,kBACNC,EAAM,CACF,sBAAuBJ,EAAWhC,GAAG,GAAGoC,MACxC,mBAAoBJ,EAAWhC,GAAG,GAAGoC,MACrC,gBAAiBJ,EAAWhC,GAAG,GAAGoC,SAItCD,EAAMH,EAAW7B,KAAK,kBACtBiC,EAAMJ,EAAWI,OAErB,MAEJ,IAAK,KACDD,EAAMH,EAAW7B,KAAK,kBACtBiC,OAA+C,IAAjCJ,EAAW7B,KAAK,aAAgC6B,EAAW7B,KAAK,aAAe6B,EAAW7B,KAAK,oBAC7G,MAEJ,QACI,KAAM,iDAGdtB,EAAQsD,GAAO,CAAC,EAChBtD,EAAQsD,GAAOC,CAElB,CAlEGC,CAAmBL,EAoEvB,SAA0BA,GAEtB,OAAOA,EAAW,GAAGM,QAAQC,aAEhC,CAxEkCC,CAAiBR,IAEhD9C,QAAQuD,IAAIT,EAAWzC,QAEhBmD,EAAIV,EAAWzC,QAClByC,EAAWU,GAAGpB,KAAK,QACnBoB,IAEDhE,OAAOiE,YACNjE,OAAOiE,WAAWC,UACd,SACAlE,OAAOmE,SAASC,SAAW,IAAMzE,EAAE,KAAM,sBAAwBe,EAAQC,QAAU,GAAK,KAAKK,OAC7F,sBAAwBN,EAAQC,QAAU,OAASD,EAAQE,IACrC,KAArB0C,EAAWI,MAAgBJ,EAAWV,KAAK,QAAUU,EAAWI,MACjE,IAGJhD,EAAQC,UAAYD,EAAQE,KAC5BF,EAAQC,UACRyC,EAAOjC,2BAGPf,GAAY,EACZE,EAAO+D,UAAUC,wBAAwBnE,GAGzCR,EAAE,cAAc4E,OAAOC,QAAQ,CAC3BC,UAAY9E,EAAE,uBAAuB+E,SAASC,KAAOhF,EAAE,oBAAoBiF,SAAW,KACvF,KAGV,GA0CJ,EAEDC,gBAAiB,WAEblF,EAAE,aAAamD,MAAK,WAEhB,IAAIgC,EAAgBnF,EAAEI,MAEtB,SAASgF,IACLD,EAAc9C,KAAK,eAAeI,SAAS,UAC9C,CAMD0C,EAAc9C,KAAK,sBAAsBqB,GAAG,SAAS,WAC7CtD,KAAKiF,SAASC,MACdF,IALJD,EAAc9C,KAAK,eAAeG,YAAY,UASjD,IAED2C,EAAc9C,KAAK,wBAAwBqB,GAAG,SAAS,WAEvC1D,EAAEI,MAERqC,SAAS,UAAU8C,SAAS,cAAc/C,YAAY,UAC5D4C,GAEH,IAEDD,EAAc9C,KAAK,yBAAyBqB,GAAG,SAAS,WAExC1D,EAAEI,MAERqC,SAAS,UAAU+C,SAASD,SAAS,cAAclD,KAAK,SAASG,YAAY,UACnF4C,GAEH,IAEDD,EAAc9C,KAAK,gCAAgCoD,MAAM/B,GAAG,SAAS,WAErD1D,EAAEI,MAERqC,SAAS,UAAU8C,SAAS,cAAc/C,YAAY,UAC5D4C,GAEH,IAEDD,EAAc9C,KAAK,2CAA2CoD,MAAM/B,GAAG,SAAS,WAEhE1D,EAAEI,MAERqC,SAAS,UAAU8C,SAAS,cAAc/C,YAAY,UAC5D4C,GAEH,IAEDD,EAAc9C,KAAK,6CAA6CoD,MAAM/B,GAAG,SAAS,WAElE1D,EAAEI,MAERqC,SAAS,UAAU8C,SAAS,cAAc/C,YAAY,UAC5D4C,GAEH,IAEDD,EAAc9C,KAAK,4CAA4CoD,MAAM/B,GAAG,SAAS,WAEjE1D,EAAEI,MAERqC,SAAS,UAAU8C,SAAS,cAAc/C,YAAY,UAC5D4C,GAEH,GAEJ,GACJ,GAGT,IAAK,IAAIf,KAAKlD,EACNA,EAAUkD,GAAGqB,gBACbvE,EAAUkD,KAKlB,SAAS/C,EAAcqE,GAEnB,OAAOA,EAAS,EAAIA,EAAS,GAAK,IAAMA,CAE3C,CACJ,CA5SOC,CAAK5F,EAAE6F,QAAO,EAAM,CAAC,EAdL,CAChBnB,UAAW,CACPC,wBAAyB,WAExB,GAGL/D,UAAU,GAO6BD,IACvCJ,EAAkBI,EAAOC,QAEhC,EAEDR,KAAK0F,SAAW,WACZ,OAAOrF,CACV,EAEDL,KAAK2F,mBAAqB,WACtB,OAAOxF,CACV,CAkSJ,CAIJ,GAlVL,G,WCGC,WAEA,aAEAP,EAAEC,UAAUC,OAAM,WAEjB,IAAIC,EAAOH,EAAEI,MACZ4F,EAAM3F,OAAOC,KAEd,GAAK0F,EAMJ,IAAIC,EAAqBC,aAAY,WAEhCC,MAEHC,IACAC,cAAcJ,GAGf,GAAE,UAZHG,IAgBK,SAASD,IAcL,OAVGH,EAEAA,EAAID,qBAIJ1F,OAAOO,QAKb,CAEP,SAASwF,IAERjG,EAAKuD,GAAG,YAAY,SAAS4C,GAE5B,IAGCC,EAEEP,IAEFO,EAAcP,EAAIF,YANT,KAYLQ,EAAEE,UAEDD,EAmBNvG,EAAE,gCAAgCuC,QAMf,CAElB,kBAAoB,WAEnB,EAED,YAAc,WACbvC,EAAE,cAAcuC,OACD,EAED,iBAAkB,WACdvC,EAAE,cAAcuC,OACnB,EAED,WAAa,WACTvC,EAAE,cAAcuC,OACnB,EAEhB,cAAgB,WACfvC,EAAE,iBAAiBuC,OACnB,GAvCmB4D,OASrB,GAqCD,CAGD,GAtHD,G,GCHGM,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCrBAJ,EAAoBO,EAAKF,IACxB,IAAIG,EAASH,GAAUA,EAAOI,WAC7B,IAAOJ,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBU,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdR,EAAoBU,EAAI,CAACN,EAASQ,KACjC,IAAI,IAAIxD,KAAOwD,EACXZ,EAAoBa,EAAED,EAAYxD,KAAS4C,EAAoBa,EAAET,EAAShD,IAC5ElB,OAAO4E,eAAeV,EAAShD,EAAK,CAAE2D,YAAY,EAAMC,IAAKJ,EAAWxD,IAE1E,ECND4C,EAAoBa,EAAI,CAACI,EAAKC,IAAUhF,OAAOiF,UAAUnC,eAAeoC,KAAKH,EAAKC,G,gCCWjF5H,EAAEC,UAAUC,OAAM,WACjBG,OAAOC,KAAKI,KAAK,CAChBgE,UAAW,CACVC,wBAAyB,SAAUnE,GAClC,IAAK,IAAI6D,KAAK7D,EACTA,EAAQ6D,GAAGqB,gBACd1F,EACC,oCAAsCqE,EAAI,MACzCN,IAAIvD,EAAQ6D,IAIhBrE,EAAE,YAAYyC,SAAS,kBACvBzC,EAAE,yBAAyByC,SAAS,QACpCsF,+BAA+B,yBAC/BrF,YAAW,WACV1C,EAAE,yBAAyBqD,IAAI,CAAEC,QAAS,IAC1C0E,EAAcC,EAAkBzH,GAChC,GAAE,IACH,GAGFI,SAAU,oBAGXZ,EACC,sEACC0D,GAAG,uBAAuB,WAE3B,IAAIX,EAAQ/C,EAAEI,MAEb8H,EAAiBnF,EAAMgB,MAAMoE,QAAQ,KAAM,IAGxCC,MAAMC,OAAOH,KAMbA,EAAehH,OAAS,IAI3BgH,EAAiBG,OAAOH,GAAgBI,eACvC,QACA,CAAEC,sBAAuB,IAI1BxF,EAAMgB,IAAImE,GAEX,IAED,IA0VKM,EAOAC,EAjWDtI,EAAOH,EAAEI,MACTsI,EAAa1I,EAAE,gCAGnB,SAASgI,EAAcW,GACtB,IAAIC,EAAY,GAEhB5I,EAAE6I,KAAK,CACNC,IAAK,0CACLC,KAAM,OACN9F,KAAM+F,KAAKC,UAAUN,GACrBO,YAAa,mBAEbC,WAAY,WAAc,EAC1BC,QAAS,SAAUnG,GA8HrB,IAAkCoG,EAAWC,EAvGrCC,EAEAC,EACHC,EACAC,EAGAC,EAEAC,EACAC,EAKAC,EAQAC,EACAC,EAEAC,EAEGC,EAlDLtB,EAAUuB,KAAKlH,EAAKmH,0BACpBxB,EAAUuB,KAAKlH,EAAKoH,wBA4HWhB,EAzH9BT,EAyHyCU,EAxHzCtJ,EAAE,oCAAoC,GAyH7BsK,SAASC,UAAUjB,EAAY,CAC1CP,KAAM,SACNyB,cAAe,MACfC,gBAAiB,OACjBC,MAAO,UACPC,oBAAoB,EACpBC,WAAY,gBACZC,SAAU,GACVC,MAAO,OACPC,aAAa,EACbC,qBAAsB,CACrB,CACCrF,OAAQ,IACRsF,OAAQ,KAET,CACCtF,OAAQ,IACRsF,OAAQ,KAET,CACCtF,OAAQ,IACRsF,OAAQ,MAIVC,WAAY,GACZC,OAAQ,GACRC,aAAc/B,EAAU,GACxBgC,aAAc,CACbC,aAAc,QACdC,WAAY,EACZC,aAAa,GAEdC,UAAW,CACV,CACCC,GAAI,cACJC,UAAW,UACXC,UAAW,UACXC,UAAW,EACXC,SAAU,OACVC,KAAM,IACNC,aAAc,SAIhBC,WAAY,CACXC,SAAS,GAEVC,UAAW,GACXC,OAAQ,CACP,CACCC,YACC,gJACDX,GAAI,YACJY,UAAW,UACXC,cAAe,EACfC,WAAY,EACZC,WAAY,UACZC,MAAO,wBACP3D,KAAM,SACN4D,WAAY,kBACZC,gBAAiB,mBACjBC,YAAa,EACbC,WAAY,SAEb,CACCT,YACC,6HACD3B,MAAO,UACPG,SAAU,EACVa,GAAI,YACJqB,UAAW,YACXT,UAAW,UACXC,cAAe,EACfS,mBAAoB,UACpBC,kBAAmB,UACnBT,WAAY,EACZU,UAAW,EACXR,MAAO,qBACPC,WAAY,QACZC,gBAAiB,mBAGnBO,YAAa,CACZjB,SAAS,EACTkB,UAAU,EACVC,YAAa,IAEdC,gBAAiB,CAChBC,UAAW,EACXC,iBAAkB,IAClBC,mBAAoB,KAErBC,QAAS,CACRC,gBAAiB,EACjBC,UAAW,EACXC,YAAa,EACbC,kBAAmB,GACnBC,gBAAiB,GAElBC,OAAQ,CACP9B,SAAS,KAxNTlM,EAAE,4BACAiO,QACAC,QAWG1E,GAFAD,EAAIlJ,OAAO8N,aAAaC,cAEAnL,EAAKoL,qBAChC5E,EAAqBF,EAAEtG,EAAKqL,oBAC5B5E,EAAgCH,EAC/BtG,EAAKsL,+BAEN5E,EACC1G,EAAKuL,2BACN5E,EAA2C,IAAxB3G,EAAKwL,iBACxB5E,EAAsBxB,OACrBpF,EAAKyL,qBACJpG,iBAEDrF,EAAK0L,eAAerG,iBACrBwB,EACE7G,EAAKyL,oBACLzL,EAAK0L,eACN,IACI1L,EAAKyL,oBACNzL,EAAK0L,eACL,IACA,EACJ5E,EAAyC,IAAvB9G,EAAK2L,gBACvB5E,EACC/G,EAAK4L,wBACN5E,EAAoBhH,EAAK6L,kBAEtB5E,EAAO,GAEXA,GACC,uDAGAA,GADGP,EAEF,+FACAC,EACA,8CACAC,EACA,KACAC,EACEiF,QAAQ,GACR5G,QAAQ,WAAY,OACtB,oDACA4B,EACA,8BAGA,sPAGFG,GAAQ,SAERA,GACC,uDACDA,GAAQ,QACRA,GAAQ,+BACRA,GAAQ,OAASV,EAAsB,QACvCU,GAAQ,SAEPA,GADEP,EACM,8CAGA,8CAETO,GAAQ,SAERA,GAAQ,6CAERA,GAAQ,6BACRA,GAAQ,8BACRA,GAAQ,OAAST,EAAqB,aACtCS,GAAQ,SAERA,GAAQ,6BACRA,GAAQ,0CACRA,GACC,OACAR,EACA,YACDQ,GAAQ,SAERA,GAAQ,6BACRA,GAAQ,oCACRA,GACC,OAASF,EAA0B,cACpCE,GAAQ,SAERA,GAAQ,6BACRA,GAAQ,qBACRA,GAAQ,OAASD,EAAoB,cACrCC,GAAQ,SAERA,GAAQ,SACRA,GAAQ,WAtGTlK,EAAE,4BAA4BkO,OAL7B,4LA+NJ,SAAsB7E,EAAWC,GAChCjJ,OAAOiK,SAASC,UAAUjB,EAAY,CACrCP,KAAM,SACNyB,cAAe,gBACfwE,oBAAqB,UACrBC,mBAAoB,UACpBC,iBAAiB,EACjBzE,gBAAiB,OACjB0E,YAAa,UACbzE,MAAO,UACPW,aAAc,CACbC,aAAc,QACdK,UAAW,UACXC,UAAW,WAEZV,WAAY,GACZkB,OAAQ,CACP,CACCC,YAAa,uCACbG,WAAY,EACZC,WAAY,UACZf,GAAI,YACJY,UAAW,UACX8C,WAAY,SACZ1C,MAAO,qBACP3D,KAAM,SACN4D,WAAY,qBAEb,CACCN,YAAa,uCACbG,WAAY,EACZC,WAAY,UACZf,GAAI,YACJY,UAAW,UACX8C,WAAY,SACZ1C,MAAO,MACP3D,KAAM,SACN4D,WAAY,OAEb,CACCN,YAAa,uCACbG,WAAY,EACZC,WAAY,UACZf,GAAI,YACJY,UAAW,UACX8C,WAAY,SACZ1C,MAAO,oBACP3D,KAAM,SACN4D,WAAY,qBAGdxB,OAAQ,GAERM,UAAW,CACV,CACCC,GAAI,cACJ2D,UAAW,UACX1D,UAAW,UACX2D,cAAe,EACfC,UAAW,UACX3D,UAAW,UACXG,KAAM,IACNC,aAAc,SAGhBG,UAAW,GACXuB,QAAS,CAAC,EACV8B,OAAQ,CACPtD,SAAS,EACTzB,gBAAiB,UACjBC,MAAO,UACP0E,WAAY,UAEbK,OAAQ,CACP,CACC/D,GAAI,UACJgE,KAAM,GACNrO,KAAM,qBAGR+J,aAAc/B,IAIfrJ,EAAE,cACA4E,OACAC,QACA,CACCC,UACC9E,EAAE,wCAAwC+E,SACxCC,KACDhF,EAAE,oBAAoBiF,SAAW,KAEpC,IAEF,CAvTE0K,CACC1M,EAAK2M,aACL5P,EAAE,uBAAuB,GAsG1B,EACD6P,MAAO,WAAc,GAEtB,CAgPD,SAAS5H,EAAkB6H,GAqB1B,MApBiB,CAChBC,cAAe1H,OAAOyH,EAAO,mBAC7BE,cAAe3H,OAAOyH,EAAO,mBAC7BG,0BAA2B5H,OAAOyH,EAAO,uBACzCnB,eAAgBmB,EAAO,mBAEvBpB,oBAAqBoB,EAAO,wBAC5BI,uBAAwBJ,EAAO,4BAC/BK,mBAAoBL,EAAO,4BACxBzH,OACAyH,EAAO,4BAA4B3H,QAAQ,IAAK,KAC5C,IACJ,KACHiI,WACC/H,OAAOyH,EAAO,eAAe3H,QAAQ,IAAK,KAAO,IAClDsG,iBACCpG,OAAOyH,EAAO,qBAAqB3H,QAAQ,IAAK,KAAO,IACxDkI,YAAahI,OAAOyH,EAAO,IAI5B,CAtDItH,EAAc,WACjB,IAAK,IAAInE,EAAI,EAAGA,EAAIiG,SAASgG,OAAOpP,OAAQmD,IAAK,CAChD,IAAIkM,EAAQjG,SAASgG,OAAOjM,GAC5BkM,EAAMC,IAAIC,MAAMC,MAAQ,QACxBH,EAAMI,aACN,CACD,EACGlI,EAAa,WAChB,IAAK,IAAIpE,EAAI,EAAGA,EAAIiG,SAASgG,OAAOpP,OAAQmD,IAAK,CAChD,IAAIkM,EAAQjG,SAASgG,OAAOjM,GAC5BkM,EAAMC,IAAIC,MAAMC,MAAQ,OACxBH,EAAMI,aACN,CACD,EAEGtQ,OAAOuQ,YACWvQ,OAAOuQ,WAAW,SACxBC,aAAY,SAAUC,GAChCA,EAAIC,QACPvI,IAEAC,GAED,IAGFpI,OAAO2Q,cAAgBxI,EACvBnI,OAAO4Q,aAAexI,EA6BvB,IAAIhF,EAAS,CACZyN,2BAA4B,WAC3B/Q,EAAKuD,GAAG,QAASgF,GAAY,SAAUpC,GACjCtG,EAAEsG,EAAE6K,QAAQ7O,SAAS,gBAI1BI,YAAW,WACV,IAAI0O,GAAU,EACVC,EAAY,CAAC,EAEjB3I,EAAWvF,MAAK,WACf,IAAImO,EAAUtR,EAAEI,MAAM0B,KAAK,kBAK3B,GAHAuP,EAAUC,GAAW,CAAC,EACtBD,EAAUC,GAAWlR,KAAKmR,OAErBnR,KAAKiF,SAASC,MAElB,OADA8L,GAAU,GACH,CAER,IAEGA,GACHpJ,EAAcC,EAAkBoJ,GAIjC,GAAE,IACH,GACD,GAGF,IAAK,IAAIhN,KAAKZ,EACTA,EAAOY,GAAGqB,gBACbjC,EAAOY,IAGT,G","sources":["webpack://MandG/./src/js/legacy/qna.js","webpack://MandG/./src/js/legacy/tools-global.js","webpack://MandG/webpack/bootstrap","webpack://MandG/webpack/runtime/compat get default export","webpack://MandG/webpack/runtime/define property getters","webpack://MandG/webpack/runtime/hasOwnProperty shorthand","webpack://MandG/./src/js/legacy/retirement-calc.js"],"sourcesContent":["\r\n(function () {\r\n\r\n \"use strict\";\r\n\r\n $(document).ready(function () {\r\n\r\n var $doc = $(this);\r\n\r\n var qnaClass = function () {\r\n\r\n var answers = {},\r\n qnaActive = true,\r\n currentToolType;\r\n\r\n\r\n this.init = function (params) {\r\n\r\n params = params || {};\r\n\r\n var paramDefaults = {\r\n callbacks: {\r\n onFinalQuestionComplete: function () {\r\n // This method is overwritten in 'tools-global.js'.\r\n }\r\n },\r\n\r\n toolType: false\r\n };\r\n\r\n if (!params.toolType) {\r\n window.console.warn('QnA init failed. Parameter \"toolType\" is required');\r\n return false;\r\n } else {\r\n main($.extend(true, {}, paramDefaults, params));\r\n currentToolType = params.toolType;\r\n }\r\n };\r\n\r\n this.isActive = function () {\r\n return qnaActive;\r\n };\r\n\r\n this.getCurrentToolType = function () {\r\n return currentToolType;\r\n };\r\n\r\n /**\r\n *\r\n * @param params\r\n */\r\n function main(params) {\r\n\r\n var counter = {\r\n current: 1,\r\n max: $('.questions-block .question').length\r\n },\r\n qnaLoader = {\r\n\r\n setCounterMaxValue: function () {\r\n\r\n $('.counter-block .max').text(counterFormat(counter.max));\r\n\r\n },\r\n\r\n setCounterCurrentValue: function () {\r\n\r\n $('.counter-block .current').text(counterFormat(counter.current));\r\n\r\n },\r\n\r\n displayCurrentQuestion: function () {\r\n\r\n var $loader = this,\r\n $question = $('.question'),\r\n $currentQuestionElem = $question.eq(counter.current - 1),\r\n $categoryHeading = $('.section-title'),\r\n $hasMultipleChoice = (typeof $currentQuestionElem.attr('data-has-multiple') === 'undefined') ? false : true,\r\n categoryHeading = $currentQuestionElem.attr('data-category-heading') || false,\r\n isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i);\r\n var $QuestionInput = $currentQuestionElem.find('.input-block>input').hasClass(\"skip\");\r\n\r\n if ($QuestionInput && counter.current === counter.max) {\r\n $currentQuestionElem.find(\"button.next\").click();\r\n }\r\n if ($QuestionInput && counter.current !== counter.max) {\r\n counter.current++;\r\n $currentQuestionElem = $question.eq(counter.current - 1);\r\n //$currentQuestionElem.find(\"button.next\").click();\r\n }\r\n $question.removeClass('show');\r\n $loader.setCounterCurrentValue();\r\n $currentQuestionElem.addClass('show');\r\n\r\n if (categoryHeading && categoryHeading !== $categoryHeading.text()) {\r\n\r\n $categoryHeading.addClass('hide');\r\n\r\n setTimeout(function () {\r\n\r\n $categoryHeading.text(categoryHeading);\r\n\r\n }, 400);\r\n\r\n $categoryHeading.removeClass('hide');\r\n\r\n }\r\n\r\n setTimeout(function () {\r\n\r\n // New functionality for answers that have more than one option.\r\n if ($hasMultipleChoice === true) {\r\n\r\n var questionToShow = answers[Object.keys(answers)[Object.keys(answers).length - 1]],\r\n $multipleChoiceQuestion = $('.multiple-choice-question');\r\n\r\n $multipleChoiceQuestion.filter(function () {\r\n\r\n var $this = $(this),\r\n currentQuestionNames = $this.data('question-names').split(',');\r\n\r\n $.each(currentQuestionNames, function (index) {\r\n\r\n if (questionToShow === currentQuestionNames[index]) {\r\n\r\n $this.removeClass('hide');\r\n\r\n return;\r\n\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n $currentQuestionElem.css({ opacity: 1 });\r\n\r\n if (!isMobile) {\r\n $('input', $currentQuestionElem).focus();\r\n }\r\n\r\n }, 400);\r\n\r\n // If the first question is being displayed, don't scroll.\r\n if (counter.current === 1) {\r\n return;\r\n }\r\n\r\n // // Animate the scroll to desired position.\r\n // $('html, body').stop().animate({\r\n // scrollTop: ($('.QA-main .content-block-60').offset().top - ($('.header.headroom').height() + 10))\r\n // }, 400);\r\n\r\n },\r\n\r\n nextButton: function () {\r\n\r\n var loader = this;\r\n\r\n $doc.on('click', 'button.next', function () {\r\n\r\n counter.max = $('.questions-block .question').length;\r\n $('.counter-block .max').text(counterFormat(counter.max));\r\n var $inputElem = $(this).closest('.question').find('.question-controls input, .question-controls .icon-group');\r\n\r\n storeCurrentAnswer($inputElem, getInputElemType($inputElem));\r\n\r\n console.log($inputElem.length);\r\n\r\n while (i < $inputElem.length) {\r\n $inputElem[i].data('goal');\r\n i++;\r\n }\r\n if(window.gaTracking){\r\n window.gaTracking.sendEvent(\r\n 'submit',\r\n window.location.pathname + '/' + $('h2', '.question-text:eq(' + (counter.current - 1) + ')').text(),\r\n 'Completed question ' + counter.current + ' of ' + counter.max,\r\n ($inputElem.val() === '') ? $inputElem.data('goal') : $inputElem.val(),\r\n ''\r\n );\r\n }\r\n if (counter.current !== counter.max) {\r\n counter.current++;\r\n loader.displayCurrentQuestion();\r\n } else {\r\n\r\n qnaActive = false;\r\n params.callbacks.onFinalQuestionComplete(answers);\r\n\r\n // Animate the scroll to desired position.\r\n $('html, body').stop().animate({\r\n scrollTop: ($('.result-chart-block').offset().top - ($('.header.headroom').height() + 10))\r\n }, 400);\r\n\r\n }\r\n });\r\n\r\n function storeCurrentAnswer($inputElem, elemType) {\r\n var key = null,\r\n val = null;\r\n\r\n switch (elemType) {\r\n\r\n case 'input':\r\n if ($inputElem.length === 3) {\r\n key = 'education-costs';\r\n val = {\r\n 'primary-school-cost': $inputElem.eq(0).val(),\r\n 'high-school-cost': $inputElem.eq(1).val(),\r\n 'tertiary-cost': $inputElem.eq(2).val(),\r\n };\r\n }\r\n else {\r\n key = $inputElem.attr('data-prepop-id');\r\n val = $inputElem.val();\r\n }\r\n break;\r\n\r\n case 'ul':\r\n key = $inputElem.attr('data-prepop-id');\r\n val = (typeof $inputElem.attr('data-goal') !== \"undefined\") ? $inputElem.attr('data-goal') : $inputElem.attr('data-selected-id');\r\n break;\r\n\r\n default:\r\n throw '\"elemType\" is not defined on switch statement.';\r\n }\r\n\r\n answers[key] = {};\r\n answers[key] = val;\r\n\r\n }\r\n\r\n function getInputElemType($inputElem) {\r\n\r\n return $inputElem[0].tagName.toLowerCase();\r\n\r\n }\r\n },\r\n\r\n inputValidation: function () {\r\n\r\n $('.question').each(function () {\r\n\r\n var $questionElem = $(this);\r\n\r\n function showNextButton() {\r\n $questionElem.find(\"button.next\").addClass(\"enabled\");\r\n }\r\n\r\n function hideNextButton() {\r\n $questionElem.find('button.next').removeClass('enabled');\r\n }\r\n\r\n $questionElem.find('.input-block input').on('keyup', function () {\r\n if (this.validity.valid) {\r\n showNextButton();\r\n } else {\r\n hideNextButton();\r\n }\r\n });\r\n\r\n $questionElem.find('.choose-your-goal li').on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').siblings('.goal-icon').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n $questionElem.find('.radio-group li label').on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').parent().siblings('.goal-icon').find('label').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n $questionElem.find('.icon-group.dropdown-menu li').off().on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').siblings('.goal-icon').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n $questionElem.find('.icon-group.select-tax.dropdown-menu li').off().on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').siblings('.goal-icon').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n $questionElem.find('.icon-group.select-month.dropdown-menu li').off().on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').siblings('.goal-icon').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n $questionElem.find('.icon-group.select-year.dropdown-menu li').off().on('click', function () {\r\n\r\n var $this = $(this);\r\n\r\n $this.addClass('active').siblings('.goal-icon').removeClass('active');\r\n showNextButton();\r\n\r\n });\r\n\r\n });\r\n }\r\n };\r\n\r\n for (var i in qnaLoader) {\r\n if (qnaLoader[i].hasOwnProperty) {\r\n qnaLoader[i]();\r\n }\r\n }\r\n\r\n\r\n function counterFormat(number) {\r\n\r\n return number > 9 ? number + '' : '0' + number;\r\n\r\n }\r\n }\r\n };\r\n\r\n window._QnA = new qnaClass();\r\n\r\n });\r\n\r\n})();\r\n","/*\r\n * We will use a self executing/anonomous function to protect the private variables and methods.\r\n * We also add the ; incase a the previous code has not been closed off when we concatenate our source code later for production.\r\n */\r\n;(function() {\r\n\r\n\t\"use strict\";\r\n\t\r\n\t$(document).ready(function() {\r\n\r\n\t\tvar $doc = $(this),\r\n\t\t\tqna = window._QnA;\r\n\t\t\r\n\t\tif (!qna) {\r\n\r\n\t\t\tapplyToolGlobalCode();\r\n\r\n\t\t} else {\r\n\r\n\t\t\tvar w_qnaToolTypeCheck = setInterval(function() {\r\n\r\n\t\t\t\tif (getToolType()) {\r\n\r\n\t\t\t\t\tapplyToolGlobalCode();\r\n\t\t\t\t\tclearInterval(w_qnaToolTypeCheck);\r\n\r\n\t\t\t\t}\r\n\t\t\t}, 200);\r\n\r\n\t\t}\r\n\r\n function getToolType() {\r\n\r\n var toolType = null;\r\n\r\n if(qna) {\r\n\r\n\t\t\t\ttoolType = qna.getCurrentToolType();\r\n\r\n } else {\r\n\r\n\t\t\t\ttoolType = window.toolType;\r\n\r\n }\r\n\r\n return toolType;\r\n }\r\n\r\n\t\tfunction applyToolGlobalCode() {\r\n\r\n\t\t\t$doc.on(\"keypress\", function(e) {\r\n\r\n\t\t\t\tvar keycodes = {\r\n\t\t\t\t\t\tenter : 13\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisQnaActive;\r\n\r\n\t\t\t\tif(qna) {\r\n\r\n\t\t\t\t\tisQnaActive = qna.isActive();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction keyCheckHandler() {\r\n\r\n\t\t\t\t\tif (e.keyCode === keycodes.enter) {\r\n\r\n\t\t\t\t\t\tif (isQnaActive) {\r\n\r\n\t\t\t\t\t\t\tqnaControlHandler();\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\ttoolControlHandler(getToolType());\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeyCheckHandler();\r\n\r\n\t\t\t});\r\n\r\n\t\t\tfunction qnaControlHandler() {\r\n\r\n\t\t\t\t$(\".question.show .next.enabled\").click();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction toolControlHandler(tooltype) {\r\n\r\n\t\t\t\tvar tooltypeList = {\r\n\r\n\t\t\t\t\t\"retirement-calc\" : function() {\r\n\t\t\t\t\t\t// Currently we don't use this but it is here for future usages.\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\"goal-calc\" : function() {\r\n\t\t\t\t\t\t$(\".calculate\").click();\r\n },\r\n\r\n \"education-calc\": function () {\r\n $(\".calculate\").click();\r\n },\r\n\r\n \"tax-free\" : function() {\r\n $(\".calculate\").click();\r\n },\r\n\r\n\t\t\t\t\t\"fund-picker\" : function() {\r\n\t\t\t\t\t\t$(\".lookup-funds\").click();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\ttooltypeList[tooltype]();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// END: applyToolGlobalCode();\r\n\r\n\t});\r\n\t// End : Document.ready();\r\n\r\n})();\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import \"/src/css/legacy/retirement-calc.css\";\r\nimport \"/src/css/legacy/funds.css\";\r\n\r\nimport \"/src/js/legacy/qna.js\";\r\nimport \"/src/js/legacy/tools-global.js\";\r\n\r\n\r\n// Retirement Calc - UI Block\r\n(function () {\r\n\t\"use strict\";\r\n\r\n\t$(document).ready(function () {\r\n\t\twindow._QnA.init({\r\n\t\t\tcallbacks: {\r\n\t\t\t\tonFinalQuestionComplete: function (answers) {\r\n\t\t\t\t\tfor (var i in answers) {\r\n\t\t\t\t\t\tif (answers[i].hasOwnProperty) {\r\n\t\t\t\t\t\t\t$(\r\n\t\t\t\t\t\t\t\t\".row-input input[data-prepop-id='\" + i + \"']\"\r\n\t\t\t\t\t\t\t).val(answers[i]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(\".content\").addClass(\"show-calc-tool\");\r\n\t\t\t\t\t$(\".retirement-calc-main\").addClass(\"show\");\r\n\t\t\t\t\tsendFacebookToolCompletedEvent('Retirement Calculator');\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$(\".retirement-calc-main\").css({ opacity: 1 });\r\n\t\t\t\t\t\tisValidSubmit(getCalcInputModel(answers));\r\n\t\t\t\t\t}, 400);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\ttoolType: \"retirement-calc\"\r\n\t\t});\r\n\r\n\t\t$(\r\n\t\t\t\".starting-salary, .monthly-contribution, .current-investment-value\"\r\n\t\t).on(\"keyup keydown paste\", function () {\r\n\t\t\t// Get a jQuery reference to the current DOM object.\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t// Get a clean string without any comma seperators.\r\n\t\t\t\tstrippedNumber = $this.val().replace(/,/g, \"\");\r\n\r\n\t\t\t// If the number is polluted with other characters...\r\n\t\t\tif (isNaN(Number(strippedNumber))) {\r\n\t\t\t\t// ...Go no further.\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If the string is at least in the thousands...\r\n\t\t\tif (strippedNumber.length > 3) {\r\n\t\t\t\t// Add the en-US local which by default seperates thousnads, millions etc...\r\n\t\t\t\t// More info here : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\r\n\t\t\t\t// Supports these browsers : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Browser_compatibility\r\n\t\t\t\tstrippedNumber = Number(strippedNumber).toLocaleString(\r\n\t\t\t\t\t\"en-US\",\r\n\t\t\t\t\t{ minimumFractionDigits: 0 }\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Add the newly formatted string to the DOM.\r\n\t\t\t\t$this.val(strippedNumber);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar $doc = $(this);\r\n\t\tvar $rowInputs = $(\".row-input input.chart-input\");\r\n\t\tvar chart;\r\n\r\n\t\tfunction isValidSubmit(inputData) {\r\n\t\t\tvar chartData = [];\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: \"/api/services/GetRetirementCalculations\",\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tdata: JSON.stringify(inputData),\r\n\t\t\t\tcontentType: \"application/json\",\r\n\r\n\t\t\t\tbeforeSend: function () {},\r\n\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\tchartData.push(data.InvestmentValueGraphData);\r\n\t\t\t\t\tchartData.push(data.RetirementAgeGraphData);\r\n\r\n\t\t\t\t\tplotInvestmentValueGraph(\r\n\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t$(\".chartdiv.investment-value-graph\")[0]\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tvar buttonHTML =\r\n\t\t\t\t\t\t\"
Invest now
\";\r\n\r\n\t\t\t\t\t$(\".chart-summary-container\")\r\n\t\t\t\t\t\t.empty()\r\n\t\t\t\t\t\t.append(calcSummaryHTML());\r\n\t\t\t\t\t$(\".chart-summary-container\").append(buttonHTML);\r\n\r\n\t\t\t\t\tplotTaxGraph(\r\n\t\t\t\t\t\tdata.TaxGraphData,\r\n\t\t\t\t\t\t$(\".chartdiv.tax-graph\")[0]\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tfunction calcSummaryHTML() {\r\n\t\t\t\t\t\tvar f = window.formatNumber.toRandFormat;\r\n\r\n\t\t\t\t\t\tvar savingsAtRetirement = f(data.SavingsAtRetirement),\r\n\t\t\t\t\t\t\tsalaryAtRetirement = f(data.SalaryAtRetirement),\r\n\t\t\t\t\t\t\tsalaryReplacementAtRetirement = f(\r\n\t\t\t\t\t\t\t\tdata.SalaryReplacementAtRetirement\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\tcanRetireInPlannedTimespan =\r\n\t\t\t\t\t\t\t\tdata.CanRetireInPlannedTimespan,\r\n\t\t\t\t\t\t\treplacementRatio = data.ReplacementRatio * 100,\r\n\t\t\t\t\t\t\tmonthlyContribution = Number(\r\n\t\t\t\t\t\t\t\tdata.MonthlyContribution\r\n\t\t\t\t\t\t\t).toLocaleString(),\r\n\t\t\t\t\t\t\tstartingSalary =\r\n\t\t\t\t\t\t\t\tdata.StartingSalary.toLocaleString(),\r\n\t\t\t\t\t\t\tsavingPercentage =\r\n\t\t\t\t\t\t\t\t(data.MonthlyContribution /\r\n\t\t\t\t\t\t\t\t\tdata.StartingSalary) *\r\n\t\t\t\t\t\t\t\t100\r\n\t\t\t\t\t\t\t\t\t? (data.MonthlyContribution /\r\n\t\t\t\t\t\t\t\t\t\t\tdata.StartingSalary) *\r\n\t\t\t\t\t\t\t\t\t 100\r\n\t\t\t\t\t\t\t\t\t: 0,\r\n\t\t\t\t\t\t\trealReturnRatio = data.RealReturnRatio * 100,\r\n\t\t\t\t\t\t\tplannedTimeInRetirement =\r\n\t\t\t\t\t\t\t\tdata.PlannedTimeInRetirement,\r\n\t\t\t\t\t\t\tyearsInRetirement = data.YearsInRetirement;\r\n\r\n\t\t\t\t\t\tvar html = \"\";\r\n\r\n\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\"
\";\r\n\r\n\t\t\t\t\t\tif (canRetireInPlannedTimespan) {\r\n\t\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\t\"

Your current plan will allow you the required time in retirement. A \" +\r\n\t\t\t\t\t\t\t\treplacementRatio +\r\n\t\t\t\t\t\t\t\t\"% replacement ratio is possible by saving R\" +\r\n\t\t\t\t\t\t\t\tmonthlyContribution +\r\n\t\t\t\t\t\t\t\t\" (\" +\r\n\t\t\t\t\t\t\t\tsavingPercentage\r\n\t\t\t\t\t\t\t\t\t.toFixed(2)\r\n\t\t\t\t\t\t\t\t\t.replace(\"Infinity\", \"0.0\") +\r\n\t\t\t\t\t\t\t\t\"% of your salary) each month at a real return of \" +\r\n\t\t\t\t\t\t\t\trealReturnRatio +\r\n\t\t\t\t\t\t\t\t\"% for the planned term.

\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\t\"

Unfortunately, your current plan will NOT allow you the required time in retirement as you will run out of retirement savings. You will need to adjust your plan to be able to meet your expected time in retirement.

\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\"
\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"

Savings at retirement

\";\r\n\t\t\t\t\t\thtml += \"

\" + savingsAtRetirement + \"

\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\tif(canRetireInPlannedTimespan){\r\n\t\t\t\t\t\t\thtml += \"\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\thtml += \"\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"

Salary at retirement

\";\r\n\t\t\t\t\t\thtml += \"

\" + salaryAtRetirement + \" p.m.

\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"

Salary Replacement in Retirement

\";\r\n\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\"

\" +\r\n\t\t\t\t\t\t\tsalaryReplacementAtRetirement +\r\n\t\t\t\t\t\t\t\" p.m

\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"

Planned time in retirement

\";\r\n\t\t\t\t\t\thtml +=\r\n\t\t\t\t\t\t\t\"

\" + plannedTimeInRetirement + \" Years

\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"

Actual time

\";\r\n\t\t\t\t\t\thtml += \"

\" + yearsInRetirement + \" Years

\";\r\n\t\t\t\t\t\thtml += \"
\";\r\n\r\n\t\t\t\t\t\thtml += \"
\";\r\n\t\t\t\t\t\thtml += \"\";\r\n\r\n\t\t\t\t\t\treturn html;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: function () {}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction plotInvestmentValueGraph(graphData, targetElem) {\r\n\t\t\tvar chart = AmCharts.makeChart(targetElem, {\r\n\t\t\t\ttype: \"serial\",\r\n\t\t\t\tcategoryField: \"Age\",\r\n\t\t\t\tbackgroundColor: \"#fff\",\r\n\t\t\t\tcolor: \"#2f2f2f\",\r\n\t\t\t\tsequencedAnimation: false,\r\n\t\t\t\tfontFamily: \"InfraSemibold\",\r\n\t\t\t\tfontSize: 12,\r\n\t\t\t\ttheme: \"dark\",\r\n\t\t\t\tusePrefixes: true,\r\n\t\t\t\tprefixesOfBigNumbers: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnumber: 1000,\r\n\t\t\t\t\t\tprefix: \"K\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnumber: 1000000,\r\n\t\t\t\t\t\tprefix: \"M\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnumber: 1000000000,\r\n\t\t\t\t\t\tprefix: \"B\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\r\n\t\t\t\ttrendLines: [],\r\n\t\t\t\tguides: [],\r\n\t\t\t\tdataProvider: graphData[0],\r\n\t\t\t\tcategoryAxis: {\r\n\t\t\t\t\tgridPosition: \"start\",\r\n\t\t\t\t\tdashLength: 1,\r\n\t\t\t\t\tstartOnAxis: true\r\n\t\t\t\t},\r\n\t\t\t\tvalueAxes: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"ValueAxis-1\",\r\n\t\t\t\t\t\taxisColor: \"#2f2f2f\",\r\n\t\t\t\t\t\tgridColor: \"#2f2f2f\",\r\n\t\t\t\t\t\taxisAlpha: 1,\r\n\t\t\t\t\t\tposition: \"left\",\r\n\t\t\t\t\t\tunit: \"R\",\r\n\t\t\t\t\t\tunitPosition: \"left\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\r\n\t\t\t\tresponsive: {\r\n\t\t\t\t\tenabled: true\r\n\t\t\t\t},\r\n\t\t\t\tallLabels: [],\r\n\t\t\t\tgraphs: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tballoonText:\r\n\t\t\t\t\t\t\t\"
[[title]], age [[category]]: R[[value]]
\",\r\n\t\t\t\t\t\tid: \"AmGraph-1\",\r\n\t\t\t\t\t\tlineColor: \"#65b4e5\",\r\n\t\t\t\t\t\tlineThickness: 1,\r\n\t\t\t\t\t\tfillAlphas: 1,\r\n\t\t\t\t\t\tfillColors: \"#65b4e5\",\r\n\t\t\t\t\t\ttitle: \"Savings at Retirement\",\r\n\t\t\t\t\t\ttype: \"column\",\r\n\t\t\t\t\t\tvalueField: \"BreakpointValue\",\r\n\t\t\t\t\t\tdashLengthField: \"dashLengthColumn\",\r\n\t\t\t\t\t\tcolumnWidth: 0,\r\n\t\t\t\t\t\talphaField: \"alpha\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tballoonText:\r\n\t\t\t\t\t\t\t\"
[[title]] at [[category]]: R[[value]]
\",\r\n\t\t\t\t\t\tcolor: \"#DB6363\",\r\n\t\t\t\t\t\tfontSize: 0,\r\n\t\t\t\t\t\tid: \"AmGraph-2\",\r\n\t\t\t\t\t\tlabelText: \"[[value]]\",\r\n\t\t\t\t\t\tlineColor: \"#055a60\",\r\n\t\t\t\t\t\tlineThickness: 2,\r\n\t\t\t\t\t\tnegativeFillColors: \"#b70707\",\r\n\t\t\t\t\t\tnegativeLineColor: \"#b70707\",\r\n\t\t\t\t\t\tfillAlphas: 0,\r\n\t\t\t\t\t\tlineAlpha: 1,\r\n\t\t\t\t\t\ttitle: \"Retirement Savings\",\r\n\t\t\t\t\t\tvalueField: \"Funds\",\r\n\t\t\t\t\t\tdashLengthField: \"dashLengthLine\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tchartCursor: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t\tzoomable: false,\r\n\t\t\t\t\tcursorAlpha: 0.2\r\n\t\t\t\t},\r\n\t\t\t\tnumberFormatter: {\r\n\t\t\t\t\tprecision: 2,\r\n\t\t\t\t\tdecimalSeparator: \".\",\r\n\t\t\t\t\tthousandsSeparator: \",\"\r\n\t\t\t\t},\r\n\t\t\t\tballoon: {\r\n\t\t\t\t\tborderThickness: 2,\r\n\t\t\t\t\tfillAlpha: 1,\r\n\t\t\t\t\tshadowAlpha: 0,\r\n\t\t\t\t\thorizontalPadding: 10,\r\n\t\t\t\t\tverticalPadding: 8\r\n\t\t\t\t},\r\n\t\t\t\texport: {\r\n\t\t\t\t\tenabled: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction plotTaxGraph(graphData, targetElem) {\r\n\t\t\twindow.AmCharts.makeChart(targetElem, {\r\n\t\t\t\ttype: \"serial\",\r\n\t\t\t\tcategoryField: \"GraphCategory\",\r\n\t\t\t\tplotAreaBorderColor: \"#B86C6C\",\r\n\t\t\t\tplotAreaFillColors: \"#B86C6C\",\r\n\t\t\t\tgridAboveGraphs: true,\r\n\t\t\t\tbackgroundColor: \"#fff\",\r\n\t\t\t\tborderColor: \"#FFFFFF\",\r\n\t\t\t\tcolor: \"#C87A7A\",\r\n\t\t\t\tcategoryAxis: {\r\n\t\t\t\t\tgridPosition: \"start\",\r\n\t\t\t\t\taxisColor: \"#B86C6C\",\r\n\t\t\t\t\tgridColor: \"#B86C6C\"\r\n\t\t\t\t},\r\n\t\t\t\ttrendLines: [],\r\n\t\t\t\tgraphs: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tballoonText: \"[[title]] of [[category]]:R[[value]]\",\r\n\t\t\t\t\t\tfillAlphas: 1,\r\n\t\t\t\t\t\tfillColors: \"#d61e1e\",\r\n\t\t\t\t\t\tid: \"AmGraph-1\",\r\n\t\t\t\t\t\tlineColor: \"#d61e1e\",\r\n\t\t\t\t\t\tmarkerType: \"circle\",\r\n\t\t\t\t\t\ttitle: \"Retirement Savings\",\r\n\t\t\t\t\t\ttype: \"column\",\r\n\t\t\t\t\t\tvalueField: \"RetirementSavings\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tballoonText: \"[[title]] of [[category]]:R[[value]]\",\r\n\t\t\t\t\t\tfillAlphas: 1,\r\n\t\t\t\t\t\tfillColors: \"#B70707\",\r\n\t\t\t\t\t\tid: \"AmGraph-2\",\r\n\t\t\t\t\t\tlineColor: \"#B70707\",\r\n\t\t\t\t\t\tmarkerType: \"circle\",\r\n\t\t\t\t\t\ttitle: \"Tax\",\r\n\t\t\t\t\t\ttype: \"column\",\r\n\t\t\t\t\t\tvalueField: \"Tax\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tballoonText: \"[[title]] of [[category]]:R[[value]]\",\r\n\t\t\t\t\t\tfillAlphas: 1,\r\n\t\t\t\t\t\tfillColors: \"#800808\",\r\n\t\t\t\t\t\tid: \"AmGraph-3\",\r\n\t\t\t\t\t\tlineColor: \"#800808\",\r\n\t\t\t\t\t\tmarkerType: \"circle\",\r\n\t\t\t\t\t\ttitle: \"Disposable Income\",\r\n\t\t\t\t\t\ttype: \"column\",\r\n\t\t\t\t\t\tvalueField: \"DisposableIncome\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tguides: [],\r\n\r\n\t\t\t\tvalueAxes: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"ValueAxis-1\",\r\n\t\t\t\t\t\tstackType: \"regular\",\r\n\t\t\t\t\t\taxisColor: \"#B86C6C\",\r\n\t\t\t\t\t\taxisThickness: 0,\r\n\t\t\t\t\t\tfillColor: \"#C87A7A\",\r\n\t\t\t\t\t\tgridColor: \"#C87A7A\",\r\n\t\t\t\t\t\tunit: \"R\",\r\n\t\t\t\t\t\tunitPosition: \"left\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tallLabels: [],\r\n\t\t\t\tballoon: {},\r\n\t\t\t\tlegend: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t\tbackgroundColor: \"#C87A7A\",\r\n\t\t\t\t\tcolor: \"#C87A7A\",\r\n\t\t\t\t\tmarkerType: \"circle\"\r\n\t\t\t\t},\r\n\t\t\t\ttitles: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"Title-1\",\r\n\t\t\t\t\t\tsize: 15,\r\n\t\t\t\t\t\ttext: \"Retirement Chart\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tdataProvider: graphData\r\n\t\t\t});\r\n\r\n\t\t\t// Animate the scroll to desired position.\r\n\t\t\t$(\"html, body\")\r\n\t\t\t\t.stop()\r\n\t\t\t\t.animate(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tscrollTop:\r\n\t\t\t\t\t\t\t$(\".content-block-60.result-chart-block\").offset()\r\n\t\t\t\t\t\t\t\t.top -\r\n\t\t\t\t\t\t\t($(\".header.headroom\").height() + 10)\r\n\t\t\t\t\t},\r\n\t\t\t\t\t400\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Resizes the graph on print\r\n\t\t(function () {\r\n\t\t\tvar beforePrint = function () {\r\n\t\t\t\tfor (var i = 0; i < AmCharts.charts.length; i++) {\r\n\t\t\t\t\tvar chart = AmCharts.charts[i];\r\n\t\t\t\t\tchart.div.style.width = \"800px\";\r\n\t\t\t\t\tchart.validateNow();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tvar afterPrint = function () {\r\n\t\t\t\tfor (var i = 0; i < AmCharts.charts.length; i++) {\r\n\t\t\t\t\tvar chart = AmCharts.charts[i];\r\n\t\t\t\t\tchart.div.style.width = \"100%\";\r\n\t\t\t\t\tchart.validateNow();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tif (window.matchMedia) {\r\n\t\t\t\tvar mediaQueryList = window.matchMedia(\"print\");\r\n\t\t\t\tmediaQueryList.addListener(function (mql) {\r\n\t\t\t\t\tif (mql.matches) {\r\n\t\t\t\t\t\tbeforePrint();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tafterPrint();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\twindow.onbeforeprint = beforePrint;\r\n\t\t\twindow.onafterprint = afterPrint;\r\n\t\t})();\r\n\r\n\t\tfunction isInvalid() {}\r\n\r\n\t\tfunction getCalcInputModel(inputs) {\r\n\t\t\tvar inputModel = {\r\n\t\t\t\tInvestmentAge: Number(inputs[\"investment-age\"]),\r\n\t\t\t\tRetirementAge: Number(inputs[\"retirement-age\"]),\r\n\t\t\t\tRequiredYearsInRetirement: Number(inputs[\"time-in-retirement\"]),\r\n\t\t\t\tStartingSalary: inputs[\"starting-salary\"],\r\n\t\t\t\t//MonthlyContribution: inputs[\"monthly-contribution\"],\r\n\t\t\t\tMonthlyContribution: inputs[\"monthly-contribution\"],\r\n\t\t\t\tCurrentInvestmentValue: inputs[\"current-investment-value\"],\r\n\t\t\t\tProjectedInflation: inputs[\"projected-inflation-rate\"]\r\n\t\t\t\t\t? Number(\r\n\t\t\t\t\t\t\tinputs[\"projected-inflation-rate\"].replace(\"%\", \"\")\r\n\t\t\t\t\t ) / 100\r\n\t\t\t\t\t: 0.055,\r\n\t\t\t\tRealReturn:\r\n\t\t\t\t\tNumber(inputs[\"real-return\"].replace(\"%\", \"\")) / 100,\r\n\t\t\t\tReplacementRatio:\r\n\t\t\t\t\tNumber(inputs[\"replacement-ratio\"].replace(\"%\", \"\")) / 100,\r\n\t\t\t\tThirdInCash: Number(inputs[0]) //ThirdInCash: Number(inputs[\"third-in-cash\"])\r\n\t\t\t};\r\n\r\n\t\t\treturn inputModel;\r\n\t\t}\r\n\r\n\t\tvar loader = {\r\n\t\t\trowInputValidationOnChange: function () {\r\n\t\t\t\t$doc.on(\"keyup\", $rowInputs, function (e) {\r\n\t\t\t\t\tif (!$(e.target).hasClass(\"chart-input\")) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tvar isValid = true;\r\n\t\t\t\t\t\tvar inputVals = {};\r\n\r\n\t\t\t\t\t\t$rowInputs.each(function () {\r\n\t\t\t\t\t\t\tvar inputID = $(this).attr(\"data-prepop-id\");\r\n\r\n\t\t\t\t\t\t\tinputVals[inputID] = {};\r\n\t\t\t\t\t\t\tinputVals[inputID] = this.value;\r\n\r\n\t\t\t\t\t\t\tif (!this.validity.valid) {\r\n\t\t\t\t\t\t\t\tisValid = false;\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (isValid) {\r\n\t\t\t\t\t\t\tisValidSubmit(getCalcInputModel(inputVals));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tisInvalid();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 200);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfor (var i in loader) {\r\n\t\t\tif (loader[i].hasOwnProperty) {\r\n\t\t\t\tloader[i]();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n})();\r\n"],"names":["$","document","ready","$doc","this","window","_QnA","currentToolType","answers","qnaActive","init","params","toolType","console","warn","counter","current","max","length","qnaLoader","setCounterMaxValue","text","counterFormat","setCounterCurrentValue","displayCurrentQuestion","$question","$currentQuestionElem","eq","$categoryHeading","$hasMultipleChoice","attr","categoryHeading","isMobile","navigator","userAgent","match","$QuestionInput","find","hasClass","click","removeClass","addClass","setTimeout","questionToShow","Object","keys","filter","$this","currentQuestionNames","data","split","each","index","css","opacity","focus","nextButton","loader","on","$inputElem","closest","elemType","key","val","storeCurrentAnswer","tagName","toLowerCase","getInputElemType","log","i","gaTracking","sendEvent","location","pathname","callbacks","onFinalQuestionComplete","stop","animate","scrollTop","offset","top","height","inputValidation","$questionElem","showNextButton","validity","valid","siblings","parent","off","hasOwnProperty","number","main","extend","isActive","getCurrentToolType","qna","w_qnaToolTypeCheck","setInterval","getToolType","applyToolGlobalCode","clearInterval","e","isQnaActive","keyCode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","prototype","call","sendFacebookToolCompletedEvent","isValidSubmit","getCalcInputModel","strippedNumber","replace","isNaN","Number","toLocaleString","minimumFractionDigits","beforePrint","afterPrint","$rowInputs","inputData","chartData","ajax","url","type","JSON","stringify","contentType","beforeSend","success","graphData","targetElem","f","savingsAtRetirement","salaryAtRetirement","salaryReplacementAtRetirement","canRetireInPlannedTimespan","replacementRatio","monthlyContribution","savingPercentage","realReturnRatio","plannedTimeInRetirement","yearsInRetirement","html","push","InvestmentValueGraphData","RetirementAgeGraphData","AmCharts","makeChart","categoryField","backgroundColor","color","sequencedAnimation","fontFamily","fontSize","theme","usePrefixes","prefixesOfBigNumbers","prefix","trendLines","guides","dataProvider","categoryAxis","gridPosition","dashLength","startOnAxis","valueAxes","id","axisColor","gridColor","axisAlpha","position","unit","unitPosition","responsive","enabled","allLabels","graphs","balloonText","lineColor","lineThickness","fillAlphas","fillColors","title","valueField","dashLengthField","columnWidth","alphaField","labelText","negativeFillColors","negativeLineColor","lineAlpha","chartCursor","zoomable","cursorAlpha","numberFormatter","precision","decimalSeparator","thousandsSeparator","balloon","borderThickness","fillAlpha","shadowAlpha","horizontalPadding","verticalPadding","export","empty","append","formatNumber","toRandFormat","SavingsAtRetirement","SalaryAtRetirement","SalaryReplacementAtRetirement","CanRetireInPlannedTimespan","ReplacementRatio","MonthlyContribution","StartingSalary","RealReturnRatio","PlannedTimeInRetirement","YearsInRetirement","toFixed","plotAreaBorderColor","plotAreaFillColors","gridAboveGraphs","borderColor","markerType","stackType","axisThickness","fillColor","legend","titles","size","plotTaxGraph","TaxGraphData","error","inputs","InvestmentAge","RetirementAge","RequiredYearsInRetirement","CurrentInvestmentValue","ProjectedInflation","RealReturn","ThirdInCash","charts","chart","div","style","width","validateNow","matchMedia","addListener","mql","matches","onbeforeprint","onafterprint","rowInputValidationOnChange","target","isValid","inputVals","inputID","value"],"sourceRoot":""}