function sum(o){

for(var s = 0, i = (1*profile_payments)+1; i; s += o[--i]);
return s;

};

function calc_payment(email,amount,deposit,residual,frequency,adv_payments,total_payments,funders_rates,band1,band2,band3,user_band1,user_band2,user_band3,postcode,phone,reference,dealer_id) {

//setCookie('email',document.calc.email.value,365);
//setCookie('amount',document.calc.amount.value,365);
//setCookie('deposit',document.calc.deposit.value,365);
//setCookie('residual',document.calc.residual.value,365);
//setCookie('frequency',document.calc.frequency.value,365);
//setCookie('adv_payments',document.calc.adv_payments.value,365);
//setCookie('total_payments',document.calc.total_payments.value,365);

if(user_band1 == 0 && user_band2 == 0 && user_band3 == 0){
new_band1 = band1;
new_band2 = band2;
new_band3 = band3; 
} else {
new_band1 = user_band1;
new_band2 = user_band2;
new_band3 = user_band3;	
}
	
// Get Rates
if(((1*amount)-(1*deposit)) < 5000){
  yield = (1*funders_rates) + (1*new_band1);
} else if((1*amount)-(1*deposit) >= 5000 && (1*amount)-(1*deposit) < 15000) {
  yield = (1*funders_rates) + (1*new_band2);
} else if((1*amount)-(1*deposit) >= 15000) {
  yield = (1*funders_rates) + (1*new_band3);
}

///////////////////////

rate = (yield/100);
period = 12; //Always 12

if (frequency == "Monthly") {
profile_payments = (1*total_payments) - (1*adv_payments);
ann_ratio = 1;
hal_ratio = 1;
mon_ratio = 1;
qua_ratio = 1;
} else if (frequency == "Quarterly") {
profile_payments = ((1*total_payments) - (1*adv_payments));
ann_ratio = 1;
hal_ratio = 1;
qua_ratio = 1;
mon_ratio = 0;
} else if (frequency == "Half Annually") {
profile_payments = ((1*total_payments) - (1*adv_payments));
ann_ratio = 1;
hal_ratio = 1;
mon_ratio = 0;
qua_ratio = 0;
} else if (frequency == "Annually") {
profile_payments = ((1*total_payments) - (1*adv_payments));
ann_ratio = 1;
hal_ratio = 0;
mon_ratio = 0;
qua_ratio = 0;
}

btf=(1*amount)-(1*deposit)-(1*0)-((1*residual)/Math.pow((1+(rate/period)), profile_payments))

var adv_array = new Array();
adv_array[0] = adv_payments/Math.pow((1+(rate/period)), 0);
adv_array[1] = mon_ratio/Math.pow((1+(rate/period)), 1);
adv_array[2] = mon_ratio/Math.pow((1+(rate/period)), 2);
adv_array[3] = qua_ratio/Math.pow((1+(rate/period)), 3);
adv_array[4] = mon_ratio/Math.pow((1+(rate/period)), 4);
adv_array[5] = mon_ratio/Math.pow((1+(rate/period)), 5);
adv_array[6] = hal_ratio/Math.pow((1+(rate/period)), 6);
adv_array[7] = mon_ratio/Math.pow((1+(rate/period)), 7);
adv_array[8] = mon_ratio/Math.pow((1+(rate/period)), 8);
adv_array[9] = qua_ratio/Math.pow((1+(rate/period)), 9);
adv_array[10] = mon_ratio/Math.pow((1+(rate/period)), 10);
adv_array[11] = mon_ratio/Math.pow((1+(rate/period)), 11);
adv_array[12] = ann_ratio/Math.pow((1+(rate/period)), 12);
adv_array[13] = mon_ratio/Math.pow((1+(rate/period)), 13);
adv_array[14] = mon_ratio/Math.pow((1+(rate/period)), 14);
adv_array[15] = qua_ratio/Math.pow((1+(rate/period)), 15);
adv_array[16] = mon_ratio/Math.pow((1+(rate/period)), 16);
adv_array[17] = mon_ratio/Math.pow((1+(rate/period)), 17);
adv_array[18] = hal_ratio/Math.pow((1+(rate/period)), 18);
adv_array[19] = mon_ratio/Math.pow((1+(rate/period)), 19);
adv_array[20] = mon_ratio/Math.pow((1+(rate/period)), 20);
adv_array[21] = qua_ratio/Math.pow((1+(rate/period)), 21);
adv_array[22] = mon_ratio/Math.pow((1+(rate/period)), 22);
adv_array[23] = mon_ratio/Math.pow((1+(rate/period)), 23);
adv_array[24] = ann_ratio/Math.pow((1+(rate/period)), 24);
adv_array[25] = mon_ratio/Math.pow((1+(rate/period)), 25);
adv_array[26] = mon_ratio/Math.pow((1+(rate/period)), 26);
adv_array[27] = qua_ratio/Math.pow((1+(rate/period)), 27);
adv_array[28] = mon_ratio/Math.pow((1+(rate/period)), 28);
adv_array[29] = mon_ratio/Math.pow((1+(rate/period)), 29);
adv_array[30] = hal_ratio/Math.pow((1+(rate/period)), 30);
adv_array[31] = mon_ratio/Math.pow((1+(rate/period)), 31);
adv_array[32] = mon_ratio/Math.pow((1+(rate/period)), 32);
adv_array[33] = qua_ratio/Math.pow((1+(rate/period)), 33);
adv_array[34] = mon_ratio/Math.pow((1+(rate/period)), 34);
adv_array[35] = mon_ratio/Math.pow((1+(rate/period)), 35);
adv_array[36] = ann_ratio/Math.pow((1+(rate/period)), 36);
adv_array[37] = mon_ratio/Math.pow((1+(rate/period)), 37);
adv_array[38] = mon_ratio/Math.pow((1+(rate/period)), 38);
adv_array[39] = qua_ratio/Math.pow((1+(rate/period)), 39);
adv_array[40] = mon_ratio/Math.pow((1+(rate/period)), 40);
adv_array[41] = mon_ratio/Math.pow((1+(rate/period)), 41);
adv_array[42] = hal_ratio/Math.pow((1+(rate/period)), 42);
adv_array[43] = mon_ratio/Math.pow((1+(rate/period)), 43);
adv_array[44] = mon_ratio/Math.pow((1+(rate/period)), 44);
adv_array[45] = qua_ratio/Math.pow((1+(rate/period)), 45);
adv_array[46] = mon_ratio/Math.pow((1+(rate/period)), 46);
adv_array[47] = mon_ratio/Math.pow((1+(rate/period)), 47);
adv_array[48] = ann_ratio/Math.pow((1+(rate/period)), 48);
adv_array[49] = mon_ratio/Math.pow((1+(rate/period)), 49);
adv_array[50] = mon_ratio/Math.pow((1+(rate/period)), 50);
adv_array[51] = qua_ratio/Math.pow((1+(rate/period)), 51);
adv_array[52] = mon_ratio/Math.pow((1+(rate/period)), 52);
adv_array[53] = mon_ratio/Math.pow((1+(rate/period)), 53);
adv_array[54] = hal_ratio/Math.pow((1+(rate/period)), 54);
adv_array[55] = mon_ratio/Math.pow((1+(rate/period)), 55);
adv_array[56] = mon_ratio/Math.pow((1+(rate/period)), 56);
adv_array[57] = qua_ratio/Math.pow((1+(rate/period)), 57);
adv_array[58] = mon_ratio/Math.pow((1+(rate/period)), 58);
adv_array[59] = mon_ratio/Math.pow((1+(rate/period)), 59);
adv_array[60] = ann_ratio/Math.pow((1+(rate/period)), 60);

var pmt = (btf/sum(adv_array)).toFixed(2);
//document.write(pmt);
setCookie('pmt',pmt,365);

btf=(1*amount)-((1*adv_payments)*(1*pmt))

calc_apr(btf,(1*deposit),pmt,((1*total_payments)-(1*adv_payments)),residual,frequency);
																							 
window.location = 'quote-exec.php?email=' + email +
                                                '&amount=' + amount +
                                               '&deposit=' + deposit +
                                              '&residual=' + residual +
                                             '&frequency=' + frequency +
                                          '&adv_payments=' + adv_payments +
                                        '&total_payments=' + total_payments +
                                                   '&pmt=' + getCookie('pmt') +
                                                   '&apr=' + getCookie('apr') +
											  '&postcode=' + postcode +
											 '&phone=' + phone +
											 '&reference=' + reference +
                                               '&dealer_id=' + dealer_id;
																							 



}

function calc_apr(btf,deposit,pmt,payments,residual,frequency) {

if (frequency == "Monthly") {
m=12
var n=Math.floor(payments);
} else if (frequency == "Annually") {
m=1
var n=Math.floor(payments/12);
} else if (frequency == "Half Annually") {
m=2
var n=Math.floor(payments/6);
} else if (frequency == "Quarterly") {
m=4
var n=Math.floor(payments/3);
}

  var p=btf;
  var i=deposit;
  var a=pmt;
  var f=residual;
  
  //Isaac's magic ...
  var x=1.0001; var fx=0; var dx=0; var z=0;
  do {
    fx=i+a*(Math.pow(x,n+1)-x)/(x-1)+f*Math.pow(x,n)-p;
    dx=a*(n*Math.pow(x,n+1)-(n+1)*Math.pow(x,n)+1)/Math.pow(x-1,2)+n*f*Math.pow(x,n-1);
    z=fx/dx; x=x-z;
    //alert("fx="+fx+"\ndx="+dx+"\nz="+z+"\nx="+x)
    }
    while (Math.abs(z)>1e-9);
  r=100*(Math.pow(1/x,m)-1);
  
  //document.calc.apr.value= r.toFixed(2);
	setCookie('apr',r.toFixed(2),365);

}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}



