﻿villkorarray = new Array();

function initVillkorarray() {
    villkor = new Object();
    villkor.namn = "Välj betalningsalternativ";
    villkor.id = "";
    villkor.villkorsid = "";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;

    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 3;
    villkor.id = "4";
    //	villkor.namn = "4" + " - " + "UPP TILL 60 DAGAR 0%";
    villkor.namn = "60 dagar räntefritt";
    villkor.antalbetalningar = "1";
    villkor.kampanjavgift = "0";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "0,00";
    villkor.villkorsid = "3";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;

    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 1;
    villkor.id = "47";
    //	villkor.namn = "47" + " - " + "47 - 5 BETALNINGAR 0%";
    villkor.namn = "6 månader till 0% ränta";
    villkor.antalbetalningar = "5";
    villkor.kampanjavgift = "295";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "0,00";
    villkor.villkorsid = "12";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;

    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 1;
    villkor.id = "48";
    //	villkor.namn = "48" + " - " + "48 - 11 BETALNINGAR 0%";
    villkor.namn = "12 månader till 0% ränta";
    villkor.antalbetalningar = "11";
    villkor.kampanjavgift = "295";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "0,00";
    villkor.villkorsid = "13";

    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;

    adminavgift = "25";

    //villkor = new Object(); 
    //villkor.betalningsmodell = 1;
    //villkor.id = "50";
    //villkor.namn = "50" + " - " + "50 - 17 BETALNINGAR 0%";
    //villkor.nam = "24 mån till 0% ränta"
    //villkor.antalbetalningar = "23";
    //villkor.kampanjavgift = "295";
    //villkor.admavgift = adminavgift;
    //villkor.kampanjranta = "0,00";
    //villkor.villkorsid = "14"; 
    //villkorarray.length++;
    //villkorarray[villkorarray.length - 1] = villkor;
    //adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 1;
    villkor.id = "50";
    //villkor.namn = "50" + " - " + "50 - 23 BETALNINGAR 0%";
    villkor.namn = "24 månader till 0% ränta";
    villkor.antalbetalningar = "23";
    villkor.kampanjavgift = "495";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "0,00";
    villkor.villkorsid = "15";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;
    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 3;
    villkor.id = "268";
    //	villkor.namn = "123" + " - " + "123 - 35 BETALNINGAR 8,95%";
    villkor.namn = "36 månader till 7.95% ränta";
    villkor.antalbetalningar = "35";
    villkor.kampanjavgift = "295";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "7,95";
    villkor.villkorsid = "30";

    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;
    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 3;
    villkor.id = "720";

    //villkor.namn = "268" + " - " + "268 - 59 BETALNINGAR 7,90%";
    villkor.namn = "48 månader till 7.95% ränta";
    villkor.antalbetalningar = "47";
    villkor.kampanjavgift = "295";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "7,95";
    villkor.villkorsid = "97";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;
    adminavgift = "25";

    villkor = new Object();
    villkor.betalningsmodell = 3;
    villkor.id = "806";
    //villkor.namn = "608" + " - " + "Julkampanj";
    villkor.namn = "60 månader till 7.95% ränta";
    villkor.antalbetalningar = "59";
    villkor.kampanjavgift = "295";
    villkor.admavgift = adminavgift;
    villkor.kampanjranta = "7,95";
    villkor.villkorsid = "344";
    villkorarray.length++;
    villkorarray[villkorarray.length - 1] = villkor;
    adminavgift = "25";

    // villkor = new Object(); 
    // villkor.betalningsmodell = 1;
    // villkor.id = "720";
    //villkor.namn = "720" + " - " + "720 - UPP TILL 90 DAGAR";
    //   	villkor.antalbetalningar = "1";
    //  villkor.kampanjavgift = "50";
    // villkor.admavgift = adminavgift;
    //    villkor.kampanjranta = "0,00";
    //    villkor.villkorsid = "447"; 
    //     villkorarray.length++;
    //   villkorarray[villkorarray.length - 1] = villkor;

    kampanjSelect();
    uppdateraKalkyl();
}


function Manadskostnad(pv, fv, ranta, perioder, forskott) {
    //pv = present value
    //fv = future value
    ranta = ranta.replace(',', '.');
    i = ranta / 1200;
    if (perioder == "") {
        return (0);
    }
    if (i != 0) {
        belopp_netto = parseFloat(pv);
        s = forskott;
        sppv = Math.pow((1 + i), -perioder);
        uspv = Number.MAX_VALUE;
        if (i != 0) {
            uspv = (1 - (sppv)) / i;
        }
        manadskostnad = (belopp_netto - (fv * sppv)) / ((1 + (i * s)) * uspv);
    }
    else {
        manadskostnad = (pv - fv) / perioder;
    }
    // alert(manadskostnad);
    return Math.round(manadskostnad);
}


function AntalBetalningar(manadsbelopp, inkopsbelopp, ranta, kampanjavgift, admavgift) {
    var iAntalBetalningar = 0;
    var dblAntalBetalningar = 0;

    ranta = ranta.replace(',', '.');
    ranta = ranta / 1200;

    if (ranta == 0) {
        avbetalningPerManad = manadsbelopp;
        dblAntalBetalningar = (inkopsbelopp + kampanjavgift) / avbetalningPerManad;
        heltalsdel = parseInt(dblAntalBetalningar);
        decimaldel = dblAntalBetalningar - heltalsdel;

        if (((decimaldel * (manadsbelopp - admavgift)) + admavgift) < 100) {
            iAntalBetalningar = heltalsdel;
        }
        else {
            iAntalBetalningar = heltalsdel + 1;
        }
    }
    else {
        //alert("manadsbelopp: " + manadsbelopp + " inkopsbelopp: " + inkopsbelopp + " ranta: " + ranta + " kampanjavgift: " + kampanjavgift + " admavgift: " + admavgift);
        dblAntalBetalningar = Math.log(1 / (1 - ((inkopsbelopp + kampanjavgift) /
			  ((manadsbelopp) / ranta)))) / Math.log(1 + ranta);

        //alert(dblAntalBetalningar);

        heltalsdel = parseInt(dblAntalBetalningar);
        decimaldel = dblAntalBetalningar - heltalsdel;

        //alert(heltalsdel);
        //alert(decimaldel);

        if (((decimaldel * (manadsbelopp - admavgift)) + admavgift) < 100) {
            iAntalBetalningar = heltalsdel;
        }
        else {
            iAntalBetalningar = heltalsdel + 1;
        }
    }
    //alert(iAntalBetalningar);
    return iAntalBetalningar;
}


function Manadskostnadold(inkopsbelopp, antalperioder) {
    manadskostnad = inkopsbelopp / antalperioder;
    return Math.round(manadskostnad);
}


function EffektivRanta(belopp, upplaggningsavgift, admavgift, ranta, antalperioder) {
    var ar;
    var manadskost;
    var calcranta;
    var kreditkostnad;
    var kredperar;
    var kredkostproc;
    var effektivranta;
    ar = antalperioder / 12;
    upplaggningsavgift = upplaggningsavgift.replace(',', '.');
    ranta = ranta.replace(',', '.');
    admavgift = admavgift.replace(',', '.');

    ranta = ranta * 100;

    calcranta = ranta / 120000;
    kreditkostnad = (antalperioder * admavgift) + parseFloat(upplaggningsavgift);
    kredperar = kreditkostnad / ar;
    kredkostproc = (100 * kredperar) / (belopp / 2);

    calcranta = calcranta + kredkostproc / 1200

    effektivranta = Math.ceil(100 * 100 * (Math.pow(1 + calcranta, 12) - 1)) / 100;

    return effektivranta;
}


function uppdateraKalkyl() {
    if (document.aspnetForm.tbxInkopsbelopp.value == null ||
    	document.aspnetForm.tbxInkopsbelopp.value == '' ||
    	isNaN(document.aspnetForm.tbxInkopsbelopp.value)) {
        return;
    }
    ix = document.aspnetForm.ddlKampanj.selectedIndex;

    if (ix == -1 || ix == 0) {
        return;
    }

    kampanj = villkorarray[ix];
    //    alert(kampanj.betalningsmodell);


    pv = parseFloat(window.document.aspnetForm.tbxInkopsbelopp.value);
    var fastbelopp = 0;
    var antalbetalningar;
    var manadsbetalning;
    if ((kampanj.betalningsmodell == "4" && parseFloat(kampanj.lagstattbetala) < 30) || kampanj.antalbetalningar == "1") {
        belopp = parseFloat(window.document.aspnetForm.tbxInkopsbelopp.value);
        belopp = parseFloat(belopp) + parseFloat(kampanj.kampanjavgift) + parseFloat(kampanj.admavgift);

        kampanj.betalningman = belopp;

        window.document.aspnetForm.txtAntalBetalningar.value = "1";
        antalbetalningar = 1;
        fastbelopp = 1;
    }
    else {
        if (kampanj.betalningsmodell == "4" && parseFloat(kampanj.lagstattbetala) >= 30) {
            antalbetalningar = AntalBetalningar(parseFloat(kampanj.lagstattbetala), pv, kampanj.kampanjranta, parseFloat(kampanj.kampanjavgift), parseFloat(kampanj.admavgift));
            fastbelopp = 1;
        }
    }

    window.document.aspnetForm.txtAntalBetalningar.value = kampanj.antalbetalningar;
    window.document.aspnetForm.txtKampanjAvgift.value = kampanj.kampanjavgift;
    window.document.aspnetForm.txtAdminAvgift.value = kampanj.admavgift;
    window.document.aspnetForm.txtKampanjRanta.value = kampanj.kampanjranta;

    if (window.document.aspnetForm.txtAntalBetalningar.value == "" ||
       parseFloat(window.document.aspnetForm.txtAntalBetalningar.value) == 1) {
        window.document.aspnetForm.txtBetalning.value = kampanj.betalningman;
        
        manadsbetalning = kampanj.betalningman
    } else {
        window.document.aspnetForm.txtBetalning.value =
    	parseFloat(Manadskostnad(parseFloat(pv) + parseFloat(kampanj.kampanjavgift), 0, kampanj.kampanjranta,
    				kampanj.antalbetalningar, 0) + parseFloat(kampanj.admavgift));
    	
    	manadsbetalning = parseFloat(Manadskostnad(parseFloat(pv) + parseFloat(kampanj.kampanjavgift), 0, kampanj.kampanjranta,
    				kampanj.antalbetalningar, 0) + parseFloat(kampanj.admavgift));
    }
    
    if (fastbelopp == 1) {
        window.document.aspnetForm.txtAntalBetalningar.value = antalbetalningar;
    }

    window.document.aspnetForm.txtTotalKostnad.value =  totalKostnad(kampanj.antalbetalningar, manadsbetalning)

//    window.document.aspnetForm.txtTotalKostnad.value = totalKostnad(pv,
//        kampanj.kampanjavgift, kampanj.admavgift, kampanj.kampanjranta,
//        kampanj.antalbetalningar);
    //    window.document.aspnetForm.txtEffektiv.value = EffektivRanta(pv,
    //    		      kampanj.kampanjavgift, kampanj.admavgift, kampanj.kampanjranta,
    //    		      kampanj.antalbetalningar);

}


function kampanjSelect() {
    window.document.aspnetForm.ddlKampanj.options.length = 0;
    i = 0;
    villkor = villkorarray[i];
    while (villkor != null) {
        opt = new Option(villkor.namn, villkor.id + "_" + villkor.villkorsid, false, false);
        window.document.aspnetForm.ddlKampanj.options[i] = opt;
        i++;
        villkor = villkorarray[i];
    }
}


function totalKostnad(manader, avgift) {
    return (avgift * manader);
}


window.onload = function() {
    initVillkorarray();
}