function Valida(form){
    var frm = document.forms[form];
    var numElementos = frm.elements.length;
    for (var i = 0; i < numElementos; i++) {
        if (frm.elements[i].getAttribute("valida") != null) {
            var valorValida = frm.elements[i].getAttribute("valida");
            var valor = valorValida.split(",");
            Trim(i, form);
            if (valor[0] == "sim") {
                if (frm.elements[i].nodeName == "INPUT") {
                    if (frm.elements[i].type == "text") {
                        if (frm.elements[i].value == "") {
                            ShowErro(i, form);
                            return false;
                        }
                        else {
                            if (!Campos(i, form)) {
                                return false;
                            }
                        }
                    }
                    if (frm.elements[i].type == "password") {
                        if (frm.elements[i].value == "") {
                            ShowErro(i, form);
                            return false;
                        }
                        else {
                            if (!Campos(i, form)) {
                                return false;
                            }
                        }
                    }
                }
                if (frm.elements[i].nodeName == "SELECT") {
                    if (frm.elements[i].value == 0) {
                        ShowErro(i, form);
                        return false;
                    }
                }
            }
            if (valor[0] == "nao") {
                if (frm.elements[i].nodeName == "INPUT") {
                    if (frm.elements[i].type == "text") {
                        if (frm.elements[i].value != "") {
                            if (!Campos(i, form)) {
                                return false;
                            }
                        }
                    }
                }
            }
            
            if (frm.elements[i].getAttribute("numero") == "sim") {
                if (frm.elements[i].value != "") {
                    if (isNaN(frm.elements[i].value)) {
                        ShowErro(i, form);
                        return false;
                    }
                }
            }
        }
    }
    Maiusculo(form)
    //return true;
    document.getElementById(form).submit();
}

function Trim(i, form){
    var frm = document.forms[form];
    var valor = "";
    valor = frm.elements[i].value;
    frm.elements[i].value = valor.replace(/^\s+|\s+$/g, "");
}

function Campos(i, form){
    var frm = document.forms[form];
    
    switch (frm.elements[i].id) {
        case "cnpj":{
            if (!VerificaCNPJ(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "cpf":{
            if (!VerificaCPF(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "telefone":{
            if (!VerificaTELEFONE(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "celular":{
            if (!VerificaTELEFONE(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "fax":{
            if (!VerificaTELEFONE(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "cep":{
            if (!VerificaCEP(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "email":{
            if (!VerificaEMAIL(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "senha":{
            if (!VerificaSENHA(i, form)) {
                ShowErro(i, form);
                return false;
            }
            break;
        }
        case "confirma_senha":{
            if (!VerificaSENHA(i, form)) {
                ShowErro(i, form);
                return false;
            }
            else {
                var x = i - 1;
                if (frm.elements[x].value != frm.elements[i].value) {
                    ShowErro(i, form);
                    return false;
                }
            }
            break;
        }
    }
    return true;
}

function Maiusculo(form){
    var frm = document.forms[form];
    var numElementos = frm.elements.length;
    for (var i = 0; i < numElementos; i++) {
        if (!(/email|site/i.test(frm.elements[i].name))) {
            var valor = "";
            valor = frm.elements[i].value.toUpperCase();
            frm.elements[i].value = valor;
        }
    }
}

function LinguaForm(form){
    var frm = document.forms[form];
    if (document.forms[form].getAttribute("lingua") != null) {
        if (navigator.appName == "Microsoft Internet Explorer") {
            var lingua = document.forms[form].getAttribute("lingua").value;
			if (!(/br|es|en/i.test(lingua))) {
				lingua = document.forms[form].getAttribute("lingua");
			}
        }
        else {
            var lingua = document.forms[form].getAttribute("lingua");
        }
    }
    else {
        var lingua = "br";
    }
    return lingua;
}

function ShowErro(i, form){
    var frm = document.forms[form];
    var lingua = LinguaForm(form);
    if (lingua == "br") {
        var msg1 = "Favor Preencher: ";
        var msg2 = "Favor Preencher Corretamente: ";
    }
    else 
        if (lingua == "en") {
            var msg1 = "Please Complete the field: ";
            var msg2 = "Please Complete the field: ";
        }
        else 
            if (lingua == "es") {
                var msg1 = "Por Favor, Rellene el Campo: ";
                var msg2 = "Por Favor, Rellene Correctamente: ";
            }
    var valorValida = frm.elements[i].getAttribute("valida");
    var valor = valorValida.split(",");
    if (frm.elements[i].value == "") {
        alert(msg1 + valor[1]);
    }
    else {
        alert(msg2 + valor[1]);
    }
    frm.elements[i].value = "";
    frm.elements[i].focus();
}

function VerificaSENHA(i, form){
    var frm = document.forms[form];
    if (frm.elements[i].value.length < 6) {
        return false;
    }
    return true;
}

function VerificaCPF(i, form){
    var frm = document.forms[form];
    var num_cpf = frm.elements[i].value;
    var cpf = /^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$/i;
    if (!cpf.test(num_cpf)) {
        return false;
    }
    var numCPF = '';
    var numI;
    var numi;
    for (numI = 0; numI < num_cpf.length; numI++) {
        if (num_cpf.charCodeAt(numI) >= 48 && num_cpf.charCodeAt(numI) <= 57) {
            numCPF += num_cpf.charAt(numI);
        }
    }
    if (numCPF.length > 11 || numCPF == "00000000000" || numCPF == "11111111111" || numCPF == "22222222222" || numCPF == "33333333333" || numCPF == "44444444444" || numCPF == "55555555555" || numCPF == "66666666666" || numCPF == "77777777777" || numCPF == "88888888888" || numCPF == "99999999999") {
        return false;
    }
    var soma = 0;
    for (numi = 0; numi < 9; numi++) {
        soma += parseInt(numCPF.charAt(numi)) * (10 - numi);
        resto = 11 - (soma % 11);
    }
    if (resto == 10 || resto == 11) {
        resto = 0;
    }
    if (resto != parseInt(numCPF.charAt(9))) {
        return false;
    }
    soma = 0;
    for (numi = 0; numi < 10; numi++) {
        soma += parseInt(numCPF.charAt(numi)) * (11 - numi);
        resto = 11 - (soma % 11);
    }
    if (resto == 10 || resto == 11) {
        resto = 0;
    }
    if (resto != parseInt(numCPF.charAt(10))) {
        return false;
    }
    return true;
}

function VerificaCNPJ(i, form){
    var frm = document.forms[form];
    var num_cnpj = frm.elements[i].value;
    var cnpj = /^\b[0-9]{2,3}\.?([0-9]{3}\.?){2}\/[0-9]{4}-[0-9]{2}$/i;
    if (!cnpj.test(num_cnpj)) {
        return false;
    }
    var numI;
    var numCNPJ = "";
    for (numI = 0; numI < num_cnpj.length; numI++) {
        if (num_cnpj.charCodeAt(numI) >= 48 && num_cnpj.charCodeAt(numI) <= 57) {
            numCNPJ += num_cnpj.charAt(numI);
        }
    }
    var c = numCNPJ.substr(0, 12);
    var dv = numCNPJ.substr(12, 2);
    var d1 = 0;
    for (numi = 0; numi < 12; numi++) {
        d1 += c.charAt(11 - numi) * (2 + (numi % 8));
    }
    if (d1 == 0) {
        return false;
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) 
        d1 = 0;
    if (dv.charAt(0) != d1) {
        return false;
    }
    d1 *= 2;
    for (numi = 0; numi < 12; numi++) {
        d1 += c.charAt(11 - numi) * (2 + ((numi + 1) % 8));
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) 
        d1 = 0;
    if (dv.charAt(1) != d1) {
        return false;
    }
    return true;
}

function VerificaTELEFONE(i, form){
    var lingua = LinguaForm(form);
    var frm = document.forms[form];
    var valor = frm.elements[i].value;
    var telefone = /^\(?\d{2}\)?\d{4}-\d{4}$/i;
    if (!telefone.test(valor)) {
        return false;
    }
    return true;
}

function VerificaCEP(i, form){
    var lingua = LinguaForm(form);
    var frm = document.forms[form];
    var valor = frm.elements[i].value;
    var cep = /^[0-9]{5}-[0-9]{3}$/i;
    if (!cep.test(valor)) {
        return false;
    }
    return true;
}

function VerificaEMAIL(i, form){
    var frm = document.forms[form];
    var valorEmail = frm.elements[i].value;
    var valor = valorEmail.split(", ");
    for (var i = 0; i < valor.length; i++) {
        var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
        if (!filter.test(valor[i])) {
            return false;
        }
    }
    return true;
}

function CamposMascara(nome){
    var form = document.getElementById(nome).form.name;
    
    switch (nome) {
        case "cpf":{
            return "999.999.999-99";
            break;
        }
        case "cnpj":{
            return "99.999.999/9999-99";
            break;
        }
        case "cep":{
            if (LinguaForm(form) == 'br') {
                return "99999-999";
            }
            else {
                return "99999-9999";
            }
            break;
        }
        case "telefone":{
            if (LinguaForm(form) == 'br') {
                return "(99)9999-9999";
            }
            else {
                return "(9999)9999-9999";
            }
            break;
        }
        case "celular":{
            if (LinguaForm(form) == 'br') {
                return "(99)9999-9999";
            }
            else {
                return "(9999)9999-9999";
            }
            break;
        }
        case "fax":{
            if (LinguaForm(form) == 'br') {
                return "(99)9999-9999";
            }
            else {
                return "(9999)9999-9999";
            }
            break;
        }
    }
}

function Mascara(campo, KeyPress){
    var sMask = CamposMascara(campo.name);
    
    var i, nCount, sValue, fldLen, mskLen, bolMask, sCod, nTecla;
    if (document.all) { // Internet Explorer
        nTecla = KeyPress.keyCode;
    }
    else 
        if (document.layers) { // Nestcape
            nTecla = KeyPress.which;
        }
        else {
            nTecla = KeyPress.which;
            if (nTecla == 8) {
                return true;
            }
        }
		
    sValue = campo.value;
    sValue = sValue.toString().replace("-", "");
    sValue = sValue.toString().replace("-", "");
    sValue = sValue.toString().replace(".", "");
    sValue = sValue.toString().replace(".", "");
    sValue = sValue.toString().replace("/", "");
    sValue = sValue.toString().replace("/", "");
    sValue = sValue.toString().replace("(", "");
    sValue = sValue.toString().replace("(", "");
    sValue = sValue.toString().replace(")", "");
    sValue = sValue.toString().replace(")", "");
    sValue = sValue.toString().replace(",", "");
    sValue = sValue.toString().replace(",", "");
    sValue = sValue.toString().replace(" ", "");
    sValue = sValue.toString().replace(" ", "");
    fldLen = sValue.length;
    mskLen = sMask.length;
    i = 0;
    nCount = 0;
    sCod = "";
    mskLen = fldLen;
    while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " ") || (sMask.charAt(i) == ","))
        if (bolMask) {
            sCod += sMask.charAt(i);
            mskLen++;
        }
        else {
            sCod += sValue.charAt(nCount);
            nCount++;
        }
        i++;
    }
	campo.value = sCod;
    if (nTecla != 8) { // backspace
        if (sMask.charAt(i - 1) == "9") { // apenas numeros...
            return ((nTecla > 47) && (nTecla < 58)); // numeros de 0 a 9
        }
        else { // qualquer caracter...
            return true;
        }
    }
    else {
        return true;
    }
}
