addLoadEvent(initCalculate);function initCalculate(){var calculator=$('calculator');if(!calculator)return;calculator.onsubmit=function(){var loanTotal=$('loanTotal');var monthlyPayments=$('monthlyPayments');var model=calculator['model'].value;var basePrice=formatToDecimal($F(calculator['basePrice']));var preparationPrice=formatToDecimal($F(calculator['preparationPrice']));var downPayment=formatToDecimal($F(calculator['downPayment']),true);var period=formatToDecimal($F(calculator['period']));var interestRate=formatToDecimal($F(calculator['interestRate']));var calculatorResult=$('calculatorResult');var error=0;var errorSpans=new Array();for(i=1;i<calculator['model'].options.length;i++){errorSpans['serial_'+calculator['model'].options[i].value]=document.getElementById('errorSerial_'+calculator['model'].options[i].value);errorSpans['serial_'+calculator['model'].options[i].value].style.display='none';}
errorSpans['model']=document.getElementById('errorModel');errorSpans['basePrice']=document.getElementById('errorBasePrice');errorSpans['downPayment']=document.getElementById('errorDownPayment');errorSpans['interestRate']=document.getElementById('errorInterestRate');if(model<=0){errorSpans['model'].style.display='block';error++;}else{errorSpans['model'].style.display='none';var serial=calculator['serial_'+model].value;if(serial<=0){errorSpans['serial_'+model].style.display='block';error++;}}
if(!valid_numeric(basePrice)||!valid_required(basePrice)||!valid_notnull(basePrice)){errorSpans['basePrice'].style.display='block';calculator['basePrice'].addClassName('error');error++;}else{errorSpans['basePrice'].style.display='none';calculator['basePrice'].removeClassName('error');}
if(!valid_numeric(downPayment)){errorSpans['downPayment'].style.display='block';calculator['downPayment'].addClassName('error');error++;}else{errorSpans['downPayment'].style.display='none';calculator['downPayment'].removeClassName('error');}
if(!valid_numeric(interestRate)||!valid_required(interestRate)||!valid_notnull(interestRate)){errorSpans['interestRate'].style.display='block';calculator['interestRate'].addClassName('error');error++;}else{errorSpans['interestRate'].style.display='none';calculator['interestRate'].removeClassName('error');}
if(error){calculatorResult.addClassName('noneJs');return false;}else{calculatorResult.removeClassName('noneJs');}
var total=formatToDecimal(basePrice+preparationPrice-downPayment);var payments=calcLoan(12,total,interestRate,period/12);loanTotal.innerHTML=formatCurrency(total);monthlyPayments.innerHTML=formatCurrency(payments);return false;}}
function calcLoan(t,valeur,taux,terme){taux=taux/100;var n=terme*t;var pmt=1/(t/2);var i=Math.pow((taux/2+1),(1/(t/2)))-1;var an_fact=(1-Math.pow(1+i,-n))/i;var pm=valeur/an_fact;return pm;}
function live_format_numeric(input){input.onkeyup=input.onkeydown=function(){var result="";var string=input.value;for(var i=0;i<string.length;i++){var str=string[i];if(!isNaN(str))result+=str;else if(str=='.')result+=str;}
input.value=result;}}
function formatToDecimal(str,returnNaN){var str=new String(str);str=str.replace(",",".");str=str.replace(" ","");str=str.replace("$","");var num=Number(str);if(isNaN(num)){if(returnNaN)return str;num=0;}
num=Math.round(num*100)/100;return num;}
function formatCurrency(num){if(!num)return'';num=num.toString().replace(/\$|\,/g,'');if(isNaN(num))num="0";sign=(num==(num=Math.abs(num)));num=Math.floor(num*100+0.50000000001);cents=num%100;num=Math.floor(num/100).toString();if(cents<10)cents="0"+cents;for(var i=0;i<Math.floor((num.length-(1+i))/3);i++)
num=num.substring(0,num.length-(4*i+3))+' '+num.substring(num.length-(4*i+3));return(((sign)?'':'-')+num+'.'+cents+' $');}
function valid_numeric(str){str=String(str);rx=/^[0-9]+(\.[0-9]+)?\%?$/;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_required(str){if(str.length<=0)return false;else return true;}
function valid_notnull(num){if(num==0)return false;else return true;}
function valid_money(str){str=String(str);rx=/^(\d*)\$?$/;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}