var StatusRegenCalendar = {
    init: function() {

        $('#actualizar_calendarios').click(function () {
            StatusRegenCalendar.actualizarCalendarios('regen_calendarios');
            return false;
        });

        $('#mostrar_log,#open_log_calendar').click(function () {
            $('#modal_logs div.modal-body').load($(this).attr('href'));
            $('#modal_logs').modal();
            return false;
        });

        // cargamos el select de meses cuando cambia el año.
        $('#anio').change(function() {
            var meses = '';
            var nombres_meses = {
                '01': 'Enero',
                '02': 'Febrero',
                '03': 'Marzo',
                '04': 'Abril',
                '05': 'Mayo',
                '06': 'Junio',
                '07': 'Julio',
                '08': 'Agosto',
                '09': 'Septiembre',
                '10': 'Octubre',
                '11': 'Noviembre',
                '12': 'Diciembre'
            };
            var option_tpl = "<option value='valor_mes'>nombre_mes</option>";
            var options = '<option value="">-- Selecciona --</option>';
            if ($(this).val().match(/\d{4}/)) {
                meses = anios_meses[$(this).val()];
                for (var i = 0; i < meses.length; i++) {
                    options += option_tpl.replace('valor_mes', meses[i]).replace('nombre_mes', nombres_meses[meses[i]]);
                }
            }
            $('#mes').html(options);
        });

        // reset del select al cargar la página.
        $('#anio').val('');

    },

    checkStatus: function(theURL, element_id) {
        $.ajax({
            url: theURL,
            dataType: 'json',
            cache: false,
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                SubmitForm.handleError(theURL, XMLHttpRequest, textStatus, errorThrown);
            },
            success: function (resp, textStatus) {
                if (resp.status === 1) {
                    // todo bien
                    if (resp.finish === 0 || typeof resp.finish === 'undefined') {
                        // en proceso
                        if (resp.progress != '') {
                            $('#' + element_id + ' .msg-status').html(resp.progress);
                            $('#' + element_id + ' .msg-status').fadeIn();
                        }
                        setTimeout(StatusRegenCalendar.checkStatus, 1000, theURL, element_id);
                        return;
                    } else {
                        // terminó.
                        $('#' + element_id + ' .msg-progress').hide();
                        $('#' + element_id + ' .msg-result').fadeIn();
                        $('#' + element_id + ' .msg-log').fadeIn();
                        return;
                    }
                } else {
                    // error
                    $('#' + element_id + ' .msg-status').hide();
                    $('#' + element_id + ' .msg-progress').hide();
                    $('#' + element_id + ' .msg-error').html(resp.msg);
                    $('#' + element_id + ' .msg-error').fadeIn()
                    $('#' + element_id + ' .msg-log').fadeIn();
                    return;
                }
            }
        });

    },

    actualizarCalendarios: function (element_id) {
        $('#' + element_id).hide();
        $('#' + element_id +' div>div').hide();
        // Eliminamos mensajes de error previos
        $('.msg-error').html('');
        // Validaciones.
        var fids_checked = $('input.INPUT_FIDS_REGEN_CALENDAR:checked').length;
        var href = '/' + Admin.dir_cgi_cpn + '/' + Opciones.urlRegenCAL;

        // Fecha y prontus
        var data = {
            anio: $('#anio').val(),
            mes: $('#mes').val(),
            _prontus_id: Admin.prontus_id
        };

        if (fids_checked > 0) {
            // Fids.
            var includefids = new Array();
            var excludefids = new Array();
            $('input.INPUT_FIDS_REGEN_CALENDAR:checked').each(function () {
                var value = $(this).val();
                if (value.startsWith('inc')) {
                    includefids.push(value.substring(4));
                } else if (value.startsWith('exc')) {
                    excludefids.push(value.substring(4));
                }
            });
            var includefids_str = includefids.join(',');
            var excludefids_str = excludefids.join(',');

            if (includefids.length > 0) {
                data['includefids'] = includefids_str;
            }
            if (excludefids.length > 0) {
                data['excludefids'] = excludefids_str;
            }
        }

        showModalConfirm({
            'title': 'Actualización de calendarios',
            'msg': '¿Estás seguro de ejecutar la actualización de calendarios?',
            type: "orange",
            icon: "glyphicon glyphicon-exclamation-sign",
            btnClassOk: 'hovwhite radius15 noborder txtnextwhite pad-top-bot7 pad-lef-rig20 int-nextyellow nextyellow',
            okTitle: 'Actualizar',
            cbBtnOK: function () {
                $.ajax({
                    url: href ,
                    type: "POST",
                    dataType: 'json',
                    data: data,
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        SubmitForm.handleError(href, XMLHttpRequest, textStatus, errorThrown);
                    },
                    success: function(resp, textStatus) {
                        setTimeout(StatusRegenCalendar.checkStatus, 1500, '/' + Admin.prontus_id + '/cpan/procs/loading/result_prontus_update_calendar.json', 'regen_articulos');
                        $('#' + 'regen_articulos').show();
                        $('#' + 'regen_articulos' + ' .msg-progress').show();
                        $('#' + 'regen_articulos' + ' .msg-progress .progress-bar').show();
                    }
                });
                return true;
            }
        });
        return true;
    },

    modalInProcess: function() {
        showModalAlert({
            title: 'Regeneración de Calendarios',
            type: 'red',
            msg: 'El proceso se encuentra en ejecución, por favor espere.'
        });
    }
};

$(document).ready(function () {
    StatusRegenCalendar.init();
});
