
////////////////////////////////////VALORES DE PARAMENTROS ESPECIFICOS DO RADAR

// Caracteristica da conta
// Caixa				0000 0000 0000 0001		0001	
// Banco				0000 0000 0000 0010		0002
// Cliente				0000 0000 0000 0100		0004
// Fornecedor			0000 0000 0000 1000		0008
// Transportadora		0000 0000 0001 0000		0010
// Representante		0000 0000 0010 0000		0020
// Sacado				0000 0000 0100 0000		0040
// Cedente				0000 0000 1000 0000		0080
// Entrada de recursos	0000 0001 0000 0000		0100
// Saída de recursos	0000 0010 0000 0000		0200
// Tesouraria			0000 0100 0000 0000		0400
// Patrimônio			0000 1000 0000 0000		0800
// Inativa				0001 0000 0000 0000		1000
// Custo Despesa        0010 0000 0000 0000     2000

// Tipo de parâmetro
// "T"  -> Seleciona somente as contas título(todas).
// "A"  -> Seleciona somente as contas analíticas (dentro do grupo).
// "G"  -> Seleciona somente o grupo de contas (a partir da posição informada).
// "X"  -> Seleciona todas as contas do arquivo.
// "GT" -> Seleciona somente as contas título dentro do grupo de contas (a partir da posição informada).
// "AG" -> Seleciona todas as contas analíticas (do grupo) a partir da posição informada.
// "AX" -> Seleciona todas as contas analíticas (até o final do arquivo) a partir da posição informada.
// "I"  -> Sufixo para filtrar contas inativas.

////////////////////////////////////////FIM DOS VALROES ESPECIFICOS DO RADAR

// Módulo que contém pequenos utilitários que não existem em JavaScript/jQuery
// ou são ruins de se usar.
var rw = (function ($) {
    // Retorna true se houver um algum elemento igual a obj no array arr.
    function contem(arr, obj, fn) {
        if (arguments.length == 2) {
            return $.grep(arr, function (a) {
                return a == obj
            }).length > 0
        } else {
            return $.grep(arr, function (a) {
                return fn(a) == obj
            }).length > 0
        }
    }

    //zera o keyCode e o shiftKey
    function zeraKey(event) {
        event.keyCode = 0
        event.shiftKey = false
        return event
    }

    function login() {
        var callback = function (data) {
            if (data.resposta.status == "OK") {
                document.location = "df/home.asp"
            } else {
                if (rw.verificaCampoVazio("#idCamposLogin"))
                    rw.msg.erro(data)
            }
        }

        $.ajax("api/auth.asp", {
            data: {
                base: $("#base").val(),
                usuario: $("#usuario").val(),
                senha: $("#senha").val()
            },
            async: false,
            type: "POST",
            success: callback
        })
    }

    //pelo id da div, verifica os inputs dentro dela que estão vazios (das que tiverem "name") 
    function verificaCampoVazio(idDiv, aba) {
        var inputs = document.getElementById(idDiv.replace("#", "")).getElementsByTagName("input")

        for (var i = 0; i < inputs.length; i++) {
            var inputAtual = inputs[i]

            if (($(inputAtual)[0].className == "wkvalor" && ($(inputAtual).val() == "0,00" || $(inputAtual).val() == "0" || $(inputAtual).val() == "0,0000")) &&
               $(inputAtual).attr("name") != undefined && inputAtual.style.display != "none") {
                rw.msg.campoVazio($(inputAtual).attr("name"))

                if (aba != undefined)
                    rw.abas.trocaAba(aba)

                $(inputAtual).focus()
                return false
            }

            if ($(inputAtual).val() == "" && $(inputAtual).attr("name") != undefined && inputAtual.style.display != "none") {
                rw.msg.campoVazio($(inputAtual).attr("name"))

                if (aba != undefined)
                    rw.abas.trocaAba(aba)

                $(inputAtual).focus()
                return false
            }
        }

        return true
    }

    //recebe o nome do paramentro que se encontrar na url e retorna o valor do mesmo
    function getParametroUrl(parametro) {
        var url = window.location.search.replace("?", "")
        var parametros = url.split("&")
        for (contador in parametros) {
            if (parametros[contador].match(parametro)) {
                return decodeURIComponent(parametros[contador].replace(parametro + "=", ""))
            }
        }

        return null
    }

    function formataString(sValorCampo) {
        if (sValorCampo == "NaN" || sValorCampo == "")
            sValorCampo = "0,00"

        while (sValorCampo.indexOf(".") >= 0)
            sValorCampo = sValorCampo.replace(".", "")

        sValorCampo = sValorCampo.replace(",", ".")
        return sValorCampo
    }

    function substituiPontoPorVirgula(campo) {
        campo = campo.replace(".", ",")
        return campo;
    }

    function habilitaDivF4(div, habilita) {
        if (habilita != false)
            habilita = true

        var inputs = document.getElementById(div.replace("#", "")).getElementsByTagName("input")
        var imgs = document.getElementById(div.replace("#", "")).getElementsByTagName("img")

        if (!habilita) {


            inputs[0].disabled = true
            $(imgs[0]).unbind("dblclick")
            $(imgs[0]).unbind("click")
            inputs[0].value = ""
            $(inputs[0]).parent().children(".nome").html("")
        } else {
            $(imgs[0]).click(function () {
                $(inputs[0]).dblclick()
            })
            inputs[0].disabled = false
        }
    }

    function habilitaDiv(div, habilita) {
        if (habilita != false)
            habilita = true

        var inputs = document.getElementById(div.replace("#", "")).getElementsByTagName("input")
        var textAreas = document.getElementById(div.replace("#", "")).getElementsByTagName("textarea")
        var imgs = document.getElementById(div.replace("#", "")).getElementsByTagName("img")

        for (var i = 0; i < inputs.length; i++)
            inputs[i].disabled = !habilita

        for (var i = 0; i < textAreas.length; i++)
            textAreas[i].disabled = !habilita

        for (var i = 0; i < imgs.length; i++)
            $(imgs[i]).unbind("click")
    }

    function habilitaCampo(idCampo, habilita) {
        if (habilita == true)
            $(idCampo).removeAttr("disabled")
        else
            $(idCampo).attr("disabled", "disabled")
    }

    function acrescentaZeros(campo) {
        $(campo).blur(
            function () {
                if ($(campo).val() == "") {
                    $(campo).val("0,00")
                    return
                }

                if ($(campo).val().search(',') == -1)
                    $(campo).val($(campo).val() + ",00")
            }
        )
    }

    function acrescentaZerosValor(valor) {
        if (valor == parseInt(valor))
            return valor + ",00"

        return valor
    }

    // Retorna o maior elemento de um array.
    function max(arr) {
        return Math.max.apply(null, arr)
    }

    // Transforma um objeto numa url do tipo ?param1=valor1&param2=valor2, etc.
    function objToUrl(obj) {
        var url = "?"
        var primeiro = true

        for (attr in obj) {
            if (!primeiro) {
                url += "&" + encodeURI(attr) + "=" + encodeURI(obj[attr])
            } else {
                url += encodeURI(attr) + "=" + encodeURI(obj[attr])
                primeiro = false
            }
        }
        return url
    }

    //Consulta API para verificar permissões.
    //Params:
    //  modulo - String contendo a sigla do módulo. Ex.: "DF"
    //  controle - Inteiro da definição gerada pelo 'permissoes-auto.asp'.
    //             Como a view não reconhece a API, o valor passado deve ser o numérico corresponde à constante
    //             declarada no 'permissoes-auto.asp'.
    function temPermissao(modulo, controle) {
        var _temPermissao = false

        $.ajax("../api/df/verifica-permissao.asp", {
            data: {
                modulo: modulo,
                controle: controle
            },
            async: false,
            success: function (data) {
                _temPermissao = data.resposta.temPermissao.toUpperCase() == "TRUE"
            }
        })

        return _temPermissao
    }

    function temPermissoes(aPermissoes) {// recebe um array com objetos contendo os atributos "modulo" e "controle" e 
                                         //retorna um array com estes mesmos atributos e 1 terceiro atributo temPermissao
        var permissoes = "?";

        if (aPermissoes.length > 0) {
            var j = 0;

            for (; j < aPermissoes.length - 1; j++)// 
                permissoes += "modulos=" + aPermissoes[j].modulo + "&" + "controles=" + aPermissoes[j].controle + "&"
            permissoes += "modulos=" + aPermissoes[j].modulo + "&" + "controles=" + aPermissoes[j].controle

            var callback = function (data) {
                return data.resposta.registros;
            }

            $.ajax("../api/df/verifica-permissoes.asp" + permissoes, {
                data: {},
                async: false,
                success: callback
            })

        } else {
            rw.msg.alerta("Falha ao verificar permissões")
        }
    
    }


    function isDebugDev() {
        var _isDebugDev = false

        $.ajax("../api/df/verifica-debug.asp", {
            data: {},
            async: true,
            success: function (data) {
                _isDebugDev = data.resposta.isDebugDev.toUpperCase() == "TRUE"
            }
        })

        return _isDebugDev
    }

    function temImpressoraPadrao() {
        var _temImpressoraPadrao = false

        $.ajax("../api/df/verifica-impressorapadrao.asp", {
            async: false,
            success: function (data) {
                _temImpressoraPadrao = data.resposta.temImpressora.toUpperCase() == "TRUE"
            }
        })

        if (!_temImpressoraPadrao)
            rw.msg.alerta("Não existe uma impressora padrão configurada, logo, não será possível emitir relatórios do tipo PDF.")

        return _temImpressoraPadrao
    }

    //limpa inputs e textareas das divs passadas como parâmetros
    function limpaCampos() {
        for (var i = 0; i < arguments.length; i++) {
            idDiv = arguments[i].replace('#', '')

            var inputs = document.getElementById(idDiv).getElementsByTagName("input")
            for (var i = 0; i < inputs.length; i++) {
                var classe = $(inputs[i]).attr("class")
                var classeAnterior = $(inputs[i]).prev().prev().attr("class")

                //só vai limpar campos que não sejam f4 de filiais e tab. preços ou suas descrições,
                //para aproveitar a funcionalidade da consulta automática.
                if ((classe != "nome" && classe != "wkfilial" && classe != "wktabprecos") ||
                   (classe == "nome" && classeAnterior != "wkfilial" && classeAnterior != "wktabprecos"))
                    $(inputs[i]).val("")
            }

            var textAreas = document.getElementById(idDiv).getElementsByTagName("textarea")
            for (var i = 0; i < textAreas.length; i++)
                $(textAreas[i]).val("")
        }
    }

    //o IE 8 não é compatível com os membros selectionStart e selectionEnd,
    //usar a função a seguir.
    function getSelecaoInput(input) {
        var start = 0, end = 0, normalizedValue, range, textInputRange, len, endRange

        if (typeof input.selectionStart == "number" && typeof input.selectionEnd == "number") {
            start = input.selectionStart
            end = input.selectionEnd
        } else {
            range = document.selection.createRange()

            if (range && range.parentElement() == input) {
                len = input.value.length
                normalizedValue = input.value.replace(/\r\n/g, "\n")

                // Create a working TextRange that lives only in the input
                textInputRange = input.createTextRange()
                textInputRange.moveToBookmark(range.getBookmark())

                // Check if the start and end of the selection are at the very end
                // of the input, since moveStart/moveEnd doesn't return what we want
                // in those cases
                endRange = input.createTextRange()
                endRange.collapse(false)

                if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
                    start = end = len
                } else {
                    start = -textInputRange.moveStart("character", -len)
                    start += normalizedValue.slice(0, start).split("\n").length - 1

                    if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
                        end = len
                    } else {
                        end = -textInputRange.moveEnd("character", -len)
                        end += normalizedValue.slice(0, end).split("\n").length - 1
                    }
                }
            }
        }

        return {
            start: start,
            end: end
        }
    }

    function TAMANHO_BUSCA() { //constantes
        return 40
    }

    function FADE() { //constantes
        return 500 //milissegundos
    }

    function MAX_USHORT() { //constantes
        return 65535 //tamanho máximo de um unsigned short
    }

    return {
        MAX_USHORT: MAX_USHORT, //constantes
        TAMANHO_BUSCA: TAMANHO_BUSCA, //constantes
        FADE: FADE, //constantes
        isDebugDev: isDebugDev,
        getSelecaoInput: getSelecaoInput,
        contem: contem,
        zeraKey: zeraKey,
        max: max,
        objToUrl: objToUrl,
        habilitaDiv: habilitaDiv,
        habilitaDivF4: habilitaDivF4,
        habilitaCampo: habilitaCampo,
        getParametroUrl: getParametroUrl,
        substituiPontoPorVirgula: substituiPontoPorVirgula,
        formataString: formataString,
        temPermissao: temPermissao,
        temPermissoes:temPermissoes, 
        verificaCampoVazio: verificaCampoVazio,
        temImpressoraPadrao: temImpressoraPadrao,
        acrescentaZeros: acrescentaZeros,
        acrescentaZerosValor: acrescentaZerosValor,
        login: login,
        limpaCampos: limpaCampos
    }
} ($))

rw.datas = (function ($, rw) {
    // Retorna a data de hoje como uma string.
    function hoje() {
        var dataHoje = new Date()

        var dia = String(dataHoje.getDate()) //var dia = String(dataHoje.getDay() + 1)
        var mes = String(dataHoje.getMonth() + 1)
        var ano = dataHoje.getFullYear()

        if (dia.length == 1)
            dia = String("0") + dia

        if (mes.length == 1)
            mes = String("0") + mes

        return dia + "/" + mes + "/" + ano
    }

    //diferença de dias entre datas
    function diferencaEmDias(dataInicial, dataFinal) {
        return Number((Date.parse(inverteMesDia(dataFinal)) - Date.parse(inverteMesDia(dataInicial))) / (24 * 60 * 60 * 1000))
    }

    function compara(dataInicial, dataFinal) {
        if (dataInicial == undefined || dataFinal == undefined)
            return
        if ($(dataInicial).val() != "" && $(dataFinal).val() != "") {
            if (rw.datas.diferencaEmDias($(dataInicial).val(), $(dataFinal).val()) >= 0)
                return true

            rw.msg.dataNegativa($(dataInicial).attr("name"), $(dataFinal).attr("name"))
            return false
        }
    }

    function valida(idInputData) {
        return function () {
            data = $(idInputData).val()
            var mesesComTrintaeUmDias = [01, 03, 05, 07, 08, 10, 12]
            var mesesComTrintaDias = [02, 04, 06, 09, 11]
            dia = data.substr(0, 2)
            mes = data.substr(3, 2)
            ano = data.substr(6, 4)
            var strData = String(data)

            for (var i = 0; i < mesesComTrintaeUmDias.length; i++) {
                if (mes == mesesComTrintaeUmDias[i] && dia >= 32) {
                    rw.msg.dataInvalida()
                    $(idInputData).focus()
                    return false
                } else if (mes == mesesComTrintaDias[i] && dia >= 31) {
                    rw.msg.dataInvalida()
                    $(idInputData).focus()
                    return false
                }
            }

            if (mes >= 13) {
                rw.msg.dataInvalida()
                $(idInputData).focus()
                return false
            }

            if (ano % 4 == 0 && ano % 100 != 0 || ano % 400 == 0) {
                if (mes == 02 && dia >= 29) {
                    rw.msg.dataInvalida()
                    $(idInputData).focus()
                    return false
                }
            }
            return true
        }
    }

    //retorna uma string com o mes no lugar do dia e vice-versa
    function inverteMesDia(data) {
        var dia = data.substr(0, 2)
        var mes = data.substr(3, 2)
        var ano = data.substr(6, 4)
        return mes + "/" + dia + "/" + ano
    }

    function retiraDia(data) {
        return data.substr(3, 2) + "/" + data.substr(6, 4)
    }

    //incrementa ano considerando o mês e ignorando o dia. 
    //ex: se o parâmetro dataMesAno for dd/05/2012, retornará 04/2013.
    function incrementaAno(data) {
        var iMes = Number(data.substr(0, 2))
        iMes--
        var iAno = Number(data.substr(6, 4))

        if (iMes == 0)
            iMes = 12
        else
            iAno++

        var sMes = String(iMes).length == 1 ? "0" + String(iMes) : String(iMes)

        return sMes + "/" + String(iAno)
    }

    return {
        hoje: hoje,
        diferencaEmDias: diferencaEmDias,
        compara: compara,
        valida: valida,
        inverteMesDia: inverteMesDia,
        retiraDia: retiraDia,
        incrementaAno: incrementaAno
    }
} ($, rw))

rw.msg = (function ($, rw) {
    //para debugar
    function trace() {
        if (erro.caller != null && erro.caller.name != "") {
            if (erro.caller.caller != null && erro.caller.caller.name != "") {
                if (erro.caller.caller.caller != null && erro.caller.caller.caller.name != "") {
                    alert("ERRO: '" + erro.caller.caller.caller.name + "->" + erro.caller.caller.name + "->" + erro.caller.name + "'")
                    return
                }

                alert("ERRO: '" + erro.caller.caller.name + "->" + erro.caller.name + "'")
                return
            }

            alert("ERRO: '" + erro.caller.name + "'")
            return
        }

        alert("ERRO")
    }

    function erro(data) {
        if (data.resposta.descricao != "" && data.resposta.descricao != undefined)
            alert(data.resposta.descricao)
    }

    // Função genérica de alerta. No momento apenas chama o alert do navegador, mas
    // pode ser alterada para exibir algum outro tipo de mensagen de maneira
    // uniforme em todos os navegadores.
    function alerta(mensagem) {
        alert(mensagem)
    }

    function campoVazio(nomeCampo) {
        alert("O campo '" + nomeCampo + "' deve ser preenchido.")
    }

    function valorInvalido(nomeCampo) {
        alert("O valor contido no campo '" + nomeCampo + "' não é válido.")
    }

    function registroNaoSelecionado(nomeTabela) {
        alert("Algum registro na tabela '" + nomeTabela + "' deve ser selecionado.")
    }

    function dataNegativa(nomeDataInicial, nomeDataFinal) {
        alert("A " + nomeDataFinal + " não pode ser menor do que a " + nomeDataInicial + ".")
    }

    function dataInvalida() {
        alert("Data inválida, informe uma data correta.")
    }

    function foraPeriodoContabil() {
        alert("O intervalo entre as datas está fora do período contábil.")
    }

    return {
        trace: trace,
        erro: erro,
        alerta: alerta,
        dataInvalida: dataInvalida,
        campoVazio: campoVazio,
        valorInvalido: valorInvalido,
        registroNaoSelecionado: registroNaoSelecionado,
        dataNegativa: dataNegativa,
        foraPeriodoContabil: foraPeriodoContabil
    }
} ($, rw))

// Módulo responsável por lidar com as abas das páginas.
rw.abas = (function ($, rw) {
    var _abas = []

    function ajustaAltura() {
        var h = rw.max($.map(_abas, function (id) {
            return $("#tab" + id).height()
        }))

        $.map(_abas, function (id) {
            $("#tab" + id).css("height", h)
        })
    }

    function setAbas(abas) {
        if (typeof (abas) == "string")
            _abas = [abas]
        else
            _abas = abas
    }

    function trocaAba(aba) {
        if (rw.contem(_abas, aba)) {
            $.map(_abas, function (id) {
                $("#tab" + id).css("display", "none")
                $("#aba" + id)[0].className = "wkabainativa"
            })

            $("#tab" + aba).css("display", "block")
            $("#aba" + aba)[0].className = "wkabaativa"

            bFocouNoPrimeiroVisivel = false
            var inputs = document.getElementById("tab" + aba).getElementsByTagName("input")
            for (var i = 0; i < inputs.length; i++) {
                var input = inputs[i]
                if (!bFocouNoPrimeiroVisivel) {
                    if (input.style.display != "none" && !$(input).attr("disabled") && $(input).attr("type") != "hidden") {
                        $(input).focus()
                        bFocouNoPrimeiroVisivel = true
                    }
                }

            }

        }
    }

    return {
        ajustaAltura: ajustaAltura,
        setAbas: setAbas,
        trocaAba: trocaAba
    }
} ($, rw))

// Módulo que contém funções relacionadas ao uso de tabelas.
rw.tabelas = (function ($, rw) {
    function insereLinha(idTabela) {
        return $(idTabela + "> tbody")[0].insertRow(-1)
    }

    function limpa(idTabela) {
        $(idTabela + "> tbody").html("")
    }

    function limpaVarias() {
        for (var i = 0; i < arguments.length; i++)
            rw.tabelas.limpa(arguments[i])
    }

    function linhas(idTabela) {
        return $(idTabela + "> tbody tr").length
    }

    function criaHeader(div, cssClasse, idTabela, idOrdenacao, consulta) {
        var _idTabela = idTabela.replace('#', '')



        if (idOrdenacao)
            $(div).append('<input type="hidden" value="999" id="' + idOrdenacao.replace('#', '') + '"/>')

        $(div).append('<table id="' + _idTabela + '" class="' + cssClasse + '"><tbody></tbody></table>')

        var tabela = document.getElementById(_idTabela)
        var header = tabela.createTHead()
        var row = header.insertRow(-1)
        var TAM_INICIAL = 5 //tamanho inicial - constante

        //param 0: div
        //param 1: cssClass
        //param 2: idTabela        
        //param 3: idOrdenacao
        //param 4: consulta
        //param 5: títulos do header
        for (var i = TAM_INICIAL; i < arguments.length; i++) {
            var cell = row.insertCell(-1)
            cell.innerHTML = arguments[i]
            cell.val = i - TAM_INICIAL

            $(cell).click(
                function () {
                    if (idOrdenacao) {
                        $(idOrdenacao).val(this.val)
                        consulta.limpa()
                    }
                }
            )
        }
    }

    return {
        insereLinha: insereLinha,
        limpa: limpa,
        limpaVarias: limpaVarias,
        linhas: linhas,
        criaHeader: criaHeader
    }
} ($, rw))

// Módulo responsável por criar tabelas de consultas, o que inclui também
// tabelas de F4.
rw.consultas = (function ($, rw) {
    // Função que cria um novo objeto capaz de realizar consultas (um objeto
    // que implementa os métodos buscaInicial, buscaMais e limpa). Os
    // parâmetros para a criação desse novo objeto são:
    //
    // idTabela: uma string contendo o id da tabela onde os dados serão
    //   mostrados.
    // url: uma string com a url de onde os dados devem ser buscados.
    // fnInsere: a função que insere registros na tabela em questão.
    // fnMontaDados: a função que cria um objeto que será passado como o
    //   parâmetro "data" de uma requisição $.ajax do jQuery.
    function cria(idTabela, url, fnInsere, fnMontaDados, async) {
        var consulta = {}

        if (async != false)
            async = true

        consulta.idTabela = idTabela
        consulta.numRegistros = 0
        consulta.async = async

        consulta.busca = function (callback) {
            $.ajax(
                url, {
                    data: fnMontaDados(),
                    async: async,
                    success: callback
                }
            )
        }

        consulta.buscaInicial = function () {
            var t = this

            this.busca(
                function (data) {
                    if (data.resposta.status == "ERRO") {
                        rw.msg.erro(data)
                        return
                    }

                    if (data.resposta.registros)
                        t.insereRegistros(data.resposta.registros)
                    else
                        fnInsere(data.resposta.registro)
                }
            )
        }

        consulta.buscaMais = function () {
            var t = this

            this.busca(
                function (data) {
                    if (data.resposta.status == "ERRO") {
                        rw.msg.erro(data)
                        return
                    }

                    if (data.resposta.registros)
                        t.insereRegistros(data.resposta.registros)
                    else
                        fnInsere(data.resposta.registro)
                }
            )
        }

        consulta.insereRegistros = function (registros) {
            consulta.numRegistros = registros.length

            $.map(registros,
                function (registro) {
                    fnInsere(registro)
                }
            )
        }

        consulta.limpa = function () {
            rw.tabelas.limpa(idTabela)
            return this.buscaInicial()
        }

        return consulta
    }

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

// Inicialização de campos. É executada após a página ter sido carregada por inteiro.
$(function () {
    $(".wkdata").datepicker().mask("39/19/2999")
    //$(".wkdata").datepicker().blur(rw.datas.valida(".wkdata"))
    $(".wkmes").datepicker({ dateFormat: "mm/yy" }).mask("19/2999")
    $(".wkvalor").maskMoney()
    $(".wkvalor").change(function () { $(".wkvalor").maskMoney("mask") })

    $(window).ready(
        function () {
            var bFocouNoPrimeiroVisivel = false

            var inputs = document.getElementsByTagName("input")
            for (var i = 0; i < inputs.length; i++) {
                var input = inputs[i]
                var idInput = "#" + $(input).attr("id")
                
                if ($(input).attr("class") == "wkdata hasDatepicker")
                    $(input).blur(rw.datas.valida(idInput))
                else if ($(input).attr("class") == "wkfilial") //caso haja somente uma filial, fará pesquisa automática e desabilitará
                    $(input).ready(rw.consultasAutomaticas.filiais.cria(idInput))
                else if ($(input).attr("class") == "wktabprecos") //caso haja somente uma tabela de preços, fará pesquisa automática
                    $(input).ready(rw.consultasAutomaticas.tabPrecos.cria(idInput))

                $(input).click(function () { this.select() })

               

                if (!bFocouNoPrimeiroVisivel) {
                    if (input.style.display != "none" && !$(input).attr("disabled") && $(input).attr("type") != "hidden") {
                        $(input).focus()
                        bFocouNoPrimeiroVisivel = true
                    }
                }
            }

            // if ($(".wkaba")[0])
            //     $(".wkaba").animate({ scrollTop: $(".wkaba")[0].scrollHeight * 5}, rw.FADE())
        }
    )

    $(window).keypress(
        function (event) {
            if (document.getElementById("btnOK")) {
                if (event.keyCode == 13) { // Enter     
                    if (!$("#btnOK").attr("disabled") && document.getElementById("btnOK").style.display != "none" &&
                       document.activeElement.tagName.toLowerCase() != "textarea" && document.activeElement.tagName.toLowerCase() != "button")
                        $("#btnOK").click()
                }
            }
        }
    )
})
