/* General Funcions */

var dtCh = "/";
var minYear = 1900;
var maxYear = 2900;

function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) 
            return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) 
            returnString += c;
    }
    return returnString;
}

function daysInFebruary(year){
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}

function DaysArray(n){
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) {
            this[i] = 30
        }
        if (i == 2) {
            this[i] = 29
        }
    }
    return this
}

function selectrd(id, texto){
    var tg = document.getElementById(id);
    tg.checked = true;
    document.login_form.login.focus();
	setText('log',texto);
}

function isDate(dtStr){
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) 
        strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) 
        strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) 
            strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)
    if (pos1 == -1 || pos2 == -1) {
        return false
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        return false
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        return false
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        return false
    }
    return true
}

function valida_cnpj(cnpj){
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    digitos_iguais = 1;
    
    for (i = 0; i < cnpj.length - 1; i++) 
        if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        tamanho = cnpj.length - 2
        numeros = cnpj.substring(0, tamanho);
        digitos = cnpj.substring(tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--) {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2) 
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0)) 
            return false;
        tamanho = tamanho + 1;
        numeros = cnpj.substring(0, tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--) {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2) 
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1)) 
            return false;
        return true;
    }
    else 
        return false;
}

function Trim(strTexto){
    // Substitúi os espaços vazios no inicio e no fim da string por vazio.
    return strTexto.replace(/^\s+|\s+$/g, '');
}

// Função para validação de CEP.
function IsCEP(strCEP){
    // Caso o CEP não esteja nesse formato ele é inválido!
    var objER = /^[0-9]{2}[0-9]{3}-[0-9]{3}$/;
    
    strCEP = Trim(strCEP)
    if (strCEP.length > 0) {
        if (objER.test(strCEP)) 
            return true;
        else 
            return false;
    }
}

/* Checagem do form de Login */
function valida_login_form(){
    //if (!valida_cnpj(document.login_form.login.value)) {
    if (document.login_form.login.value == '') {
        alert('CNPJ/CPF Inválido');
        document.login_form.login.focus();
        return false;
    }
    else 
        return true;
}

function IsNumeric(strString)//  check for valid numeric strings	
{
    var strValidChars = "0123456789";
    var strChar;
    var blnResult = true;
    
    if (strString.length == 0) 
        return false;
    
    //  test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++) {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1) {
            blnResult = false;
        }
    }
    return blnResult;
}

function InputNumer(objTextBox, e){
    var keynum;
    var keychar;
    var numcheck;
    if (window.event) // IE 
    {
        keynum = e.keyCode;
    }
    else 
        if (e.which) // Netscape/Firefox/Opera
        {
            keynum = e.which;
        }
    keychar = String.fromCharCode(keynum);
    //alert(keynum);
    return IsNumeric(keychar) || (keynum == 13) || (keynum == 0) || (keynum == 8) || (keynum == undefined);
}

function formataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, 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;
    // 13=enter, 8=backspace as demais retornam 0(zero)
    // whichCode==0 faz com que seja possivel usar todas as teclas como delete, setas, etc    
    if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8)) 
        return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) 
        return false; // Chave inválida
    len = objTextBox.value.length;
    for (i = 0; i < len; i++) 
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) 
            break;
    aux = '';
    for (; i < len; i++) 
        if (strCheck.indexOf(objTextBox.value.charAt(i)) != -1) 
            aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) 
        objTextBox.value = '';
    if (len == 1) 
        objTextBox.value = '0' + SeparadorDecimal + '0' + aux;
    if (len == 2) 
        objTextBox.value = '0' + SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--) 
            objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}

/* Checagem do form da Empresa */

function checa_form_emp(){
    if (document.cad_emp.nome.value == '') {
        alert('Informe o Nome');
        document.cad_emp.nome.focus();
        return false;
    }
    else 
        if (document.cad_emp.nomeabv.value == '') {
            alert('Informe o Nome Abreviado');
            document.cad_emp.nomeabv.focus();
            return false;
        }
        else 
            if (document.cad_emp.endereco.value == '') {
                alert('Informe o Endereço');
                document.cad_emp.endereco.focus();
                return false;
            }
            else 
                if (document.cad_emp.bairro.value == '') {
                    alert('Informe o Bairro');
                    document.cad_emp.bairro.focus();
                    return false;
                }
                else 
                    if (document.cad_emp.cep.value == '' || !IsCEP(document.cad_emp.cep.value)) {
                        alert('CEP Inválido. Deve ser informado no formato 00000-000');
                        document.cad_emp.cep.focus();
                        return false;
                    }
                    else 
                        if (document.cad_emp.cidade.value == '') {
                            alert('Informe a Cidade');
                            document.cad_emp.cidade.focus();
                            return false;
                        }
                        else 
                            if (document.cad_emp.email.value == '') {
                                alert('Informe o E-mail');
                                document.cad_emp.email.focus();
                                return false;
                            }
                            else 
                                if (document.cad_emp.dtinicio.value != '' &&
                                !isDate(document.cad_emp.dtinicio.value)) {
                                    alert('Data Inválida');
                                    document.cad_emp.dtinicio.focus();
                                    return false;
                                }
                                else 
                                    if (document.cad_emp.cei.value != '' &&
                                    !IsNumeric(document.cad_emp.cei.value)) {
                                        alert('Campo CEI deve conter apenas números');
                                        document.cad_emp.cei.focus();
                                        return false;
                                    }
                                    else 
                                        if (document.cad_emp.cnpjesc.value != '' &&
                                        !valida_cnpj(document.cad_emp.cnpjesc.value)) {
                                            alert('CNPJ do Escritório Inválido. Caso não saiba o CNPJ, deixe o campo em branco');
                                            document.cad_emp.cnpjesc.focus();
                                            return false;
                                        }
                                        else 
                                            return true;
}


/* Checa form Config*/

function valida_config_form(){
    if (document.config_form.logincnpj.checked == true &&
    document.config_form.escritorio.value == '') {
        alert('Informe o Escritório Padrão');
        document.config_form.escritorio.focus();
        return false;
    }
    else 
        if (document.config_form.logincnpj.checked == true &&
        document.config_form.ramoatividade.value == '') {
            alert('Informe o Ramo de Atividade Padrão');
            document.config_form.ramoatividade.focus();
            return false;
        }
        else 
            if (document.config_form.logincnpj.checked == true &&
            document.config_form.classemp.value == '') {
                alert('Informe a Classificação de Empresa Padrão');
                document.config_form.classemp.focus();
                return false;
            }
            else 
                if (document.config_form.logincnpj.checked == true &&
                document.config_form.conv.value == '') {
                    alert('Informe a Convenção Coletiva Padrão');
                    document.config_form.conv.focus();
                    return false;
                }
                else 
                    return true;
}


/* Checagem do form do Escritório*/

function checa_form_esc(){
    if (document.cad_esc.nome.value == '') {
        alert('Informe o Nome');
        document.cad_esc.nome.focus();
        return false;
    }
    else 
        if (document.cad_esc.nomeabv.value == '') {
            alert('Informe o Nome Fantasia');
            document.cad_esc.nomeabv.focus();
            return false;
        }
        else 
            if (document.cad_esc.endereco.value == '') {
                alert('Informe o Endereço');
                document.cad_esc.endereco.focus();
                return false;
            }
            else 
                if (document.cad_esc.bairro.value == '') {
                    alert('Informe o Bairro');
                    document.cad_esc.bairro.focus();
                    return false;
                }
                else 
                    if (document.cad_esc.cep.value == '' || !IsCEP(document.cad_esc.cep.value)) {
                        alert('CEP Inválido. Deve ser informado no formato 00000-000');
                        document.cad_esc.cep.focus();
                        return false;
                    }
                    else 
                        if (document.cad_esc.cidade.value == '') {
                            alert('Informe a Cidade');
                            document.cad_esc.cidade.focus();
                            return false;
                        }
                        else 
                            if (document.cad_esc.email.value == '') {
                                alert('Informe o E-mail');
                                document.cad_esc.email.focus();
                                return false;
                            }
}

/* Checagem do form do Altera Valor*/

function checa_form_altvalor(){
	if (document.altvalor_form.valor.value == '') {
        alert('Informe o Nome');
        document.cad_esc.nome.focus();
        return false;
    }
}

function setText(id, txt){
    var elem;
    
    if (document.getElementById && (elem = document.getElementById(id))) {
        if (!elem.firstChild) 
            elem.appendChild(document.createTextNode(txt));
        else 
            elem.firstChild.data = txt;
    }
    
    return false;
}

