// JavaScript Document

;
(function ($) {

    $.fn.cbNotas = function (opciones_user) {

        // Ponemos la variable de opciones antes de la iteración (each) para ahorrar recursos

        $.fn.cbNotas.opc_default = {
            nota: 0,
            idTabla: '',
            nota_pierde: 2.9,
            notaMin: 0,
            notaMax: 5,
            dtsLista: [],
            css_nt_bn: 'nota_ok',
            css_nt_ml: 'nota_mala',
            mask: {
                mask: "9.5",
                type: 'reverse',
                defaultValue: '',
                autoTab: false
            },
        };

        opc = $.extend($.fn.cbNotas.opc_default, opciones_user);

        if (opc.idTabla.indexOf("#") !== 0) {
            opc.idTabla = "#" + opc.idTabla;
        } else {
            opc.idTabla
        }

        var TbNotas = $(opc.idTabla);
        var valor;

        if (opc.notaMax <= 9.9) {
            opc.mask.mask = "9.9";
        } else {
            opc.mask.mask = "9.99";
        }

        var notasEquals = opc.notasEquals

        return this.each(function () {
            elem = $(this);
            valor = parseFloat(elem.val());
            elem.setMask(opc.mask)
            var fil = parseInt(elem.attr('data-fil'));
            var col = parseInt(elem.attr('data-col'));
            var dtnotas = opc.dtsLista['infEst'][fil]['infNots'][col];
            elem.data('dtlnts', dtnotas)
            elem.attr('nact', dtnotas['nns']);
            elem.dblclick(function (e) {
                obj = $(this);
                var coly = parseInt(obj.attr('data-col'))
                if (obj.val() == '' || $("#md_n_periodo option:selected").attr("data-est") == 0)
                    return false;

                $("#nota_rec").val('');

                if ($(this).data('dtlnts').rec) {
                    var dtsRec = $(this).data('dtlnts').dtsRec;
                    $("#fecha_rec").val(dtsRec.fr).trigger("rvalida");
                    $("#nota_rec").val(dtsRec.nt);
                    $("#observacion_rec").val(dtsRec.ob.replace(/<br>/g, '\n'));
                }

                if ($(this).data('dtsRec')) {
                    var dtsRec = $(this).data('dtsRec');
                    $("#fecha_rec").val(dtsRec.fnr).trigger("rvalida");
                    $("#nota_rec").val(dtsRec.ntr);
                    $("#observacion_rec").val(dtsRec.onr.replace(/<br>/g, '\n'));
                }

                elem = $(obj).parents("tr");
                nombre_est = $("#tbDtsEstudiantes tbody tr:eq(" + fil + ") td:eq(0)").text();
                $("#nom_estud").html(nombre_est);

                var xyz = $('thead tr:eq(1) th:eq(' + coly + ')', TbNotas)
                $("#nombre_nota").html(xyz.attr('title') + "" + " - <span style='color:#060'>(N " + (coly + 1) + ")</span>");

                $("#val_nota_orig").html(dtnotas['nns']);
                $("#nom_saber").html(xyz.attr('data-ns')).data("objInput", obj);
                $("#dialog_form_recupera").window("open").window('hcenter').window('vcenter');

            });

            /*----------------------------------------------------------------------*/

            elem.focusout(function (e) {
                var v = $(this).val();
                valor = parseFloat(v);
                valor = isNaN(valor) ? opc.notaMin : valor;
                console.log("npierde: " + opc.nota_pierde);

                if (valor < opc.notaMin || valor > opc.notaMax) {
                    $(this).val(opc.notaMax.toFixed(1))
                    v = opc.notaMax.toFixed(1);
                } else {
                    if (v.length > 0) {
                        $(this).val(valor.toFixed(1))
                        v = valor.toFixed(1);
                    }
                }

                def = 0;

                if (v != dtnotas['nns'] || v != $(this).attr('nact')) {
                    $(this).attr('nact', valor.toFixed(1));
                    if (v <= opc.nota_pierde) {
                        $(this).addClass(opc.css_nt_ml).removeClass(opc.css_nt_bn)
                    } else {
                        $(this).addClass(opc.css_nt_bn).removeClass(opc.css_nt_ml)
                    }

                    if (!$(this).attr('readonly')) {
                        $("#dispUpdates").trigger('updateNtsGral', [fil, col, v, dtnotas['cod_calxasixest']]);
                    }

                    $('input[value!=""]', $(this).closest('tr')).each(function (index, element) {
                        valor = parseFloat($(this).val());
                        valor = isNaN(valor) ? 0 : valor;
                        por_nota = parseFloat($(this).data('dtlnts').pornota) / 100;
                        if (notasEquals == 0) {
                            por_saber = parseFloat($(this).data('dtlnts').porsab) / 100;
                        } else {
                            por_saber = 1;
                        }
                        def = def + (por_nota * valor * por_saber)
                    });

                    if (def <= opc.nota_pierde) {
                        $("#tbDtsEstudiantes tbody tr:eq(" + fil + ") td.ndef").text(def.toFixed(1)).addClass(opc.css_nt_ml).removeClass(opc.css_nt_bn)
                    } else {
                        $("#tbDtsEstudiantes tbody tr:eq(" + fil + ") td.ndef").text(def.toFixed(1)).addClass(opc.css_nt_bn).removeClass(opc.css_nt_ml)
                    }
                    $("#dispUpdates").trigger('updateNtDef', [fil, def.toFixed(1)]);
                }
            });

            elem.change(function (e) {
                alert("cambiando")
                var v = $(this).val();
                valor = parseFloat(v);
                valor = isNaN(valor) ? opc.notaMin : valor;
                alert("npierde: " + opc.nota_pierde);
            })
        });
    };

    function cal_nota_prom_mater() {
        var prom_def = 0;
        cant_fil = numFilTb;
        $("#gfrc2_frozen td[role=definiiva]").each(function (index, element) {
            $nota = parseFloat($(this).html())
            prom_def = prom_def + $nota;
        });
        t = (prom_def / cant_fil)
        $("td[role=pro_definiiva]").each(function (index, element) {
            $(this).html(Math.round(t * 10) / 10);
        });
    }
    ;

})(jQuery);