rw.relatorios = (function ($, rw) {
    //esta função será apagada após todos os relatórios terem sido adaptados
    function carregaSelect(idSelect, modulo, componente, idBtnOK) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var options = ""
            $.map(data.resposta.relatorios, function (relatorio) {
                options += '<option value="' + relatorio + '">' + relatorio + '</option>'
            })
            $(idSelect).html(options)

            if (idBtnOK && options == "")
                rw.habilitaCampo(idBtnOK, false)
        }

        $.ajax("../api/df/modelos-relatorios.asp", {
            data: {
                mod: modulo,
                comp: componente
            }, async: true,
            success: callback
        })
    }

    function carregaSelectLayoutGE(url, idSelect, idTipoPDF, idTipoWKR, idBtnOk, idAtendimento) { // Este relório possui um caso especial, logo deve ser tratado separadamente (relatorio de atendimento técnico)

        rw.habilitaCampo(idBtnOk, false)

        $(idAtendimento).change(function () {

            if ($(idAtendimento).val() != "") {
                rw.habilitaCampo(idBtnOk, true)
            } else {
                rw.habilitaCampo(idBtnOk, false)
            }
        })

        var callback = function (data) {
            var options = ""

            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
            } else {
                $.map(
                    data.resposta.registros,
                    function (registros) {
                        options += '<option value="' + registros.relatorio + '">' + registros.relatorio + '</option>'
                    }
                )

                $(idSelect).html(options)
            }

            if (options == "")
                rw.habilitaCampo(idBtnOK, false)
        }

        $.ajax("../api/df/modelos-relatoriosLayoutGE.asp", {
            data: {
            }, async: true,
            success: callback
        })
    }

    function cria(url, modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, fnParametrosRelatorio) {
        $(idTipoPDF).attr("checked", true)

        if (!rw.temImpressoraPadrao()) {
            $(idTipoPDF).attr("disabled", true)
            $(idTipoWKR).attr("checked", true)
        }

        //preencher o select
        var callback = function (data) {
            var options = ""

            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
            } else {
                $.map(
                    data.resposta.relatorios,
                    function (relatorio) {
                        options += '<option value="' + relatorio + '">' + relatorio + '</option>'
                    }
                )

                $(idSelect).html(options)
            }

            if (options == "")
                rw.habilitaCampo(idBtnOK, false)
        }

        $.ajax("../api/df/modelos-relatorios.asp", {
            data: {
                mod: modulo,
                comp: componente
            }, async: true,
            success: callback
        })

        //executar o relatório ao clicar no OK
        $(idBtnOK).click(
            function () {
                window.location = url + fnParametrosRelatorio()
            }
        )
    }

    return {
        cria: cria,
        carregaSelect: carregaSelect,
        carregaSelectLayoutGE: carregaSelectLayoutGE
    }
} ($, rw))

rw.relatorios.pontoReposicao = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idFilial, idData) {
        rw.relatorios.cria(
            "../api/es/relatorio-pontoReposicao.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idFilial, idData)
        )
    }

    function parametros(idSelect, idTipoPDF, idFilial, idData) {
        return function () {  
                var param = {}
                param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
                param.modelo = $(idSelect).val()
                param.filial = $(idFilial).val()
                param.data = $(idData).val()
                return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.planoContabil = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idConta) {
        rw.relatorios.cria(
            "../api/df/relatorio-planocontabil.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idConta)
        )
    }

    function parametros(idSelect, idTipoPDF, idConta) {
        return function() {
            var param = {}
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.modelo = $(idSelect).val()
            param.conta = $(idConta).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.planoGerencial = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idConta) {
        rw.relatorios.cria(
            "../api/df/relatorio-planogerencial.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idConta)
        )
    }

    function parametros(idSelect, idTipoPDF, idConta) {
        return function() {
            var param = {}
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.modelo = $(idSelect).val()
            param.conta = $(idConta).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.relacaoPedidos = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOk, idDataInicial, idDataFinal, idCliente) {
        rw.relatorios.cria(
            "../api/ft/relatorio-pedidos.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOk,
            parametros(idCliente, idDataInicial, idDataFinal, idSelect, idTipoPDF)
        )
    }

    function parametros(idCliente, idDataInicial, idDataFinal, idSelect, idTipoPDF) {
        return function () {
            var param = {}
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.modelo = $(idSelect).val()
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            param.cliente = $(idCliente).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.comissoesAPagar = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal) {
        rw.relatorios.cria(
            "../api/ft/relatorio-comissoes.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idDataInicial, idDataFinal)
        )
    }
    
    function parametros(idSelect, idTipoPDF, idDataInicial, idDataFinal) {
        return function () {
            var param = {}
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.movimentos = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal, idTipoData, idSituacao) {
        rw.relatorios.cria(
            "../api/ft/relatorio-movimentos.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, tipoPDF, idDataInicial, idDataFinal, idSituacao, idTipoData)
        )
    }

    function parametros(idSelect, tipoPDF, idDataInicial, idDataFinal, idSituacao, idTipoData) {
        return function () {
            var param = {}
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            param.situacao = $(idSituacao).val()
            param.tipoData = $(idTipoData).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.vendas = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal, idCliente, idFilial) {
        rw.relatorios.cria(
            "../api/ft/relatorio-vendas.asp",
            "DF",
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idCliente, idFilial, idDataInicial, idDataFinal)
        )
    }

    function parametros(idSelect, idTipoPDF, idCliente, idFilial, idDataInicial, idDataFinal) {
        return function () {
            var param = {}
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.cliente = $(idCliente).val()
            param.filial = $(idFilial).val()
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.balancete = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal, idConta, idSubanaliticas, idTotalAcima) {
        rw.relatorios.cria(
            "../api/cn/relatorio-balancete.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idConta, idDataInicial, idDataFinal, idSubanaliticas, idTotalAcima)
        )
    }

    function parametros(idSelect, idTipoPDF, idConta, idDataInicial, idDataFinal, idSubanaliticas, idTotalAcima) {
        return function () {
            var param = {}
            param.conta = $(idConta).val()
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr" 
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            param.totalEmCima = $(idTotalAcima).attr("checked") ? true : false
            param.incluirSubanaliticas = $(idSubanaliticas).attr("checked") ? true : false
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.razao = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal, idConta) {
        rw.relatorios.cria(
            "../api/cn/relatorio-razao.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, tipoPDF, idConta, idDataInicial, idDataFinal, idConta)
        )
    }

    function parametros(idSelect, tipoPDF, idConta, idDataInicial, idDataFinal, idConta) {
        return function (){
            var param = {}
            param.conta = $(idConta).val()
            param.modelo = $(idSelect).val()
            param.tipo = $(tipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.diarioDetalhado = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal) {
        rw.relatorios.cria(
            "../api/cn/relatorio-diariodetalhado.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idDataInicial, idDataFinal)
        )
    }

    function parametros(idSelec, idTipoPDF, idDataInicial, idDataFinal) {
        return function () {
            var param = {}
            param.modelo = $(idSelec).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.acompanhamentoMensal = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idConta, idDataInicial, idTotalAcima, tipoValor, saldo, credito, debito, movimento) {
        rw.relatorios.cria(
            "../api/cn/relatorio-acompanhamentomensal.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idDataInicial, idTotalAcima, idConta, saldo, credito, debito, movimento)
        )
    }

    function parametros(idSelect, idTipoPDF, idDataInicial, idTotalAcima, idConta, saldo, credito, debito, movimento) {
        return function () {
            var param = {}
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.totalEmCima = $(idTotalAcima).attr("checked") ? true : false            
            param.conta = $(idConta).val()

            var tipoValor
            if($(saldo).attr("checked") == true)
                tipoValor = "saldo"
            else if($(credito).attr("checked") == true)
                tipoValor = "credito"
            else if($(debito).attr("checked") == true)
                tipoValor = "debito"
            else
                tipoValor = "movimento"

            param.tipoValor = tipoValor
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))

rw.relatorios.inversaoGerencial = (function ($, rw) {
    function cria(modulo, componente, idSelect, idTipoPDF, idTipoWKR, idBtnOK, idDataInicial, idDataFinal, idRelacionamento, idMascaraInvertida) {
        rw.relatorios.cria(
            "../api/cn/relatorio-inversaogerencial.asp",
            modulo,
            componente,
            idSelect,
            idTipoPDF,
            idTipoWKR,
            idBtnOK,
            parametros(idSelect, idTipoPDF, idDataInicial, idDataFinal, idRelacionamento, idMascaraInvertida)
        )
    }

    function parametros(idSelect, idTipoPDF, idDataInicial, idDataFinal, idRelacionamento, idMascaraInvertida) {
        return function () {
            var param = {}
            param.modelo = $(idSelect).val()
            param.tipo = $(idTipoPDF).attr("checked") ? "pdf" : "wkr"
            param.dataInicial = $(idDataInicial).val()
            param.dataFinal = $(idDataFinal).val()
            param.relacionamento = $(idRelacionamento).val()
            param.mascara = $(idMascaraInvertida).val()
            return rw.objToUrl(param)
        }
    }

    return {
        cria: cria,
        parametros: parametros
    }
} ($, rw))
