﻿// JavaScript com todas as funcões para formulários

////////////////////////////////////////////////////////////////////////////////////////
//Verificação de campos obrigatórios no formulário
                             //Informe todos os ID dos campos que deseja ser obrigatório
var fieldsSource = new Array("txtNome", "txtEmpresaTrabalha", "txtEmail", "txtTelefone", "txtDescreverCenario", "txtRequisitosNegocio", "txtCaracteristicasTecnicas", "txtComponentesSoftware", "txtSistemaOperacional", "txtFerramentas", "txtDificuldadeImplantacao", "txtPrincipaisBeneficios", "txtEquipeProjeto", "txtFuncaoProjeto", "txtEmpresaImplementada", "txtRecursosTechnet", "ckbICWinVistaSP1", "ckbICIE8", "ckbICWin7", "ckbISWinServer2008", "ckbISSQLServer2008", "ckbISForefrontStirling", "ckbISWinServer2008_R2", "ckbVHyperV", "ckbVSystemCenterVirtual", "ckbIWIIS7", "ckbIWSharepoint", "ckbHHPCServer2008", "ckbCCOCS", "ckbGSystemCenterOperations", "ckbGSystemCenterConfiguration", "ckbIMLinux", "ckbIMPHP", "ckbIMApache", "ckbIMMysql", "ckbIMOracle", "ckbIMXenSoruce", "ckbAceito");
function getFieldsFromSource(objSubmitButton)
{          
    var qtdErrors = 0;
    var qtdErrorsGroup = 0;
    var arrObjStarToHide = new Array();
    var arrObjects = new Array();
    var inputs = document.getElementsByTagName("input");
    var selects = document.getElementsByTagName("select");
    var textAreas = document.getElementsByTagName("textarea");
      
    for( var i=0; i<inputs.length; i++ )
        arrObjects.push(inputs[i]);
    for( var i=0; i<textAreas.length; i++ )
        arrObjects.push(textAreas[i]);
    for( var i=0; i<selects.length; i++ )
        arrObjects.push(selects[i]);


    // loop nos campos de texto
    for( var i=0; i<arrObjects.length; i++ )
    {
        for( var j=0; j<fieldsSource.length; j++ )
        {
            if( arrObjects[i].name.indexOf(fieldsSource[j]) >= 0 )
            {
                if( (!trim(arrObjects[i].value) && (arrObjects[i].type.toLowerCase() != "checkbox")) || ((arrObjects[i].type.toLowerCase() == "checkbox") && !arrObjects[i].checked) )
                {
                    try
                    {
                        if( document.getElementById(fieldsSource[j] + "_dot").title != "" )
                        {
                            document.getElementById(document.getElementById(fieldsSource[j] + "_dot").title).style.visibility = "visible";
                            qtdErrorsGroup++;
                        }
                        else
                            document.getElementById(fieldsSource[j] + "_dot").style.visibility = "visible";
                        qtdErrors++;
                    }
                    catch(e)
                    {
                        try
                        {
                            document.getElementById(fieldsSource[j] + "_dot").style.visibility = "visible";
                            qtdErrors++;
                        }
                        catch(e)
                        {}
                    }                            
                    
                    try
                    {
                        if( document.getElementById(fieldsSource[j] + "_dot_or").title != "" )
                        {
                            document.getElementById(document.getElementById(fieldsSource[j] + "_dot_or").title).style.visibility = "visible";
                            qtdErrorsGroup++;
                        }
                        else
                            document.getElementById(fieldsSource[j] + "_dot_or").style.visibility = "visible";
                    }
                    catch(e)
                    {
                        try
                        {
                            document.getElementById(fieldsSource[j] + "_dot_or").style.visibility = "visible";
                        }
                        catch(e)
                        {}
                    }                            
                }
                else
                {                                                        
                    // tratamento de erro dos elementos onde pelo menos um tem que estar preenchido
                    try
                    {
                        //se pelo menos um elemento está preenchido ou checado, não há erros. deve-se esconder a estrela
                        if( document.getElementById(fieldsSource[j] + "_dot_or").title != "" )
                            arrObjStarToHide.push(document.getElementById(document.getElementById(fieldsSource[j] + "_dot_or").title));
                    }
                    catch(e)
                    {}                           
                    
                    try
                    {
                        if( qtdErrorsGroup == 0 )
                            document.getElementById(document.getElementById(fieldsSource[j] + "_dot").title).style.visibility = "hidden";

                        qtdErrorsGroup = 0;
                    }
                    catch(e)
                    {}   
                }
            }
        }
    }
    
    //escondendo estrelas de erro dos elementos de grupos exclusivos (onde basta um elemento do grupo estar preenchido para remover o erro).
    for( var z=0; z<arrObjStarToHide.length; z++ )
        arrObjStarToHide[z].style.visibility = "hidden";
        
    if( (qtdErrors > 0) || (arrObjStarToHide.length == 0) )
    {
        document.getElementById("spanErrorMsg").innerHTML = "Preencha corretamente os campos destacados.";
        document.getElementById("imgErro").style.display = "";
        return false; 
    }
    else
    {
        document.getElementById("spanErrorMsg").innerHTML = "";
        document.getElementById("imgErro").style.display = "none";
        //objSubmitButton.style.display = "none"; // Desabilita o botão de submit. Isso previne cliques indesejados do usuário
        return true;
    }
}
        
//retira espaços em branco da string
function leftTrim(sString)
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    return sString;
        }
        function rightTrim(sString)
        {
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
        }
        function trim(sString)
        {
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}
        
////////////////////////////////////////////////////////
// Campo sem números
function noLetters(e)
{
	var tecla;
	if(!e)
		e = window.event;
	
	// verificação cross-browser
	if(e.which)
		tecla = e.which;
	else if(e.keyCode)
		tecla = e.keyCode;

	if( (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105) || tecla == 8 || tecla == 37 || tecla == 39 || tecla == 46 || tecla == 9 )
	{
		/*9: tab; 8 = backspace; 37 = seta pra esquerda; 39 = seta pra direita; 46 = delete*/
		return true;
	}
	else
	{
		return false;
	}
}