$(function(){
    $('body').css('padding-right','0px');
    container();

    var card_height = function () {
        var topOffset = 87;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".card_height").css("height", (height) + "px");
    };
    $(window).ready(card_height);
    $(window).on("resize", card_height);

    $('.scroll_subitems').slimscroll({
        height: 300
    });

    $('.scroll_categorias').slimscroll({
        height: '100%',
        disableFadeOut: true
    });
    var scroll_categorias = function () {
        var topOffset = 150;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_categorias").css("height", (height) + "px");
        $(".scroll_categorias").css("width", "100% !important;");
    };
    $(window).ready(scroll_categorias);
    $(window).on("resize", scroll_categorias);

    $('.scroll_mesas').slimscroll({
        height: '100%',
        width: '100%',
        disableFadeOut: true
    });
    var scroll_mesas = function () {
        var topOffset = ($('#rol_usr').val() == 5) ? 170 : 240;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_mesas").css("height", (height) + "px");
        $(".scroll_mesas").css("width", "100% !important;");
    };
    $(window).ready(scroll_mesas);
    $(window).on("resize", scroll_mesas);

    $('.scroll_mostrador').slimscroll({
        height: '100%'
    });
    var scroll_mostrador = function () {
        var topOffset = 271;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_mostrador").css("height", (height) + "px");
    };
    $(window).ready(scroll_mostrador);
    $(window).on("resize", scroll_mostrador);

    $('.scroll_content_pedidos').slimscroll({
        height: '100%'
    });
    var scroll_content_pedidos = function () {
        var topOffset = 360;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_content_pedidos").css("height", (height) + "px");
    };
    $(window).ready(scroll_content_pedidos);
    $(window).on("resize", scroll_content_pedidos);

    // $('.scroll_pedidos').slimscroll({
    //     height: '100%',
    //     disableFadeOut: true
    // });
    var scroll_pedidos = function () {
        var topOffset = 213;
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        // $(".scroll_pedidos").css("height", (height) + "px");
    };
    $(window).ready(scroll_pedidos);
    $(window).on("resize", scroll_pedidos);

    $('.scroll_productos').slimscroll({
        height: '100%',
        wheelStep : 10,
        touchScrollStep :75
    });
    var scroll_productos = function () {
        if(screen.width > 767){
            var topOffset = 100;
        } else if (screen.width < 768){
            var topOffset = 78;
        }
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_productos").css("height", (height) + "px");
    };
    $(window).ready(scroll_productos);
    $(window).on("resize", scroll_productos);

    $('.scroll_orden').slimscroll({
        height: '100%'
    });
    var scroll_orden = function () {
        if(screen.width > 767){
            var topOffset = 249;
        } else if (screen.width < 768){
            var topOffset = 232;
        }
        var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1;
        height = height - topOffset;
        $(".scroll_orden").css("height", (height) + "px");
    };
    $(window).ready(scroll_orden);
    $(window).on("resize", scroll_orden);
});

var container = function(){
    if($('#rol_usr').val() == 5){
        $('.u4-2-1').addClass('p-0 col-lg-8');
    }
}

/* Cancelar pedido de la lista */

var validarImpresionLocalConfigLegacy = function(showAlert){
    if(typeof showAlert === "undefined") showAlert = true;

    if($('#print_com').val() != 1){
        return true;
    }

    var pcIp = ($('#pc_ip').val() || '').trim();
    if(!pcIp){
        if(showAlert){
            Swal.fire({
                icon: 'warning',
                title: 'Impresión local no configurada',
                text: 'Falta configurar la IP de Mike (pc_ip).',
                confirmButtonColor: '#34d16e'
            });
        }
        return false;
    }
    return true;
}

var abrirVentanaImpresionSeguro = function(url, features){
    var popup = window.open(url, '_blank', features || '_blank');
    if(!popup){
        Swal.fire({
            icon: 'warning',
            title: 'Popup bloqueado',
            text: 'Permite ventanas emergentes para poder imprimir comandas.',
            confirmButtonColor: '#34d16e'
        });
        return false;
    }
    return true;
}

var getConfigMostrarPrecioComandaLegacy = function(){
    return ($('#mostrar_precio_comanda').val() || '0') == '1' ? '1' : '0';
}

var limpiarTextoComandaLegacy = function(value){
    return String(value || '').replace(/\s+/g, ' ').trim();
}

var valorValidoComandaLegacy = function(value){
    var txt = limpiarTextoComandaLegacy(value);
    var lower = txt.toLowerCase();
    if(!txt || txt === '-' || lower === 'undefined' || lower === 'null' || lower === 'mesa: -' || lower === 'mesa:-' || lower === 'mesa: s/n'){
        return '';
    }
    return txt;
}

var extraerMesaComandaLegacy = function(value){
    var txt = limpiarTextoComandaLegacy(value);
    var match = txt.match(/mesa\s*:\s*([^-|]+)/i);
    if(!match) return '';
    return valorValidoComandaLegacy(match[1]);
}

var extraerSalonComandaLegacy = function(value){
    var txt = limpiarTextoComandaLegacy(value);
    if(!txt) return '';
    var partes = txt.split(/\s*-\s*mesa\s*:/i);
    return valorValidoComandaLegacy(partes[0] || '');
}

var getCabeceraComandaLegacy = function(){
    var tipoPedido = parseInt($('#codtipoped').val(), 10) || 0;
    var numeroUi = limpiarTextoComandaLegacy($('.pedido-numero').text());
    var clienteUi = limpiarTextoComandaLegacy($('.pedido-cliente').text());
    var infoMesa = limpiarTextoComandaLegacy($('#info_mesa').text());
    var salonHidden = valorValidoComandaLegacy($('#salon').val());
    var mesaHidden = valorValidoComandaLegacy($('#mesa').val());

    if(tipoPedido === 1){
        var salon = salonHidden || extraerSalonComandaLegacy(infoMesa) || extraerSalonComandaLegacy(numeroUi) || valorValidoComandaLegacy(numeroUi);
        var mesa = mesaHidden || extraerMesaComandaLegacy(infoMesa) || extraerMesaComandaLegacy(numeroUi) || extraerMesaComandaLegacy(clienteUi);

        return {
            pedido_tipo: tipoPedido,
            pedido_numero: salon || 'MESA',
            pedido_cliente: mesa ? 'Mesa: ' + mesa : 'Mesa: S/N'
        };
    }

    return {
        pedido_tipo: tipoPedido,
        pedido_numero: valorValidoComandaLegacy(numeroUi),
        pedido_cliente: valorValidoComandaLegacy(clienteUi)
    };
}


var impresion_ticket = function(id_pedido){
    $.ajax({
        //cache: false,
        async: false,
        type: 'POST',
        dataType: 'JSON',
        url: $('#url').val()+'venta/listarPedidosTicket',
        data: {
            id_pedido: id_pedido
        },
        success: function (data) {

            var array = data; //3
            var contador = new Array();
            var nuevoarray = new Array();
            var i,y,z;

            for(i=0; i < array.length; i++){
                contador.push(array[i].id_areap); // selecciona las impresoras asi sean duplicadas
            }

            cont = [...new Set(contador)]; // fiktra impresoras sin repetirse

            for(y=0; y < cont.length; y++){
                var cabeceraComanda = getCabeceraComandaLegacy();
                for(z=0; z < array.length; z++){
                    if(array[z].id_areap == cont[y]){
                        nuevoarray.push(array[z]);
                        nombre_impresora = array[z].nombre_imp;
                    }
                }
                var nuevopedido = {
                    pedido_tipo : cabeceraComanda.pedido_tipo,
                    pedido_numero : cabeceraComanda.pedido_numero,
                    pedido_cliente : cabeceraComanda.pedido_cliente,
                    pedido_mozo : $('#nombre_mozo').val(),
                    correlativo_imp : correlativo_imp(),  
                    nombre_imp : nombre_impresora,
                    nombre_pc : $('#pc_name').val(),
                    mostrar_precio_comanda : getConfigMostrarPrecioComandaLegacy(),
                    codigo_anulacion : 0,
                    items : nuevoarray
                }
                
                var dataEncoded = encodeURIComponent(JSON.stringify(nuevopedido));
                if(!validarImpresionLocalConfigLegacy(true)){
                    continue;
                }
                abrirVentanaImpresionSeguro('http://'+$('#pc_ip').val()+'/imprimir/comanda.php?data='+dataEncoded,'_blank');
                var nuevoarray = new Array();

                //console.log(nuevopedido);
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log(errorThrown + ' ' + textStatus);
        }   
    });
}

var impresion_comanda = function(id_pedido,estado_pedido){
    $.ajax({
        //cache: false,
        async: false,
        type: 'POST',
        dataType: 'JSON',
        url: $('#url').val()+'venta/listarUpdatePedidos',
        data: {
            id_pedido: id_pedido, 
            estado_pedido: estado_pedido
        },
        success: function (data) {
// console.log(data)
            var array = data; //3
            var contador = new Array();
            var nuevoarray = new Array();
            var i,y,z;

            for(i=0; i < array.length; i++){
                contador.push(array[i].id_areap); // selecciona las impresoras asi sean duplicadas
            }

            cont = [...new Set(contador)]; // fiktra impresoras sin repetirse

            for(y=0; y < cont.length; y++){
                var cabeceraComanda = getCabeceraComandaLegacy();
                for(z=0; z < array.length; z++){
                    if(array[z].id_areap == cont[y]){
                        nuevoarray.push(array[z]);
                        nombre_impresora = array[z].nombre_imp;
                    }
                }
                var nuevopedido = {
                    id_pedido : id_pedido,
                    pedido_tipo : cabeceraComanda.pedido_tipo,
                    pedido_numero : cabeceraComanda.pedido_numero,
                    pedido_cliente : cabeceraComanda.pedido_cliente,
                    direccion_cliente : $('.pedido-direccion').text(),
                    pedido_mozo : $('#nombre_mozo').val(),
                    direccion_comanda : $('#direccion_comanda').val(),
                    pedido_comanda : $('#pedido_comanda').val(),
                    mostrar_precio_comanda : getConfigMostrarPrecioComandaLegacy(),
                    correlativo_imp : correlativo_imp(),  
                    nombre_imp : nombre_impresora,
                    nombre_pc : $('#pc_name').val(),
                    host_pc : $('#host_pc').val(),
                    codigo_anulacion : 0,
                    items : nuevoarray
                }
                var dataEncoded = encodeURIComponent(JSON.stringify(nuevopedido));

                if($('#print_com').val() == 1){
                    if(!validarImpresionLocalConfigLegacy(true)){
                        continue;
                    }
                    abrirVentanaImpresionSeguro('http://'+$('#pc_ip').val()+'/imprimir/comanda.php?data='+dataEncoded,'_blank');
                }else{

                    abrirVentanaImpresionSeguro(''+$("#url").val()+'venta/impresion_comanda/?data='+dataEncoded, "top=500,left=500,width=400,height=400");

                }
                var nuevoarray = new Array();

                //console.log(nuevopedido);
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log(errorThrown + ' ' + textStatus);
        }   
    });
}

var correlativo_imp = function(){
    var contador_impresion;
    $.ajax({
        async: false,
        //cache: false,
        type: 'POST',
        dataType: 'JSON',
        url: $('#url').val()+'venta/contador_comanda',
        success: function (data) {
            contador_impresion = data.length;
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log(errorThrown + ' ' + textStatus);
        }   
    });
    return ("000000" + contador_impresion).substr(-6,6);
}

$('#tipo_pago').change( function() {
    if($("#tipo_pago").val() == 1 || $("#tipo_pago").val() == 3){
        $("#pago_e").focus();
    }else{
        $("#pago_t").focus();
    }
});

$('.btn-up').on("click", function(){
    var posicion = $('#card1').offset().top;
    $('html,body').animate({
        scrollTop: posicion
    }, 500);
});

$('.btn-down').on("click", function(){
    var posicion = $('#card2').offset().top;
    $('html,body').animate({
        scrollTop: posicion
    }, 500);
});

var reimpresion_comanda = function(id_key){
    // console.log('dddd');
    $.ajax({
        //cache: false,
        async: false,
        type: 'POST',
        dataType: 'JSON',
        url: $('#url').val()+'venta/reimpresion_comanda',
        data: {
            id_key: id_key 
        },
        success: function (data) {

            var array = data; //3
            var contador = new Array();
            var nuevoarray = new Array();
            var i,y,z;

            for(i=0; i < array.length; i++){
                // contador.push(array[i].id_areap); // selecciona las impresoras asi sean duplicadas
                contador.push(parseInt(array[i].id_areap));
            }

            cont = [...new Set(contador)]; // fiktra impresoras sin repetirse

            for(y=0; y < cont.length; y++){
                var cabeceraComanda = getCabeceraComandaLegacy();
                for(z=0; z < array.length; z++){
                    if(array[z].id_areap == cont[y]){
                        nuevoarray.push(array[z]);
                        nombre_impresora = array[z].nombre_imp;
                    }
                }
                
                var nuevopedido = {
                    pedido_tipo : cabeceraComanda.pedido_tipo,
                    pedido_numero : cabeceraComanda.pedido_numero,
                    pedido_cliente : cabeceraComanda.pedido_cliente,
                    pedido_mozo : $('#nombre_mozo').val(),
                    pedido_telefono : $('.pedido-telefono').text(),
                    pedido_direccion : $('.pedido-direccion').text(),
                    correlativo_imp : correlativo_imp(),  
                    nombre_imp : nombre_impresora,
                    nombre_pc : $('#pc_name').val(),
                    mostrar_precio_comanda : getConfigMostrarPrecioComandaLegacy(),
                    host_pc : $('#host_pc').val(),
                    codigo_anulacion : 0,
                    items : nuevoarray
                }
                var dataEncoded = encodeURIComponent(JSON.stringify(nuevopedido));

                if($('#print_com_combo').val() == 1){
                    impresion_comanda_combo(nuevoarray);
                } 

                if($('#print_com').val() == 1){
                    if (nombre_impresora != 'NINGUNO') {
                        if(!validarImpresionLocalConfigLegacy(true)){
                            continue;
                        }
                        abrirVentanaImpresionSeguro('http://'+$('#pc_ip').val()+'/imprimir/comanda.php?data='+dataEncoded,'_blank');
                    }
                }else{
                    abrirVentanaImpresionSeguro(''+$("#url").val()+'venta/impresion_comanda/?data='+dataEncoded, "top=500,left=500,width=400,height=400");
                }
                var nuevoarray = new Array();

            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log(errorThrown + ' ' + textStatus);
        }   
    });
}
