<script>
    var flagAgente = true;
    var llameCampana = false;
    var nuevo = false;
    $(document).ready(function() {
        //validate_user_form();
        $("#login_username").val("");
        $("#login_password").val("");
        $("#ext_num").val("");
        $("#ext_pass").val("");
        $("#bloqueCampanas").hide();
        $("#PassExt").hide();
        $("#Extension").hide();
        $("#error").hide();
        $("#error1").hide();
        $("#error2").hide();
        $("#error3").hide();
        $("#select").prop('required', false);
        $("#PassExt").prop('required', false);
        $("#Extension").prop('required', false);
    });

    function redirectPost(location, args) {
        var form = '';
        $.each(args, function(key, value) {
            value = value.split('"').join('\"')
            form += '<input type="hidden" name="' + key + '" value="' + value + '">';
        });
        $('<form action="' + location + '" method="POST">' + form + '</form>').appendTo($(document.body)).submit();
    }

    function permisosMicrofono(h) {
        navigator.permissions.query({
            name: "microphone"
        }).then(status => {
            console.log("Estados permisos", status)
            h(status.state === "granted")
        })
    }

    function revisarDispositivos(h) {
        navigator.mediaDevices.getUserMedia({
            audio: true
        }).then(value => {
            navigator.mediaDevices.enumerateDevices().then(devices => {
                const data = {
                    input: [],
                    output: []
                }

                devices.forEach(v => {
                    if (v.kind === "audioinput") data.input.push(v)
                    if (v.kind === "audiooutput") data.output.push(v)
                })

                h(data)
            }).catch(err => {
                h({
                    input: [],
                    output: []
                })
            })
        }).catch(err => {
            h({
                input: [],
                output: []
            })
        })
    }

    function validarUser() {
        $("#boton").prop("disabled", true);
        $("#error").hide();
        $("#error1").hide();
        $("#error2").hide();
        $("#error3").hide();
        $("#mainError").css({
            "opacity": 0
        })
        var usuario = $("#login_username").val();
        var pass = $("#login_password").val();
        var campana = $("#select").val();
        var extension = $("#ext_num").val();
        var pass_ext = $("#ext_pass").val();
        var parametros = {
            extension: extension,
            pass: pass_ext
        };


        if (flagAgente) {
            parametros = {
                user: usuario,
                pass: pass,
                campana: campana,
                extension: extension,
                pass_ext: pass_ext
            };
            if (parametros.campana == null) {
                parametros.campana = '';
            }
            $.ajax({
                url: "<?= MODULOS ?>login/entra",
                type: "POST",
                data: parametros,
                dataType: "text",
                success: function(result) {
                    var res = JSON.parse(result);
                    if (res.Estado.toUpperCase() != "ERROR") {
                        $("#ext_num").val(res.extSali);
                        if (res.Grupo == "<?= GRUPO_AGENTES ?>") {
                            if (nuevo) {
                                window.location.replace("<?= MODULOS ?>homeAgente");
                            } else {
                                redirectPost("/agc_ATP/agente.php", {
                                    phone_login: extension,
                                    phone_pass: pass_ext,
                                    VD_login: usuario,
                                    VD_pass: pass,
                                    VD_campaign: campana
                                });
                            }
                        } else {
                            window.location.replace("<?= MODULOS ?>homeAdmin");
                        }
                    } else {
                        let text = ""
                        if (res.Tipo == 1) {
                            text = $("#error").html();
                        } else {
                            if (res.Tipo == 2) {
                                text = $("#error1").html();
                            } else {
                                text = $("#error3").html();
                            }
                        }
                        $("#boton").prop("disabled", false);
                        $("#mainError").html(text)
                        $("#mainError").css({
                            "opacity": 1
                        })
                    }

                },
                error: function(data) {
                    console.log(data);
                }
            });
        } else {

            const esEdge = navigator.userAgent.indexOf("Edg") > 0

            console.log("Es edge", esEdge)

            if (esEdge) {
                Swal.fire({
                    title: traducirFrase("Navegador incompatible"),
                    text: traducirFrase("Para conectarte como agente, accede desde el navegador Chrome."),
                    icon: 'warning',
                    confirmButtonText: traducirFrase("Entendido"),
                })

                $("#boton").prop("disabled", false);

                return false;
            }

            const terminarLogin = () => $.ajax({
                url: "<?= MODULOS ?>login/validaExtension",
                type: "POST",
                data: parametros,
                dataType: "text",
                success: function(result) {
                    var resp = JSON.parse(result);
                    if (resp.Estado == 'ok') {

                        parametros = {
                            user: usuario,
                            pass: pass,
                            campana: campana,
                            extension: extension,
                            pass_ext: pass_ext
                        };
                        if (parametros.campana == null) {
                            parametros.campana = '';
                        }
                        $.ajax({
                            url: "<?= MODULOS ?>login/entra",
                            type: "POST",
                            data: parametros,
                            dataType: "text",
                            success: function(result) {
                                var res = JSON.parse(result);
                                if (res.Estado.toUpperCase() != "ERROR") {
                                    $("#ext_num").val(res.extSali);
                                    if (res.Grupo == "<?= GRUPO_AGENTES ?>") {
                                        if (nuevo) {
                                            window.location.replace("<?= MODULOS ?>homeAgente");
                                        } else {
                                            redirectPost("/agc_ATP/agente.php", {
                                                phone_login: extension,
                                                phone_pass: pass_ext,
                                                VD_login: usuario,
                                                VD_pass: pass,
                                                VD_campaign: campana
                                            });
                                        }
                                    } else {
                                        window.location.replace("<?= MODULOS ?>homeAdmin");
                                    }
                                } else {
                                    let text = ""
                                    if (res.Tipo == 1) {
                                        text = $("#error").html();
                                    } else {
                                        if (res.Tipo == 2) {
                                            text = $("#error1").html();
                                        } else {
                                            text = $("#error3").html();
                                        }
                                    }
                                    $("#boton").prop("disabled", false);
                                    $("#mainError").html(text)
                                    $("#mainError").css({
                                        "opacity": 1
                                    })
                                }

                            },
                            error: function(data) {
                                console.log(data);
                            }
                        });
                    } else {
                        let text = ""
                        text = $("#error2").html();
                        $("#boton").prop("disabled", false);
                        $("#mainError").html(text)
                        $("#mainError").css({
                            "opacity": 1
                        })
                    }
                },
                error: function(data) {
                    console.log(data);
                }
            });

            permisosMicrofono(function(permitido) {
                const revisarDispositivosYContinuar = () => revisarDispositivos(dispositivos => {
                    Swal.close()
                    if (dispositivos.input.length === 0 || dispositivos.output.length === 0) {
                        // TODO: Avisar que no tiene dispositivos conectado, que los revise
                        Swal.fire({
                            title: traducirFrase("Sin dispositivos conectados"),
                            html: `<p style="text-align: justify;">${traducirFrase("Parece que no tienes conectado ningún micrófono y/o altavoz, que son requeridos para entrar al sistema. Verifica que tus dispositivos estén efectivamente conectados a la computadora. Si no hay problemas con tus dispositivos, verifica los permisos de acceso al micrófono.")}</p>`,
                            icon: "error",
                            confirmButtonText: traducirFrase("Entendido"),
                        })

                        $("#boton").prop("disabled", false);
                    } else {
                        terminarLogin()
                    }
                })

                if (!permitido) {
                    // TODO: Mostrar modal de "Da permisos"
                    Swal.fire({
                        title: traducirFrase("Permisos: micrófono"),
                        html: `<p style="text-align: justify;">${traducirFrase("No se ha podido acceder al micrófono. Por favor, acepta los permisos de micrófono en tu navegador. La alerta se esta mostrando, en la zona superior izquierda de la pantalla.")}</p>`,
                        icon: "warning",
                        confirmButtonText: traducirFrase("Listo"),
                    })

                    revisarDispositivosYContinuar()
                } else {
                    // TODO: Revisar dispositivos
                    revisarDispositivosYContinuar()
                }
            })


        }

        return false;
    }

    function dameCampanas() {
        $("#bloqueCampanas").hide();
        $("#PassExt").hide();
        $("#Extension").hide();


        //$( "#boton" ).prop( "disabled", true );
        var usuario = $("#login_username").val();
        var pass = $("#login_password").val();
        //$("#select").prop('required',true);
        var parametros = {
            user: usuario,
            pass: pass
        };
        $.ajax({
            url: "<?= MODULOS; ?>login/campanas",
            type: "POST",
            data: parametros,
            dataType: "text",
            success: function(result) {
                var res = JSON.parse(result);
                if (res.Estado.toUpperCase() != "ERROR") {
                    $("#boton").prop("disabled", false);
                    $("#select").material_select('destroy');
                    if (res.Tipo == "<?= GRUPO_AGENTES ?>") {
                        flagAgente = false;
                        llameCampana = true;
                        nuevo = res.Nueva;
                        if (res.Nueva) {
                            $("#bloqueCampanas").show();
                            $("#PassExt").hide();
                            $("#Extension").hide();
                            $("#ext_num").val(usuario);
                            $("#ext_pass").val(pass);
                            var campanas = res.Campanas;
                            $('#select').empty();
                            $("#select").append("<option disabled selected>" + traducirFrase("Seleccione una campaña") + "</option>");
                            $.each(campanas, function(key, value) {
                                $("#select").append('<option value=' + value.id + '>' + value.nombre + '</option>');
                            });
                            $('#select').material_select();
                            $("#select").focus();
                        } else {

                            $("#ext_num").val("");
                            $("#ext_pass").val("");
                            $("#bloqueCampanas").show();
                            $("#PassExt").show();
                            $("#Extension").show();
                            var campanas = res.Campanas;
                            $('#select').empty();
                            $("#select").append("<option disabled selected>" + traducirFrase("Seleccione una campaña") + "</option>");
                            $.each(campanas, function(key, value) {
                                $("#select").append('<option value=' + value.id + '>' + value.nombre + '</option>');
                            });
                            $("#PassExt").prop('required', true);
                            $("#Extension").prop('required', true);
                            $('#select').material_select();
                            $("#select").focus();
                        }
                    } else {
                        flagAgente = true;
                        $("#PassExt").prop('required', false);
                        $("#Extension").prop('required', false);
                        $("#select").prop('required', false);
                        $("#select").material_select('destroy');
                        $("#select").val("");
                    }
                } else {
                    if (!llameCampana) {
                        flagAgente = true;
                        $("#PassExt").prop('required', false);
                        $("#Extension").prop('required', false);
                        $("#select").prop('required', false);
                        $("#select").material_select('destroy');
                        $("#select").val("");
                    }
                }
            },
            error: function(data) {
                console.log(data);
            }
        });
    }
</script>

</body>

</html>