﻿function $(a){return document.getElementById(a)}function addEvent(c,b,a){if(c.addEventListener){c.addEventListener(b,a,false);EventCache.add(c,b,a)}else{if(c.attachEvent){c["e"+b+a]=a;c[b+a]=function(){c["e"+b+a](window.event)};c.attachEvent("on"+b,c[b+a]);EventCache.add(c,b,a)}else{c["on"+b]=c["e"+b+a]}}}var EventCache=function(){var a=[];return{listEvents:a,add:function(b,d,c){a.push(arguments)},flush:function(){var b,c;for(b=a.length-1;b>=0;b=b-1){c=a[b];if(c[0].removeEventListener){c[0].removeEventListener(c[1],c[2],c[3])}if(c[1].substring(0,2)!="on"){c[1]="on"+c[1]}if(c[0].detachEvent){c[0].detachEvent(c[1],c[2])}c[0][c[1]]=null}}}}();addEvent(window,"unload",EventCache.flush);function externalLinks(){if(!document.getElementsByTagName){return}else{var d=location.href;d=d.replace("http://","");d=d.substring(0,d.indexOf("/"));var body=document.getElementById("standardview");var c=body.getElementsByTagName("a");alert(c.length);for(var b=c.length-1;b>=0;b--){var a=c[b];if(a.href&&a.href.indexOf(d)==-1&&a.href.indexOf(".2plan.com")==-1){addEvent(a,"mouseover",externalLink)}}}}addEvent(window,"load",makeNiceTitles);var XHTMLNS="http://www.w3.org/1999/xhtml";var CURRENT_NICE_TITLE;var browser=new Browser();function makeNiceTitles(){if(!document.createElement||!document.getElementsByTagName){return}if(!document.createElementNS){document.createElementNS=function(e,d){return document.createElement(d)}}var b=location.href;b=b.replace("http://","");b=b.substring(0,b.indexOf("/"));var body=document.getElementById("standardview");if (body!=null){var links = body.links;if (!links){links=body.getElementsByTagName("a");}for(var a=0;a<links.length;a++){var c=links[a];if(c.href&&c.href.indexOf(b)==-1&&c.href.indexOf(".2plan.com")==-1){c.setAttribute("nicetitle",c.title);c.removeAttribute("title");addEvent(c,"mouseover",showNiceTitle);addEvent(c,"mouseout",hideNiceTitle);addEvent(c,"focus",showNiceTitle);addEvent(c,"blur",hideNiceTitle)}}}}function findPosition(b){if(b.offsetParent){for(var c=0,a=0;b.offsetParent;b=b.offsetParent){c+=b.offsetLeft;a+=b.offsetTop}return[c,a]}else{return[b.x,b.y]}}function showNiceTitle(b){if(CURRENT_NICE_TITLE){hideNiceTitle(CURRENT_NICE_TITLE)}if(!document.getElementsByTagName){return}if(window.event&&window.event.srcElement){lnk=window.event.srcElement}else{if(b&&b.target){lnk=b.target}}if(!lnk){return}if(lnk.nodeName.toUpperCase()!="A"){lnk=getParent(lnk,"A")}if(!lnk){return}var c=document.createElementNS(XHTMLNS,"div");c.className="nicetitle";pat=document.createElementNS(XHTMLNS,"p");pat.innerHTML="This link will take you away from this 2plan website. 2plan are not responsible for the content or availability of external websites.";c.appendChild(pat);var a=200;c.style.width=a+"px";mpos=findPosition(lnk);mx=mpos[0];my=mpos[1];c.style.left=(mx+15)+"px";c.style.top=(my+35)+"px";if(window.innerWidth&&((mx+a)>window.innerWidth)){c.style.left=(window.innerWidth-a-25)+"px"}if(document.body.scrollWidth&&((mx+a)>document.body.scrollWidth)){c.style.left=(document.body.scrollWidth-a-25)+"px"}document.getElementsByTagName("body")[0].appendChild(c);CURRENT_NICE_TITLE=c}function hideNiceTitle(a){if(!document.getElementsByTagName){return}if(CURRENT_NICE_TITLE){document.getElementsByTagName("body")[0].removeChild(CURRENT_NICE_TITLE);CURRENT_NICE_TITLE=null}}function addEvent(d,c,a){if(d.addEventListener){d.addEventListener(c,a,false);return true}else{if(d.attachEvent){var b=d.attachEvent("on"+c,a);return b}else{return false}}}function getParent(b,a){if(b==null){return null}else{if(b.nodeType==1&&b.tagName.toLowerCase()==a.toLowerCase()){return b}else{return getParent(b.parentNode,a)}}}function getMousePosition(a){if(browser.isIE){x=window.event.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;y=window.event.clientY+document.documentElement.scrollTop+document.body.scrollTop}if(browser.isNS){x=a.clientX+window.scrollX;y=a.clientY+window.scrollY}return[x,y]}function Browser(){var b,c,a;this.isIE=false;this.isNS=false;this.version=null;b=navigator.userAgent;c="MSIE";if((a=b.indexOf(c))>=0){this.isIE=true;this.version=parseFloat(b.substr(a+c.length));return}c="Netscape6/";if((a=b.indexOf(c))>=0){this.isNS=true;this.version=parseFloat(b.substr(a+c.length));return}c="Gecko";if((a=b.indexOf(c))>=0){this.isNS=true;this.version=6.1;return}}function LumpSum(){var d=Number($("sum").value,"Lump sum amount");var e=Number($("period").value,"Investment period");var c=Number($("rate").value,"Annual interest rate");if(d!==false&&e!==false&&c!==false){var f=(c/100)/12;var b=e*12;var a=d*(Math.pow(1+f,b));d=Currency(d);DisplayCalculation(Currency(a),"Your investment of "+d+" over "+e+" years could give you a total amount of ","success")}}function RegularSavings(){var d=Number($("initial").value,"Initial investment amount",true);var b=Number($("sum").value,"Monthly savings amount");var g=Number($("period").value,"Investment period");var c=Number($("rate").value,"Annual interest rate");if(b!==false&&g!==false&&c!==false){var k=(c/100)/12;var a=g*12;var j=d*(Math.pow(1+k,a));var i=(b*((Math.pow(1+k,a))-1))/k;var f=j+i;var e=Currency(b);var h=Currency(f);if(h){DisplayCalculation(h,"Your monthly investment of "+e+" over "+g+" years could give you a total amount of ","success")}else{alert("The total could not be calculated. Please ensure the numbers are correct.")}}}function TargetSavings(){var e=Number($("target").value,"Target amount");var h=Number($("period").value,"Investment period");var f=Number($("rate").value,"Annual interest rate");if(e!==false&&h!==false&&f!==false){var i=f/100;var d=e/(Math.pow(1+i,h));var c=h*12;i=Math.pow(1+i,1/12)-1;var b=Math.pow(1+i,h*12);b=(i*e)/(-1+b);var g=Currency(d);var a=Currency(b);e=Currency(e);if(e&&g&&a){DisplayCalculation(a,"To reach your target of "+e+" over "+h+" years you need to invest either <strong>"+g+"</strong> as a lump sum now, or save a monthly amount of ","success")}else{alert("The total could not be calculated. Please ensure the numbers are correct.")}}}function MaximumMortgage(){var b=Number($("salary1").value,"Your salary");var a=Number($("salary2").value,"Partner salary",true);var f=Number($("multiplier").value,"Salary multiplier");if(b!==false&&a!==false&&f!==false){var d=parseFloat(b)+parseFloat(a);var c=d*f;var e=Currency(c);if(e){DisplayCalculation(e,"Based on you and your partners salary you could borrow ","success")}else{alert("The total could not be calculated. Please ensure the numbers are correct.")}}}function MortgageRepayments(){var f=Number($("mortgage").value,"Mortgage amount");var d=Number($("years").value,"Mortgage length");var e=Number($("interest").value,"Average annual interest rate");if(f!==false&&d!==false&&e!==false){var b=e/100;var a=((f*b)/12)*(1/(1-(Math.pow(1/(1+b),d))));a=Currency(a);var c=((f*0.12)/12)*(1/(1-(Math.pow((1/1.12),d))));c=(f*b)/12;c=Currency(c);e=Round(e,2);if(a&&c){DisplayCalculation("","With an interest rate of "+e+"% on your mortgage of £"+f+" you can expect to pay <strong>"+a+"</strong> monthly for a capital and interest repayment plan, or <strong>"+c+"</strong> monthly for an interest only repayment plan.","success")}else{alert("The total could not be calculated. Please ensure the numbers are correct.")}}}function ProfitLoss(){var d=Number($("sales").value,"Sales amount");var c=Number($("costs").value,"Costs amount");if(d!==false&&c!==false){var b=100-(100*(c/d));var a=d-c;a=Currency(a);b=Round(b,2);if(a){DisplayCalculation(a,"Your profit/loss is <strong>"+b+"%</strong> of your sales, an amount of ","success")}else{alert("The total could not be calculated. Please ensure the numbers are correct.")}}}function PensionSavings(){var currentage=Number($("currentage").value,"Current age");var retirementage=Number($("retirementage").value,"Retirement age");var retirementyears=Number($("retirementyears").value,"Retirement years");var salary=Number($("salary").value,"Salary");var savings=Number($("savings").value,"Savings");var monthly=Number($("savings").value,"Savings");var yearlyincrease=Number($("yearlyincrease").value,"Savings");var lcCurrency="?";with(document.form1){if(!checkNumber(age,"Age",1,150)){return}if(!checkNumber(retireage,"Retirement Age",parseFloat(age.value),150)){return}if(!checkNumber(retireyears,"Retire Years",1,100)){return}if(!checkNumber(salary,"Salary",0,1000000)){return}if(!checkNumber(savings,"Current Savings",0,1000000)){return}if(!checkNumber(monthly,"Monthly Contribution",0,1000000)){return}if(!checkNumber(increase,"Annual Contribution Increase",0,999.999)){return}if(!checkNumber(rate,"Rate of Return (Interest)",0,99.999)){return}if(!checkNumber(inflation,"Inflation Rate",0,99.999)){return}if(!checkNumber(retireincome,"Desired Monthly Income",0,1000000)){return}if(!checkNumber(salarypercent,"Desired Salary Percent",0,999)){return}var lc1=savings.value;var lc2=monthly.value;if((parseFloat(savings.value)==0||lc1==null||lc1=="")&&(parseFloat(monthly.value)==0||lc2==null||lc2=="")){alert("You must have current savings or make a monthly contribution.");return}lc1=retireincome.value;lc2=salarypercent.value;if((parseFloat(retireincome.value)==0||lc1==null||lc1=="")&&(parseFloat(salarypercent.value)==0||lc2==null||lc2=="")){alert("You must specify either a monthly retirement income amount or a percentage of your current salary.");return}var ln,lnMonths,lnYears,lnCurrentAmount,lnYearly,lnNeeded,lnStartYearly;var lnAge=parseFloat(age.value);var lnRetireAge=parseFloat(retireage.value);var lnRetireInYears=lnRetireAge-lnAge;var lnRetireYears=parseFloat(retireyears.value);var lnTotalYears=lnRetireInYears+lnRetireYears;var lnRetireIncome=parseFloat(retireincome.value);var lnSalary=parseFloat(salary.value);var lnSalaryPercent=parseFloat(salarypercent.value)/100;var lnInflation=parseFloat(inflation.value)/100;var lnRate=parseFloat(rate.value)/100;var lnContribIncrease=parseFloat(increase.value)/100;var lnMonthly=parseFloat(monthly.value);var lnSavings=parseFloat(savings.value);var lnAmount1=parseFloat(savings.value);var lnTemp=lnMonthly;for(ln=1;ln<(lnRetireInYears*12)+1;ln++){lnAmount1=lnAmount1*(1+(lnRate/12));lnAmount1=lnAmount1+lnTemp;if(ln%12==0){lnTemp=lnTemp*(1+lnContribIncrease)}}lnCurrentAmount=lnAmount1;amount1.value=formatNumber(lnAmount1,2,1);if(lnRetireIncome>0){lnStartYearly=lnRetireIncome*12}else{lnStartYearly=lnSalary*lnSalaryPercent}lnYearly=lnStartYearly;for(ln=0;ln<lnRetireInYears;ln++){lnYearly=lnYearly*(1+lnInflation)}lnYears=0;monthly1.value=formatNumber(lnYearly/12,2,1);monthly2.value=formatNumber(lnYearly/12,2,1);while(lnAmount1>lnYearly&&lnYears<102){lnYears++;lnAmount1=lnAmount1-lnYearly;lnAmount1=lnAmount1*(1+lnRate);lnYearly=lnYearly*(1+lnInflation)}if(lnYears>100){time1.value="More than 100 years!"}else{lnMonths=Math.ceil(lnAmount1/(lnYearly/12));time1.value=lnYears+" years and "+lnMonths+" months"}ln=lnCurrentAmount/(lnRetireYears*12);lnUpper=100000;lnLower=0;lnTry=lnUpper;lnYears=lnRetireYears+10;lnLoops=0;while(lnYears<lnRetireYears||lnYears>lnRetireYears+0.25){lnAmt=lnCurrentAmount;lnWD=lnTry;lnYears=0;while(lnAmt>lnWD&&lnYears<lnRetireYears+5){lnYears++;lnAmt=lnAmt-lnWD;lnAmt=lnAmt*(1+lnRate);lnWD=lnWD*(1+lnInflation)}lnYears=lnYears+(lnAmt/lnWD);if(lnYears>=lnRetireYears&lnYears<=lnRetireYears+0.25){break}if(lnYears>lnRetireYears&&lnTry==lnUpper){lnLower=lnUpper;lnUpper=lnUpper*2;lnTry=lnUpper}else{if(lnYears<lnRetireYears){lnUpper=lnTry}else{lnLower=lnTry}lnTry=Math.ceil(lnLower+((lnUpper-lnLower)/2))}lnLoops++;if(lnLoops==15){lnYears=lnRetireYears}}ln=lnTry/12;monthlyamt1.value=formatNumber(ln,2,1);ln=ln/Math.pow(1+lnInflation,lnRetireInYears);monthlyamt1today.value=formatNumber(ln,2,1);salarypercenttoday.value=formatNumber(ln/(lnSalary/12)*100,1,1);lnYearly=lnStartYearly;for(ln=lnAge;ln<lnRetireAge+lnRetireYears-1;ln++){lnYearly=lnYearly*(1+lnInflation)}lnYearly=formatRound(lnYearly,2);lnNeeded=lnYearly;for(ln=1;ln<lnRetireYears;ln++){lnNeeded=lnNeeded/(1+lnRate);lnYearly=lnYearly/(1+lnInflation);lnNeeded=lnNeeded+lnYearly}lnNeeded=formatRound(lnNeeded,0,1);amount2.value=formatNumber(lnNeeded,0,1);lnUpper=500;lnLower=0;lnTry=lnUpper;while(lnUpper!=lnLower&&lnUpper!=lnLower+1){lnAmount1=calcFVPlus(lnSavings,lnTry,lnRate/12,lnRetireInYears*12,0,lnContribIncrease,12);if(lnAmount1<lnNeeded&&lnTry==lnUpper){lnLower=lnUpper;lnUpper=lnUpper*2;lnTry=lnUpper}else{if(lnAmount1>lnNeeded){lnUpper=lnTry}else{lnLower=lnTry}lnTry=Math.ceil(lnLower+((lnUpper-lnLower)/2))}}monthlyamt2.value=formatNumber(lnUpper,0,1)}}function calcFVPlus(i,a,e,b,c,g,h){var d=i;for(var f=1;f<b;f++){d=d+(d*e)+a;if(h>0&&g>0&&f%h==0){a=a*(1+g)}}if(c>0){for(var f=1;f<c;f++){d=d+(d*e)}}return d}function Number(b,c,a){b=b.toString();b=b.replace("£","");b=b.replace(/[^\.0-9]/g,"");if(b.indexOf(".")!=-1){var d=new Array();d=b.split(".");b=d[0]+"."+d[1]}if(b==""){if(!a){alert("Please enter a valid number in the "+c+" field");return false}else{return 0}}else{return b}}function Round(a,c){var d=/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/.test(a);if(!d){var b=a.toString().split(".");if(b[1]){a=b[0]+"."+Math.round(b[1].substring(0,c)+"."+b[1].substring((c+1)))}return a}else{return false}}function Currency(d){var f=/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/.test(d);if(!f){var e=d.toString().split(".");if(!e[1]){var c="00"}else{var c=e[1]}if(c.length>2){c=c.substring(0,2)}if(c.length==1){c=c+"0"}var b=e[0];if(b.length>3){var a="";for(commas=0;commas<(b.length/3);commas++){a=","+b.substring((b.length-((commas+1)*3)),(b.length-(commas*3)))+a}b=a.substring(1)}return"£"+b+"."+c}else{return false}}function DisplayCalculation(b,d,c){var a=$("output");if(a){a.innerHTML=d+"<strong>"+b+"</strong>";a.className=c}};