
// Nova valida_dinamico
campos_obrigatorios         = new Array();
campos_inteiros             = new Array();
campos_float                = new Array();
campos_html                 = new Array();
nomes_campos                = new Array();
minimo_caracteres_campos    = new Array();
abas_campos                 = new Array();
campos_upload               = new Array();

var er_int          = /[^0-9,.]/;
var er_float        = /[^0-9,.]/;


function obrigatorio(campo,label)
{
    nomes_campos[campo] = label;
    return campos_obrigatorios.push(campo);
}

// Método inArray para javascript
function inArray(vetor,value)
{
    var i;
    for (i in vetor) {
        if (vetor[i] === value) {
            return true;
        }
    }
    return false;
}

function valida_dinamico2(form)
{
    erro = "";
    elemento_foco = "";
    direcionar_aba = null;

    if(campos_html.length > 0)
        tinyMCE.triggerSave();

    for(n = 0;n < form.elements.length; n++)
    {
        elemento = form.elements[n];

        // Isso é pra o elemento não ficar sem id
        if(!elemento.id)
            form.elements[n].id = "_form_elemento_"+n;

        // Campos obrigatórios
        if(inArray(campos_obrigatorios,elemento.name) && (elemento.value == "" && !(inArray(campos_upload, elemento.name) && (form["valor[" + elemento.name.replace(/^campo_/, "") + "]"].value != "" || elemento.value != "") ))) // Verifica também os casos especiais de campos de upload
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            erro += "* "+nome_campo+"";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Campos inteiros
        if(elemento.value != "" && inArray(campos_inteiros,elemento.name) && er_int.test(elemento.value) == true)
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            erro += "- "+nome_campo+": valor inválido digitado. O valor do campo deve ser um número inteiro.";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Campos float
        if(elemento.value != "" && inArray(campos_float,elemento.name) && er_float.test(elemento.value) == true)
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            nome_campo = nome_campo.replace(/<br>/," ");
            nome_campo = nome_campo.replace(/<BR>/," ");

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            erro += "- "+nome_campo+": valor inválido digitado. O valor do campo deve ser numérico.";

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }

        // Mínimo de caracteres
        if(minimo_caracteres_campos[elemento.name] && elemento.value.length < minimo_caracteres_campos[elemento.name])
        {
            if(nomes_campos[elemento.name])
                nome_campo = nomes_campos[elemento.name];
            else
                nome_campo = elemento.name;

            if(erro != "")
                erro += "\n";

            erro += "- "+nome_campo+": o campo deve conter no mínimo "+minimo_caracteres_campos[elemento.name]+" caracteres.";

            if(direcionar_aba == null)
                direcionar_aba = abas_campos[elemento.name];

            if(elemento_foco == "")
                elemento_foco = elemento;
            continue;

        }
    }

    if(erro == "")
    {
        return true;
    }
    else
    {
        alert('Por favor, preencha os seguintes campos antes de enviar:\n\n'+erro);
        try
        {
            if(tabPane1 && direcionar_aba != null)
                tabPane1.setSelectedIndex(direcionar_aba);
            elemento_foco.focus();
            elemento_foco.select();
        }
        catch(err)
        {

        }
        return false;
    }
}
