﻿

//Calcs consumer
$(document).ready(function() {

    $('#calc_consumer').click(function() {

        $('#result_consumer').show();

        //get language
        var urlArr = window.location.href.split("/");
        var bg = false;
        for (var i = 0; i < urlArr.length; i++) {
            if (urlArr[i].toLowerCase() == 'bg-BG'.toLowerCase()) {
                bg = true;
                break;
            }
        }

        //initialize values from DB (available in hidden fields in the page)
        var interest1 = $('#txtNoGuaranteePercent').attr("value") / 100;
        var interest2 = $('#txtWithGuaranteePercent').attr("value") / 100;
        var interest3 = $('#txtWithMortgagePercent').attr("value") / 100;

        var tax1 = $('#txtApplicationFee').attr("value");

        var creditTax1 = $('#txtNoGuaranteeFee').attr("value") / 100;
        var creditTax2 = $('#txtWithGuaranteeFee').attr("value") / 100;
        var creditTax3 = $('#txtWithMortgageFee').attr("value") / 100;

        var min1 = $('#txtNoGuaranteeMin').attr("value");
        var max1 = $('#txtNoGuaranteeMax').attr("value");
        var min2 = $('#txtWithGuaranteeMin').attr("value");
        var max2 = $('#txtWithGuaranteeMax').attr("value");
        var min3 = $('#txtWithMortgageMin').attr("value");
        var max3 = $('#txtWithMortgageMax').attr("value");


        ///////////////////////////////////UBB's logic refactored///////////////////////////////////////////


        var T_Price = 0;
        var T_Price2 = 0;
        var amount;
        var myamount;
        var myterm;
        var interest;
        var error = 7;
        var creditTax;
        var requestTax = tax1; //ednokratna taksa za molba


        //checks the selected credit type
        var isType1 = $('#credit_type1').is(':checked');
        var isType2 = $('#credit_type2').is(':checked');
        var isType3 = $('#credit_type3').is(':checked');

        //checks the selected credit type and sets interest
        if (isType1) { interest = interest1; creditTax = creditTax1; error = 0; }
        if (isType2) { interest = interest2; creditTax = creditTax2; error = 0; }
        if (isType3) { interest = interest3; creditTax = creditTax3; error = 0; }

        //gets the selected year and sets number of months
        var months = $('#years').val();
        myterm = months;

        //gets the entered amount
        myamount = parseInt($('#consumer_amount').attr('value'));

        if (myamount == 0) {
            error = 8;
        }

        //TODO: !!!THERE SOULD BE A CHECK FOR SOME KIND OF MINIMAL AMOUNT 
        //IT BRAKES DOWN IF THERE IS NOT SUCH A CHECK


        if (isType1 && ((myamount < min1) || (myamount > max1))) { error = 2; }
        if (isType1 && (myterm > 96)) { error = 3; }

        if (isType2 && ((myamount < min2) || (myamount > max2))) { error = 4; }
        if (isType2 && (myterm > 96)) { error = 5; }

        if (isType3 && ((myamount < min3) || (myamount > max3))) { error = 9; }


        if (error == 0) {
            var vnoskaA;
            vnoskaNA = new Array;
            discountA = new Array;
            discountNA = new Array;
            var p1NA = interest;
            var p1A = interest;
            var p2NA = 0.32; //??
            var p2A = 0.32; //??
            var p3NA;
            var p3A;
            var okA = 0;
            var okNA = 0;
            var sumaA;
            var sumaNA;

            vnoskaA = (myamount * (interest / 12)) / (1 - Math.pow((1 + interest / 12), (-myterm)));

            for (i = 1; i <= myterm; i++) {
                vnoskaNA[i] = ((myamount / myterm) + (myamount * interest / 12) * (1 - (i - 1) / myterm));
            }

            netCredit = myamount - myamount * creditTax - requestTax; // added requestTax

            // Binary search
            while ((okNA == 0) || (okA == 0)) {
                //var j;
                //for (j=0; j<30; j++) {
                p3NA = (p1NA + p2NA) / 2;
                p3A = (p1A + p2A) / 2;
                sumaA = 0;
                sumaNA = 0;

                for (i = 1; i <= myterm; i++) {
                    discountA[i] = vnoskaA / Math.pow((1 + p3A), (i / 12));
                    discountNA[i] = vnoskaNA[i] / Math.pow((1 + p3NA), (i / 12));
                    sumaA += discountA[i];
                    sumaNA += discountNA[i];
                }

                sumaA = (parseInt(sumaA * 10000)) / 10000;
                sumaNA = (parseInt(sumaNA * 10000)) / 10000;

                //alert(netCredit + " " + sumaNA + " " + sumaA);

                if (netCredit > sumaNA) { p2NA = p3NA; } 	// namaljava gornata granica
                if (netCredit < sumaNA) { p1NA = p3NA; } // uvelichava dolnata granica

                if (netCredit > sumaA) { p2A = p3A; } 	// namaljava gornata granica
                if (netCredit < sumaA) { p1A = p3A; } // uvelichava dolnata granica

                if (netCredit == sumaNA) { okNA = 1; }
                if (netCredit == sumaA) { okA = 1; }

            }

            var resNA = (parseInt(p3NA * 10000)) / 100;

            var resA = (parseInt(p3A * 10000)) / 100;

            //alert(resA + " " + resNA);

            vnoskaNA[1] = (parseInt(vnoskaNA[1] * 100)) / 100;
            vnoskaNA[myterm] = (parseInt(vnoskaNA[myterm] * 100)) / 100;
            vnoskaA = (parseInt(vnoskaA * 100)) / 100;

            if (isType1) {

                if (bg) {
                    vnoskaNA[1] = "не се предлага";
                    vnoskaNA[myterm] = "не се предлага";
                    resNA = "не се предлага";
                }
                else {
                    vnoskaNA[1] = "not supported";
                    vnoskaNA[myterm] = "not supported";
                    resNA = "not supported";
                }
            }

            $('#T_Price').text(vnoskaNA[1]);
            $('#T_Price2').text(vnoskaNA[myterm]);

            if (!isType1) {
                $('#T_Price3').text(resNA + ' %');
            }
            else {
                $('#T_Price3').text(resNA);
            }

            $('#T_Price4').text(vnoskaA);
            $('#T_Price5').text(resA + ' %');

        }


        ///////////////////////////////////UBB's logic refactored///////////////////////////////////////////





        //localizing
        if (bg) {

            if (error == 2) { error = 0; $('#result_consumer').hide(); alert("Потребителски кредит без поръчители се отпуска от 500 до 10 000 лв."); }
            if (error == 3) { error = 0; $('#result_consumer').hide(); alert("Потребителски кредит без поръчители се отпуска до 8 години."); }
            if (error == 4) { error = 0; $('#result_consumer').hide(); alert("Потребителски кредит с поръчители се отпуска от 10 000 до 20 000 лв."); }
            if (error == 5) { error = 0; $('#result_consumer').hide(); alert("Потребителски кредит с поръчители се отпуска до 8 години."); }
            if (error == 8) { error = 0; $('#result_consumer').hide(); alert("Моля, въведете сума."); }
            if (error == 9) { error = 0; $('#result_consumer').hide(); alert("Потребителски кредит със залог се отпуска от 500 до 50 000 лв."); }
            // default error
            if (error == 7) { error = 5; $('#result_consumer').hide(); alert("Моля, най-напред изберете тип на кредита."); }

        }
        else {

            if (error == 2) { error = 0; $('#result_consumer').hide(); alert("Allowed amount is from 500 to 10 000 BGN."); }
            if (error == 3) { error = 0; $('#result_consumer').hide(); alert("Maximum allowed term is 8 years."); }
            if (error == 4) { error = 0; $('#result_consumer').hide(); alert("Allowed amount is from 10 000 to 20 000 BGN."); }
            if (error == 5) { error = 0; $('#result_consumer').hide(); alert("Maximum allowed term is 8 years."); }
            if (error == 8) { error = 0; $('#result_consumer').hide(); alert("Please, enter an amount."); }
            if (error == 9) { error = 0; $('#result_consumer').hide(); alert("Allowed amount is from 500 to 50 000 BGN."); }
            // default error
            if (error == 7) { error = 5; $('#result_consumer').hide(); alert("Please, select loan type."); }

        }

    });
});