$(document).ready(function() {
    $(document).pngFix();

    $(".menu li.submenu1 a").click(function() {
        if ($(this).attr("href") == "#") {
            $(this).next("div").slideToggle("slow").siblings(".menu li:visible").slideUp("slow");
            $(this).toggleClass("active");
            $(this).siblings(".menu li a").removeClass("active");
            return false;
        }
    });

    $(".menu li.submenu2 a").click(function() {
        if ($(this).attr("href") == "#") {
            $(this).next("ul").slideToggle("slow").siblings(".menu li:visible").slideUp("slow");
            $(this).toggleClass("active");
            $(this).siblings(".menu li a").removeClass("active");
            return false;
        }
    });

    $(".mapa-del-sitio li a").click(function() {
        $(this).next("ul").slideToggle("slow").siblings(".mapa-del-sitio li:visible").slideUp("slow");
        $(this).toggleClass("active");
        $(this).siblings(".mapa-del-sitio li a").removeClass("active");
    });

    /* SIMULADOR PLAZO FIJO */
    var monthValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
    var monthSlider = $("#slider-meses").slider({
        min: 1,
        max: 12,
        step: 1,
        slide: function(event, ui) {
            var includeMesesLeft = event.keyCode != $.ui.keyCode.RIGHT;
            var includeMesesRight = event.keyCode != $.ui.keyCode.LEFT;
            monthSlider.slider('option', 'value', findNearestMonth(includeMesesLeft, includeMesesRight, ui.value));
            $("#amount").text(ui.value + " Meses");
            var newMesesLeft = $("#slider-meses a").css("left");
            $("#amount").css("left", newMesesLeft);
            return false;
        },
        change: function(event, ui) {
            getAmount();
        }
    });
    var values = [1000, 2020, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 60000, 65000, 70000, 75000, 80000, 85000, 90000, 95000, 100000];
    var slider = $("#slider-monto").slider({
        min: 1000,
        max: 100000,
        step: 1000,
        slide: function(event, ui) {
            var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
            var includeRight = event.keyCode != $.ui.keyCode.LEFT;
            slider.slider('option', 'value', findNearest(includeLeft, includeRight, ui.value));
            slider.slider('option', 'step', findStepValue(ui.value));
            $("#amount-monto").text("$ " + addCommas(ui.value));
            var newLeft = $("#slider-monto a").css("left");
            $("#amount-monto").css("left", newLeft);
            return false;
        },
        change: function(event, ui) {
            getAmount();
        }
    });
    function findNearest(includeLeft, includeRight, value) {
        var nearest = null;
        var diff = null;
        for (var i = 0; i < values.length; i++) {
            if ((includeLeft && values[i] <= value) || (includeRight && values[i] >= value)) {
                var newDiff = Math.abs(value - values[i]);
                if (diff == null || newDiff < diff) {
                    nearest = values[i];
                    diff = newDiff;
                }
            }
        }
        return nearest;
    }
    function findNearestMonth(includeMesesLeft, includeMesesRight, value) {
        var nearestMonth = null;
        var diffMeses = null;
        for (var i = 0; i < monthValues.length; i++) {
            if ((includeMesesLeft && monthValues[i] <= value) || (includeMesesRight && monthValues[i] >= value)) {
                var newDiffMeses = Math.abs(value - monthValues[i]);
                if (diffMeses == null || newDiffMeses < diffMeses) {
                    nearestMonth = monthValues[i];
                    diffMeses = newDiffMeses;
                }
            }
        }
        return nearestMonth;
    }
    function findStepValue(value) {
        if (value < 15000) {
            stepvalue = 1000;
        } else {
            stepvalue = 5000;
        }
        return stepvalue;
    }
    var newMesesLeft = $("#slider-meses a").css("left");
    $("#amount").css("left", newMesesLeft);

    var newLeft = $("#slider-monto a").css("left");
    $("#amount-monto").css("left", newLeft);

    $("#amount").text($("#slider-meses").slider("value") + " Meses");
    $("#amount-monto").text("$ " + addCommas($("#slider-monto").slider("value")));
});

function mostrarSubItem(nro, cant) {
    var i;
    var abrir = $('#sub_' + nro).style.visibility != 'visible';
    for (i = 1; i <= cant; i++) {
        $('#sub_' + i).hide();
    }
    if (abrir) {
        $('#sub_' + nro).show();
    }
}

jQuery.fn.formatUrl = function(url) {
    var newUrl = url;
    if (url.indexOf('?') == -1) {
        newUrl += '?_=' + parseInt(Math.random() * 9999999999999);
    } else {
        newUrl += '&_=' + parseInt(Math.random() * 9999999999999);
    }
    return newUrl;
}
function getAmount() {
    var meses = parseInt($("#amount").text());
    var dias = meses * 30;
    var monto = parseInt($("#amount-monto").text().replace(".", "").split(' ')[1]);
    var dataObj = { term: dias, amount: monto };
    $.ajax({
        url: '/accesos-directos/simulador/Application/FixedDeposit/Calculate',
        data: dataObj,
        dataType: "json",
        beforeSend: function() {
            /*  MODIFICO LA VISTA PONER EL ESTADO ENVIANDO  */
            $("#controls").fadeTo(300, 0.5);
            $("#preload").css({
                display: "block",
                opacity: 0
            }).fadeTo(300, 1);

            $("#slider-monto").slider("option", "disabled", true);
            $("#slider-meses").slider("option", "disabled", true);
        },
        success: function(data) {
            /*  MODIFICO LA VISTA PARA VOLVER AL ESTADO NORMAL  */
            $("#controls").fadeTo(300, 1);
            $("#preload").css({
                display: "none"
            }).fadeTo(300, 0);
            $("#slider-monto").slider("option", "disabled", false);
            $("#slider-meses").slider("option", "disabled", false);

            var interes = data.totalInterest;
            var interesGanado = data.totalAmountGained;
            var montoTotal = data.totalAmount;

            $("#tasa-interes").fadeTo(300, 0, function() {
                $(this).children("span").text(interes+" %");
                $("#interes-ganado").fadeTo(300, 0, function() {
                    $(this).children("span").text(""+interesGanado);
                    $("#monto-total").fadeTo(300, 0, function() {
                        $(this).children("span").text(""+montoTotal);
                        $("#tasa-interes").fadeTo(300, 1, function() {
                            $("#interes-ganado").fadeTo(300, 1, function() {
                                $("#monto-total").fadeTo(300, 1);
                            });
                        });
                    });
                });
            });
        }
    });
}
function addCommas(nStr) {
    nStr += '';
    x = nStr.split(',');
    x1 = x[0];
    x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + '.' + '$2');
    }
    return x1 + x2;
}
