﻿function validaNumero(evento) {
    var tecla = event.keyCode;

    if ((tecla == 44 || tecla == 46) || (tecla > 47 && tecla < 58))
        return true;
    else {
        if (tecla != 8)
            event.keyCode = 0;
        else
            return true;
    }
}

function retiraOpcaoPDF(param) {

    controles = param.toString().split(';');

    if (controles.length == 0)
        return;

    for (i = 0; i < controles.length; i++) {
        if (controles[i] != "") {
            dropdown = document.getElementById(controles[i]);
            if (dropdown == null)
                continue;

            for (y = 0; y < dropdown.options.length; y++) {
                if (dropdown.options[y].value == "PDF") {
                    dropdown.options[y] = null;
                    break;
                }
            }
        }
    }
}

//Trim the input text
function Trim(input) {
    var lre = /^\s*/;
    var rre = /\s*$/;
    input = input.replace(lre, "");
    input = input.replace(rre, "");
    return input;
}

// filter the files before Uploading for text file only  
function CheckForTestFile(fileUpload, pdf) {
    var file = fileUpload;
    var fileName = file.value;
    //Checking for file browsed or not 
    if (Trim(fileName) == '') {
        return true;
    }

    //Setting the extension array for diff. type of text files
    var extArray = new Array(".jpg", ".gif");

    if (pdf)
        var extArray = new Array(".pdf", ".jpg", ".gif");
    else
        var extArray = new Array(".jpg", ".gif");

    //getting the file name
    while (fileName.lastIndexOf("\\") != -1)
        fileName = fileName.slice(fileName.lastIndexOf("\\") + 1);

    //Getting the file extension
    var ext = fileName.slice(fileName.lastIndexOf(".")).toLowerCase();

    //matching extension with our given extensions.
    for (var i = 0; i < extArray.length; i++) {
        if (extArray[i] == ext) {
            return true;
        }
    }
    alert("Por favor, apenas os seguintes tipos de arquivos são aceitos:  "
           + (extArray.join("  ")) + "\nSelecione novamente.");

    file.value = null;
    file.outerHTML = file.outerHTML;
    return false;
}

function diasEntreDatas(pMes, pAno) {

    // Declarações de variáveis
    var mes, data, dataAtual, dataInfo, arrDataInfo, novaDataInfo, diasEntreDatas, MesSelecionado, AnoSelecionado;
    // Lista dos meses em inglês
    mes = [];
    mes[0] = "January";
    mes[1] = "February";
    mes[2] = "March";
    mes[3] = "April";
    mes[4] = "May";
    mes[5] = "June";
    mes[6] = "July";
    mes[7] = "August";
    mes[8] = "September";
    mes[9] = "October";
    mes[10] = "November";
    mes[11] = "December";
    //Retorna o mês e ano selecionado
    MesSelecionado = document.getElementById(pMes).options.value;
    AnoSelecionado = document.getElementById(pAno).options.value;
    // Instancia o objeto Date
    data = new Date();
    // Pega a data de hoje no seguinte formato: November 22 2006
    dataAtual = mes[data.getMonth()] + ' ' + data.getDate() + ' ' + data.getFullYear();
    // Pega a data informada pelo usuário
    dataInfo = '01/' + MesSelecionado + '/' + AnoSelecionado;
    // Separa a data informada pelo usuário através da barra /
    arrDataInfo = dataInfo.split('/');
    // Formata a data para o seguinte formato: November 22 2006
    novaDataInfo = mes[(arrDataInfo[1] - 1)] + ' ' + arrDataInfo[0] + ' ' + arrDataInfo[2];
    // Saberemos o total de dias entre: a data informada pelo usuário e a data atual
    diasEntreDatas = dateDif.dateDiff(novaDataInfo, dataAtual);

    if (diasEntreDatas > 365) {
        if ((MesSelecionado != (data.getMonth() + 1)) || ((data.getFullYear() - AnoSelecionado) > 1)) {
            alert('O sistema trabalha com buscas apenas para períodos de um ano, a partir do mês atual.');
            return false;
        }
        else
            return true;
    }
    else
        return true;

}

/*function validarPeriodos(pMesDe, pAnoDe, pMesAte, pAnoAte) 
{
pMesDe = document.getElementById(pMesDe);
pAnoDe = document.getElementById(pAnoDe);
pMesAte = document.getElementById(pMesAte);
pAnoAte = document.getElementById(pAnoAte);
    
var strDe, strAte;
    
strDe = pAnoDe.options.value + pMesDe.options.value;
strAte = pAnoAte.options.value + pMesAte.options.value;
    
alert(strDe);

if (strAte < strDe)
{
alert('O segundo filtro de período não pode ser menor que o primeiro.');
return false;
}
return true;
}*/


//Funções para digitar apenas números inteiros e decimais positivos em um Textbox utilizando evento KeyDown
function ForceNumericInput(event, This, AllowDecimal, AllowMinus) {
    if (arguments.length == 1) {
       var s = This.value;
        // garante que o sinal de "-" seja o primeiro do índice
        var i = s.lastIndexOf("-");
        if (i == -1)
            return;

        if (i != 0)
            This.value = s.substring(0, i) + s.substring(i + 1);

        return;
    }
    switch (event.keyCode) {
        case 8:     // backspace
        case 9:     // tab
        case 37:    // left arrow
        case 39:    // right arrow
        case 46:    // delete
            event.returnValue = true;
            return;
    }

    if (event.keyCode == 189)     // sinal de número de negativo
    {
        if (AllowMinus == false) {
            CancelEventExecution(event);
            return;
        }
        // aguarda até que o controle tenha sido atualizado
        var s = "ForceNumericInput(document.getElementById('" + This.id + "'))";
        setTimeout(s, 250);
        return;
    }
    if (AllowDecimal && event.keyCode == 188) {
        if (This.value.indexOf(",") >= 0) {
            // restringe a digitação de apenas uma vírgula
            CancelEventExecution(event);
            return;
        }
        event.returnValue = true;
        return;
    }
    if (AllowDecimal && event.keyCode == 110) {
        if (This.value.indexOf(",") >= 0) {
            // restringe a digitação de apenas uma vírgula
            CancelEventExecution(event);
            return;
        }
        event.returnValue = true;
        return;
    }
    // permite caracteres entre 0 e 9
    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || (event.keyCode == 110)) {
        event.returnValue = true;
        return;
    }
    CancelEventExecution(event);
}

// colocar no evento onKeyUp passando o objeto como parametro
function FormataData(val) {
    var pass = val.value;
    var expr = /[0123456789]/;

    for (i = 0; i < pass.length; i++) {
        // charAt -> retorna o caractere posicionado no índice especificado
        var lchar = val.value.charAt(i);
        var nchar = val.value.charAt(i + 1);

        if (i == 0) {
            // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
            // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
            // instStr.search(expReg);
            if ((lchar.search(expr) != 0) || (lchar > 3)) {
                val.value = "";
            }

        } else if (i == 1) {

            if (lchar.search(expr) != 0) {
                // substring(indice1,indice2)
                // indice1, indice2 -> será usado para delimitar a string
                var tst1 = val.value.substring(0, (i));
                val.value = tst1;
                continue;
            }

            if ((nchar != '/') && (nchar != '')) {
                var tst1 = val.value.substring(0, (i) + 1);

                if (nchar.search(expr) != 0)
                    var tst2 = val.value.substring(i + 2, pass.length);
                else
                    var tst2 = val.value.substring(i + 1, pass.length);

                val.value = tst1 + '/' + tst2;
            }

        } else if (i == 4) {

            if (lchar.search(expr) != 0) {
                var tst1 = val.value.substring(0, (i));
                val.value = tst1;
                continue;
            }

            if ((nchar != '/') && (nchar != '')) {
                var tst1 = val.value.substring(0, (i) + 1);

                if (nchar.search(expr) != 0)
                    var tst2 = val.value.substring(i + 2, pass.length);
                else
                    var tst2 = val.value.substring(i + 1, pass.length);

                val.value = tst1 + '/' + tst2;
            }
        }

        if (i >= 6) {
            if (lchar.search(expr) != 0) {
                var tst1 = val.value.substring(0, (i));
                val.value = tst1;
            }
        }
    }

    if (pass.length > 9)
        val.value = val.value.substring(0, 9);

    return true;
}
/*
* Cancela a execução de uma function mapeada por um evento
*/


// Função para digitar apenas números inteiros através do evento KeyPress
    function ValidarNumerico(obj, event)
    {
        var e = event ? event : window.event;
        var tecla = 0;
        if (e.keyCode)
        {
            tecla = e.keyCode;
        } // for moz/fb, if keyCode==0 use 'which'
        else
            if (typeof (e.which) != 'undefined')
            {
            tecla = e.which;
            }
        if (tecla > 47 && tecla < 58) // numeros de 0 a 9
        {
            return;
        }
        else
        {
            if (tecla != 8) // backspace
            {
                if (event.preventDefault) { //standart browsers
                    event.preventDefault();
                }
                else { // internet explorer
                    event.returnValue = false;
                }
            }
        }
    }
    

function CancelEventExecution(event) {
    if (navigator.appName == "Netscape") {
        event.preventDefault();
    }
    else {
        event.returnValue = false;
    }
}

function SelectAllCheckboxes(spanChk) {

    var oItem = spanChk.children;
    var theBox = (spanChk.type == "checkbox") ? spanChk : spanChk.children.item[0];

    xState = theBox.checked;
    elm = theBox.form.elements;

    for (i = 0; i < elm.length; i++) {
        if (elm[i].type == "checkbox" && elm[i].id != theBox.id) {
            //elm[i].click();
            if (elm[i].checked != xState)
                elm[i].click();

            //elm[i].checked=xState;
        }
    }
}

/*function FormataData(Campo, teclapres)
{
var tecla = teclapres.keyCode;
var vr = new String(Campo.value);
vr = vr.replace("/", "");
vr = vr.replace("/", "");
vr = vr.replace("/", "");
tam = vr.length + 1;
	
if (tecla != 8 && tecla != 8)
{
if (tam > 0 && tam < 2)
Campo.value = vr.substr(0, 2) ;
if (tam > 2 && tam < 4)
Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2);
if (tam > 4 && tam < 7)
Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 7);
}
}
*/

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Mario Costa |  */
function currencyFormat(fld, milSep, decSep, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;

    if (whichCode == 13) return true;  // Enter
    if (whichCode == 8) return true;  // Delete
    //key = String.fromCharCode(whichCode);  // Get key value from key code
    //if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
    len = fld.value.length;
    for (i = 0; i < len; i++)
        if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
    for (; i < len; i++)
        if (strCheck.indexOf(fld.value.charAt(i)) != -1) aux += fld.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = '0' + decSep + '0' + aux;
    if (len == 2) fld.value = '0' + decSep + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += milSep;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        fld.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
            fld.value += aux2.charAt(i);
        fld.value += decSep + aux.substr(len - 2, len);
    }
    return false;
}


function FormataValor(id, tammax, teclapres) {

    if (window.event) { // Internet Explorer
        var tecla = teclapres.keyCode;
    }
    else if (teclapres.which) { // Nestcape / firefox
        var tecla = teclapres.which;
    }


    vr = document.getElementById(id).value;
    vr = vr.toString().replace("/", "");
    vr = vr.toString().replace("/", "");
    vr = vr.toString().replace(",", "");
    vr = vr.toString().replace(".", "");
    vr = vr.toString().replace(".", "");
    vr = vr.toString().replace(".", "");
    vr = vr.toString().replace(".", "");
    tam = vr.length;

    if (tam < tammax && tecla != 8) { tam = vr.length + 1; }

    if (tecla == 8) { tam = tam - 1; }

    if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105) {
        if (tam <= 2) {
            document.getElementById(id).value = vr;
        }
        if ((tam > 2) && (tam <= 5)) {
            document.getElementById(id).value = vr.substr(0, tam - 2) + ',' + vr.substr(tam - 2, tam);
        }
        if ((tam >= 6) && (tam <= 8)) {
            document.getElementById(id).value = vr.substr(0, tam - 5) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
        }
        if ((tam >= 9) && (tam <= 11)) {
            document.getElementById(id).value = vr.substr(0, tam - 8) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
        }
        if ((tam >= 12) && (tam <= 14)) {
            document.getElementById(id).value = vr.substr(0, tam - 11) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
        }
        if ((tam >= 15) && (tam <= 17)) {
            document.getElementById(id).value = vr.substr(0, tam - 14) + '.' + vr.substr(tam - 14, 3) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
        }
    }
}
