var TERMS_PER_YEAR=12;var TERM_FEE=10;var SETUP_FEE=850;var INSURANCE_PERCENTAGE=0.0020;var TAX_DEDUCTION_FACTOR=0.28;var DEFAULT_SUM=1000000;var DEFAULT_INTEREST=5.95;var DEFAULT_PAYMENT_YEARS=25;var DEFAULT_INSTALMENT_FREE_YEARS=0;var DEFAULT_INCOME=0;var DEFAULT_IS_INSURED=true;var DEFAULT_IS_ANNUITY=true;var Loan={init:function(){this.calc(DEFAULT_SUM,DEFAULT_INTEREST,DEFAULT_PAYMENT_YEARS,DEFAULT_INSTALMENT_FREE_YEARS,DEFAULT_INCOME,DEFAULT_IS_INSURED,DEFAULT_IS_ANNUITY);},calc:function(sum,interest,paymentYears,instalmentFreeYears,income,isInsured,isAnnuity){this.sum=sum;this.interest=Math.round(interest*100)/10000;this.paymentYears=paymentYears;this.instalmentFreeYears=instalmentFreeYears;this.isInsured=isInsured;this.income=income;this.isAnnuity=isAnnuity;this._calc();this._effect();},_effect:function(){this.effectiveInterest=Math.pow((1+(((this.sum*this.interest)+(this.termFee*this.termsPerYear))/(this.sum*this.termsPerYear))),this.termsPerYear)-1;this.effectiveInterest*=10000;this.effectiveInterest=Math.round(this.effectiveInterest)/100;if(this.effectiveInterest.toString()!="Infinity")$("#effektivRente").text(this.effectiveInterest.toString());else $("#effektivRente").text(" - ");},_calc:function(){this.termsPerYear=TERMS_PER_YEAR;this.termFee=TERM_FEE;this.partInterest=this.interest-INSURANCE_PERCENTAGE;this.numberOfTerms=(this.paymentYears+this.instalmentFreeYears)*this.termsPerYear;this.paymentTerms=this.paymentYears*this.termsPerYear;this.instalmentFreeTerms=this.instalmentFreeYears*this.termsPerYear;this.termInterest=this.interest/this.termsPerYear;this.partTermInterest=this.partInterest/this.termsPerYear;this.maxLoan=calcMaxLoan(this.income);if(this.isAnnuity)this.maxPayment=Math.ceil(this.maxLoan*annuityFactor(this.termInterest,this.paymentTerms)+this.termFee);else this.maxPayment=Math.ceil((this.maxLoan/this.paymentTerms)+(this.maxLoan*(this.termInterest))+this.termFee);this.plan={interest:[0],insurance:[0],instalment:[0],fee:[SETUP_FEE],payment:[SETUP_FEE],taxDeduction:[0],balance:[this.sum]};this._buildPlan();this._buildAxis();},_buildPlan:function(){var payment=this.sum/this.paymentTerms;if(this.isAnnuity)payment=this.sum*annuityFactor(this.termInterest,this.paymentTerms);var i=1;var n=this.instalmentFreeTerms;while(i<=this.numberOfTerms){this.plan["interest"][i]=Math.ceil((this.plan["balance"][i-1]*this.partTermInterest));this.plan["fee"][i]=this.termFee;this.plan["insurance"][i]=Math.ceil((this.plan["balance"][i-1]*this.termInterest)-this.plan["interest"][i]);this.plan["taxDeduction"][i]=Math.ceil((this.plan["interest"][i]*TAX_DEDUCTION_FACTOR));if(n>0){this.plan["instalment"][i]=0;this.plan["balance"][i]=this.plan["balance"][i-1];this.plan["payment"][i]=this.plan["interest"][i]+this.plan["fee"][i]+this.plan["insurance"][i];n--;}else{if(this.isAnnuity){this.plan["instalment"][i]=Math.ceil(payment-this.plan["interest"][i]-this.plan["insurance"][i]);this.plan["payment"][i]=Math.ceil(payment+this.plan["fee"][i]);}else{this.plan["instalment"][i]=Math.ceil(payment);this.plan["payment"][i]=Math.ceil(payment+this.plan["interest"][i]+this.plan["insurance"][i]+this.plan["fee"][i]);}this.plan["balance"][i]=Math.ceil(this.plan["balance"][i-1]-this.plan["instalment"][i]);if(this.plan["balance"][i]<payment/10){this.plan["instalment"][i]=this.plan["balance"][i-1];this.plan["balance"][i]=0;this.plan["payment"][i]=Math.ceil(this.plan["instalment"][i]+this.plan["interest"][i]+this.plan["insurance"][i]+this.plan["fee"][i]);}}i++;}},_buildAxis:function(){this.axis=new Array(12);for(i=0;i<12;i++)this.axis[i]=new Array(8);this.axis[0][0]="";var x=-250000;for(i=1;i<12;i++){this.axis[i][0]=this.sum+x;x+=50000;}var y=-0.015;for(j=1;j<8;j++){this.axis[0][j]=this.interest+y;y+=0.005;}for(i=1;i<12;i++){for(j=1;j<8;j++){var aSum=this.axis[i][0];var aTermInterest=this.axis[0][j]/this.termsPerYear;var aPayment=0;if(this.isAnnuity&&this.instalmentFreeYears==0){aPayment+=(aSum*annuityFactor(aTermInterest,this.paymentTerms));}else{aPayment+=aSum*aTermInterest;if(!this.isAnnuity&&this.instalmentFreeYears==0){aPayment+=aSum/this.paymentTerms;}}if(!this.isInsured)aPayment-=Math.round((aSum*INSURANCE_PERCENTAGE)/this.termsPerYear);aPayment+=this.termFee;this.axis[i][j]=Math.round(aPayment);}}},replaceWithAxis:function(fieldToReplace){var html='<table id="calculatorResultsTable" class="calculatorResults"><thead><tr><th></th>';for(j=1;j<8;j++)if(j==4)html+='<th class="chosenCol">'+numberToPercent(this.axis[0][j])+'</th>';else html+='<th>'+numberToPercent(this.axis[0][j])+'</th>';html+='<tr></thead><tbody>';odd=true;var tooMuch=false;for(i=1;i<12;i++){if(i==6){html+='<tr class="even chosenRow">';}else{if(odd)html+='<tr class="odd">';else html+='<tr class="even">';}for(j=0;j<8;j++){tooMuch=(this.axis[i][j]>this.maxPayment+5);if(i==0){html+='<th>'+numberToReadableString(this.axis[i][j])+'</th>';continue;}if(j==0){if(this.axis[i][j]>calcMaxLoan(this.income)){tooMuch=true;}}if(j==4){if(tooMuch)html+='<td class="chosenCol"><div class="tooMuch">'+numberToReadableString(this.axis[i][j])+'</div></td>';else html+='<td class="chosenCol">'+numberToReadableString(this.axis[i][j])+'</td>';continue;}if(j==0){html+='<th>'+numberToReadableString(this.axis[i][j])+'</th>';continue;}if(tooMuch)html+='<td><div class="tooMuch">'+numberToReadableString(this.axis[i][j])+'</div></td>';else html+='<td>'+numberToReadableString(this.axis[i][j])+'</td>';}odd=odd?false:true;html+='</tr>';}html+='</tbody></table>';if(tooMuch){html+='<div class="kalkulatorLegend" id="betjeningsevneLegend" style="padding-left:5px"><ul style="padding-left:5px"><li><img src="/web/klpno.nsf/mediaresources/legendmarkering.gif/$file/legendmarkering.gif" height="8" width="38"/>De markerte feltene gir en indikasjon p&aring; at kombinasjonen av l&aring;nebel&oslash;p og rentesats er for h&oslash;y i forhold til opplyst inntekt. Markeringene er kun ment som en veiledning i forhold til din betjeningsevne. For en forpliktende avtale med KLP kreves en ordin&aelig;r kredittbehandling.</li></ul></div>';}$(fieldToReplace).empty().append(html);},replaceWithPlan:function(fieldToReplace){var html="";html+="<table class=\"payPlanSummary\"><tbody>";html+="<tr><th colspan=\"2\"><h3>L&aring;nesum "+numberToReadableString(this.sum)+" (detaljer)</h3></th></tr>";html+="<tr><th>Nominell&nbsp;rente</td><td>"+Math.round(this.interest*10000)/100+"%</td></tr></tr>";html+="<tr><th>Effektiv&nbsp;rente</th><td>"+this.effectiveInterest+"%</td></tr></tr>";html+="<tr><th>Termingebyr/mnd</td><td>"+this.termFee+"</td></tr></tr>";html+="<tr><th>Antall&nbsp;&aring;r</th><td>"+this.paymentYears+"</td></tr></tr>";html+="<tr><th colspan=\"2\"><h3>Totalkostnader*</h3></th></tr>";html+="<tr><th>Gebyrer</th><td>"+numberToReadableString(summarize(this.numberOfTerms+1,this.plan["fee"]))+"</td></tr>";html+="<tr><th>Renter</th><td>"+numberToReadableString(summarize(this.numberOfTerms+1,this.plan["interest"]))+"</td></tr>";html+="<tr><th>L&aring;n</th><td>"+numberToReadableString(summarize(this.numberOfTerms+1,this.plan["payment"]))+"</td></tr>";html+="<tr><th colspan=\"2\">* I KLP benytter vi kvartalsvise betalinger. Derfor kan endelig betalingsplan avvike noe.</th></tr>";html+="</tbody></table>";html+="<table class=\"payPlanResults\"><thead>";html+="<tr><td colspan=\"6\"><h3>F&oslash;rste &aring;r</h3></td></tr>";html+="<tr><th class=\"short\">#</th><th>Rente</th><th class=\"short\">Gjelds- fors.</th><th>Avdrag</th><th>Betales</th><th>Saldo</th></tr></thead><tbody>";var odd=true;for(i=0;i<=this.termsPerYear;i++){if(odd)html+="<tr class=\"odd\">";else html+="<tr class=\"even\">";html+="<td>"+i+"</td>"+"<td>"+numberToReadableString(this.plan["interest"][i])+"</td>"+"<td>"+numberToReadableString(this.plan["insurance"][i])+"</td>"+"<td>"+numberToReadableString(this.plan["instalment"][i])+"</td>"+"<td>"+numberToReadableString(this.plan["payment"][i])+"</td>"+"<td>"+numberToReadableString(this.plan["balance"][i])+"</td>";html+="</tr>";odd=odd?false:true;}html+="</tbody></table>";html+="<table class=\"payPlanResults\"><thead>";html+="<tr><td colspan=\"6\"><h3>&Aring;rlig plan</h3></td></tr>";html+="<tr><th class=\"short\">&Aring;r</th><th>Rente</th><th class=\"short\">Gjelds- fors.</th><th>Avdrag</th><th>Betales</th><th>Saldo</th></tr></thead><tbody>";odd=true;var termStep=this.termsPerYear;var year=1;var term=1;var next=term+termStep;while(next<=this.numberOfTerms+1){if(odd)html+="<tr class=\"odd\">";else html+="<tr class=\"even\">";html+="<td>"+year+"</td>";html+="<td>"+numberToReadableString(summarizeBetween(term,next,this.plan["interest"]))+"</td>";html+="<td>"+numberToReadableString(summarizeBetween(term,next,this.plan["insurance"]))+"</td>";html+="<td>"+numberToReadableString(summarizeBetween(term,next,this.plan["instalment"]))+"</td>";html+="<td>"+numberToReadableString(summarizeBetween(term,next,this.plan["payment"]))+"</td>";html+="<td>"+numberToReadableString(this.plan["balance"][next-1])+"</td>";html+="</tr>";term=next;next+=termStep;year++;odd=odd?false:true;}html+="</tbody></table>";var print=html.toString();html+='<a href="#" class="printPlanButton"><img src="http://www.klp.no/web/klpno.nsf/mediaresources/print_ikon.gif/$file/print_ikon.gif" alt="Skriv ut"></a>';$(fieldToReplace).empty().append(html);var style="body { font-family: Verdana; font-size: 12px; }\n";style+="table.payPlanSummary { width: 50%; }\n";style+="table.payPlanResults { width: 100%; }\n";style+="h2, h3 { font-family: Verdana; padding-top:15px; text-align: left;}\n";style+="td { text-align: right; font-size: 12px; }\n";style+="th { font-size: 12px; }\n";style+="th.short { width: 75px; }\n";style+=".odd { background: #eee; }\n";style+="table.payPlanSummary th { text-align: left; }\n";style+="table.payPlanResults th { text-align: right; }\n";$(".printPlanButton").click(function(){printWindow=window.open("","","width=800,height=600,toolbar=0,status=1,scrollbars=1");printWindow.document.write('<html><head><title>Betalingsplan</title><style type="text/css">'+style+'</style></head><body>'+print+'</body></html>');printWindow.document.close();printWindow.print();});},toJSON:function(){var json='{"years":[';var termStep=this.termsPerYear;var year=1;var term=1;var next=term+termStep;while(next<=this.numberOfTerms+1){json+='{';json+='"interest":'+summarizeBetween(term,next,this.plan["interest"])+',';json+='"total":'+summarizeBetween(term,next,this.plan["payment"])+',';json+='"tax":'+summarizeBetween(term,next,this.plan["taxDeduction"]);json+='}';term=next;next+=termStep;year++;if(next<=this.numberOfTerms+1){json+=',';}}json+=']}';return json;},updateFlash:function(isSet){if(isSet){getMovieElement("nedbetalingsPlan").update(this.toJSON());}}}
function calcMaxLoan(income){if(isNaN(income)){return 999999999999;}if(income>=500000){return Math.floor(income*4);}if(income>=400000){return Math.floor(income*3.5);}if(income>=350000){return Math.floor(income*3);}if(income>=300000){return Math.floor(income*2.5);}if(income>=250000){return Math.floor(income*2);}if(income>=200000){return Math.floor(income*1.5);}if(income>=150000){return Math.floor(income);}return 0;}
function annuityFactor(termInterest,terms){return termInterest/(Math.pow((1+termInterest),terms)-1)+termInterest;}
function numberToPercent(number){var str=Math.round(number*100*100)/100.00;str+="";if(str.length==1)str+=".00%";else if(str.length==3)str+="0%";else str+="%";return str;}
function summarizeBetween(from,to,array){var sum=0.0;for(i=from;i<to;i++){sum=sum+array[i];}return Math.ceil(sum);}
function summarize(num,array){return summarizeBetween(0,num,array);}
function numberToReadableString(nr){var str=nr.toString();switch(str.length){case 4:str=str.substr(0,1)+"&nbsp;"+str.substr(1,3);break;case 5:str=str.substr(0,2)+"&nbsp;"+str.substr(2,3);break;case 6:str=str.substr(0,3)+"&nbsp;"+str.substr(3,3);break;case 7:str=str.substr(0,1)+"&nbsp;"+str.substr(1,3)+"&nbsp;"+str.substr(4,3);break;case 8:str=str.substr(0,2)+"&nbsp;"+str.substr(2,3)+"&nbsp;"+str.substr(4,3);break;case 9:str=str.substr(0,3)+"&nbsp;"+str.substr(3,3)+"&nbsp;"+str.substr(4,3);}return str;}
function getInput(jQueryAccessor,fieldIsNumber){var v=$(jQueryAccessor).val();if(fieldIsNumber){v=v.replace(/\s/g,"");v=v.replace(",",".");return parseFloat(v);}return v;}
function getMovieElement(movieName){if(navigator.appName.indexOf("Microsoft")!=-1){return window[movieName];}return document[movieName];}$(document).ready(
function(){Loan.calc(getInput("#lanesum",true),getInput("#rente",true),getInput("#nedbetalingstid",true),getInput("#avdragsfrihet",true),getInput("#bruttoinntekt",true),(getInput("#obligatorisk:checked",false)!=null),(getInput("[@name='type']:checked",false)=="annuitet"));var tabAxisSelected=true;var tabPlanSelected=false;var tabFlashSelected=false;Loan.replaceWithAxis("#loanOutput");$("#flashLegend").hide();$("#kalkulatorButton").click(function(){Loan.calc(getInput("#lanesum",true),getInput("#rente",true),getInput("#nedbetalingstid",true),getInput("#avdragsfrihet",true),getInput("#bruttoinntekt",true),(getInput("#obligatorisk:checked",false)!=null),(getInput("[@name='type']:checked",false)=="annuitet"));if(tabAxisSelected){Loan.replaceWithAxis("#loanOutput");return;}if(tabPlanSelected){Loan.replaceWithPlan("#loanOutput");return;}var obj=getMovieElement("nedbetalingsPlan");if(obj){obj.update(Loan.toJSON());}});$("input.updateCalculator").keyup(function(e){var code=e.charCode||e.keyCode;if(code==13){Loan.calc(getInput("#lanesum",true),getInput("#rente",true),getInput("#nedbetalingstid",true),getInput("#avdragsfrihet",true),getInput("#bruttoinntekt",true),(getInput("#obligatorisk:checked",false)!=null),(getInput("[@name='type']:checked",false)=="annuitet"));if(tabAxisSelected){Loan.replaceWithAxis("#loanOutput");return;}if(tabPlanSelected){Loan.replaceWithPlan("#loanOutput");return;}var obj=getMovieElement("nedbetalingsPlan");if(obj){obj.update(Loan.toJSON());}}});$("#tabPlan").click(function(){$("#tabAxis img").attr("src","/web/klpmm.nsf/lupgraphics/faner_utgifter_inactive.gif/$file/faner_utgifter_inactive.gif");$("#tabPlan img").attr("src","/web/klpmm.nsf/lupgraphics/active_betalingsplan.gif/$file/active_betalingsplan.gif");$("#tabFlash img").attr("src","/web/klpmm.nsf/lupgraphics/inactive_grafiskvisning.gif/$file/inactive_grafiskvisning.gif");tabFlashSelected=false;tabAxisSelected=false;tabPlanSelected=true;$("#loanOutput").show();$("#flashOutput").hide();$("#flashLegend").hide();currentTab="plan";Loan.replaceWithPlan("#loanOutput");});$("#tabAxis").click(function(){$("#tabAxis img").attr("src","/web/klpmm.nsf/lupgraphics/faner_utgifter_active.gif/$file/faner_utgifter_active.gif");$("#tabPlan img").attr("src","/web/klpmm.nsf/lupgraphics/inactive_betalingsplan.gif/$file/inactive_betalingsplan.gif");$("#tabFlash img").attr("src","/web/klpmm.nsf/lupgraphics/inactive_grafiskvisning.gif/$file/inactive_grafiskvisning.gif");tabFlashSelected=false;tabAxisSelected=true;tabPlanSelected=false;$("#loanOutput").show();$("#flashOutput").hide();$("#flashLegend").hide();currentTab="axis";Loan.replaceWithAxis("#loanOutput");});$(".flashCalculator").keyup(function(){if(tabFlashSelected){Loan.updateFlash(true);}});$("#tabFlash").click(function(){$("#tabAxis img").attr("src","/web/klpmm.nsf/lupgraphics/faner_utgifter_inactive.gif/$file/faner_utgifter_inactive.gif");$("#tabPlan img").attr("src","/web/klpmm.nsf/lupgraphics/inactive_betalingsplan.gif/$file/inactive_betalingsplan.gif");$("#tabFlash img").attr("src","/web/klpmm.nsf/lupgraphics/active_grafiskvisning.gif/$file/active_grafiskvisning.gif");tabFlashSelected=true;tabAxisSelected=false;tabPlanSelected=false;var fob=new SWFObject("/web/klpmm.nsf/lupgraphics/nedbetalingPlan.swf/$file/nedbetalingPlan.swf","nedbetalingsPlan","400","460","8");fob.addParam("allowScriptAccess","always");fob.addParam("menu","false");$("#loanOutput").hide();$("#flashOutput").show();$("#flashLegend").show();fob.write("flashOutput");setTimeout("$(\".flashCalculator\").trigger(\"keyup\")",200);});$(".flashCalculator").trigger("keyup");});

