    /**
    ------------------------------------------------------
    Estes scripts fazem inserção de campos, mudanca de abas,
    etc. para facilitar a comunicacao do usuario com o 
    a interface.
    @author: Ruhan Bidart <ruhan@2xt.com.br>
    @since: 05/09/06
    ------------------------------------------------------
    **/
    /** Variáveis globais **/
    var numExt = ['', 'Primeira', 'Segunda', 'Terceira', 'Quarta', 'Quinta', 'Sexta', 'Sétima', 'Oitava', 'Nona', 'Décima'];    
    var divsErro = ['erros_aba1', 'erros_aba2', 'erros_aba3', 'erros_aba4', 'erros_fac', 'erros_curso', 'erros_exp'];       
    window.onload = function()
    { 
	    
        createBackground();
        resolveIE();
    };

    function resolveIE()
    {
        // resolve um bug do IE
        if(isIE())
        {
            alteraAba(document.getElementById('abapasso01'));
            proxPasso(2);
            proxPasso(1);
        };
    };

    /** Função chamada pelos botoes de proximo passo para que se modifiquem as abas **/
    function proxPasso(passo)
    {
        // apanha os divs referentes aos passos
        var passo1 = document.getElementById('passo01'); 
        var passo2 = document.getElementById('passo02');
        var passo3 = document.getElementById('passo03');
        var passo4 = document.getElementById('passo04');
        // organiza tais divs em uma lista
        var passos = [passo1, passo2, passo3, passo4]; 
    
        // varia na lista de divs 
        for(i = 0; i < passos.length; i++)
        {
            // esconde todos os divs 
            passos[i].style.display = 'none';
            // caso o div seja o escolhido, é mostrado
            if(i == passo - 1)
                passos[i].style.display = 'block';
        };
    };
    
    /** Funcao que mostra o div das faculdades caso o usuario possua um curso superior **/
    function existFaculdade(num)
    {
        divsFac = ['faculdade', 'botoes_fac', 'text_fac', 'erros_fac'];      
        var canAddFac = false;

        if(num != '')        
            inNum = parseInt(num);        
        else 
        {
            // escondendo e faculdade   
            for(var i = 0; i < divsFac.length - 1; i++)
                document.getElementById(divsFac[i]).style.display = 'none';        
            return;
        };   
        
        switch(inNum)
        {
            case 1:
                canAddFac = true;
                break; 
            case 2:    
                canAddFac = true;
                break; 
            case 3:
                canAddFac = true;
                break;
        };
        // mostra ou não o div das faculdades
        if(canAddFac) 
        {
            // mostrando a faculdade(-1 porque não entra o div de erros)
            for(var i = 0; i < divsFac.length - 1; i++)
                document.getElementById(divsFac[i]).style.display = 'block';
        }    
        // esconde o div das faculdades
        else 
        {
            // escondendo a faculdade
            for(var i = 0; i < divsFac.length; i++)
                document.getElementById(divsFac[i]).style.display = 'none';            
        };   
    };
  
    /** Funcao que muda o estilo da lista, indicando o vídeo ativo. **/
    function alteraAba(li) 
    {
        var navegador = 0;
        var ul = li.parentNode;
        var ulSize = ul.childNodes.length;  //total de li existentes
    
        if(isIE()) navegador = 0;  
        else navegador = 1; 
    
         // deixa todos com a classe antiga
         for(var x = 0; x < ulSize; x++)
         {            
             if(navegador == 1)
             {
                 if(ul.childNodes[x].innerHTML != undefined)
                     ul.childNodes[x].setAttribute('class','');
             } else ul.childNodes[x].className = ''; 
         };
    
         if (navegador == 0) li.setAttribute('className','aba_ativa');
         else  li.setAttribute('class','aba_ativa');
    };
  
    function addFaculdade()
    {
        // nome, classe e label dos inputs (as duas listas são referenciadas pelos index)
        erros = [];
        nameField = ['instituicao', 'titulo', 'inicio', 'termino'];
        idField = ['fac_instituicao', 'fac_curso', 'fac_data_inicio', 'fac_data_termino'];
        classField = ['eg','m','m','m'];
        textField = ['Inst. Ensino', 'Curso', 'In&iacute;cio', 'T&eacute;rmino'];
               
        // div de faculdades
        var faculdades = document.getElementById('faculdade');
        // contador da quantidade de faculdades que estão presentes
        var countFacHidden = document.getElementById('countFac');
		var cont = parseInt(countFacHidden.value);
        var countFac = parseInt(countFacHidden.value) + 1;
        // texto com os cursos ja adicionados pelo candidato
        var labelText = document.getElementById('text_fac'); 
        // criacao dos elementos necessários        
        var div = document.createElement('div');
        var fieldset = document.createElement('fieldset');
        var legend = document.createElement('legend');    
        var label2 = document.createElement('li');  
        var b = document.createElement('b');
        var br = document.createElement('br');                    
  
        if(!isEmptyFields(1) && (countFac <= 3))
        {   
            // esconde o div de erro
            Error(4, 'none');               
            // criacao do texto do fieldset
            legend.innerHTML = numExt[countFac]  + ' Faculdade';
            fieldset.appendChild(legend);      
            // criacao dos labels possuindo seus inputs  
            for(var i = 0; i < idField.length; i++)
            {
                var currentField = document.getElementById(idField[i]).value;            
                /** Criacao dos elementos que ficarão ocultos **/
                var input = document.createElement('input');
                var label = document.createElement('label');       
                /** Criacao dos Labels **/
                label.innerHTML = textField[i];
                label.setAttribute('for', idField[i] + countFac);
      
                // o IE trata o atributo 'classe' com um nome diferente = 'className'
                if(isIE()) 
                  label.setAttribute('className', classField[i])
                else 
                  label.setAttribute('class', classField[i]);  
                /** Criacao dos inputs **/ 
                input.setAttribute('type', 'text');
                input.setAttribute('id', idField[i] + countFac);
                input.setAttribute('name', 'faculdades.' + nameField[i] + ':records'+cont)                
                input.setAttribute('value', currentField);
      
                label.appendChild(input);                    
                fieldset.appendChild(label);     

                /** Criacao dos elementos que aparecerão **/   
                // monta o texto de saída
                b.innerHTML = textField[i];             
                label2.appendChild(b);
                label2.innerHTML += ':' + currentField + '  ';                                       
            }    
            // adiciona o texto com os cursos adicionados no documento
            labelText.appendChild(label2);
            //labelText.appendChild(br);                   
            // adiciona o novo div no documento
            div.appendChild(fieldset);     
            // coloca o div como invisivel pois será usado apenas para envio de informacoes    
            div.style.display = 'none';                                                
            faculdades.appendChild(div);      
            // adiciona 1 no contador de faculdades
            countFacHidden.value = countFac;   
            // limpa os campos
            clearFields(idField);            
        }
        else if(countFac > 3)
        {
            erros.push('Limite máximo foi alcançado.');
            fillListErros(document.getElementById(divsErro[4]), erros);
            Error(4, 'block');
        }         
        // mostra o erro
        else
            Error(4, 'block');     
    };

    function addCurso()
    {    
        // nome, classe e label dos inputs (as duas listas são referenciadas pelos index)
        erros = [];
        nameField = ['instituicao', 'titulo', 'carga_horaria', 'inicio', 'termino'];
        idField = ['curso_instituicao', 'curso_curso', 'carga_horaria', 'curso_data_inicio', 'curso_data_termino'];
        classField = ['eg', 'p', 'p', 'p', 'p'];
        textField = ['Inst. Ensino', 'Curso', 'Carga H.', 'In&iacute;cio', 'T&eacute;rmino'];            
               
        // div de cursos
        var cursos = document.getElementById('curso');
        // contador da quantidade de cursos que estão presentes
        var countCursoHidden = document.getElementById('countCurso');
		var cont = parseInt(countCursoHidden.value);
        var countCurso = parseInt(countCursoHidden.value) + 1;
        // texto com os cursos ja adicionados pelo candidato
        var labelText = document.getElementById('text_curso');            
        // criacao dos elementos necessários
        var div = document.createElement('div');     
        var fieldset = document.createElement('fieldset');
        var legend = document.createElement('legend');  
        var label2 = document.createElement('li');  
        var b = document.createElement('b');
        var br = document.createElement('br');           
  
        if(!isEmptyFields(2) && (countCurso <= 4))
        {
            // esconde o div de erro
            Error(5, 'none');         
            // criacao do texto do fieldset
            legend.innerHTML = numExt[countCurso] + ' Curso';
            fieldset.appendChild(legend);                     
            // criacao dos labels possuindo seus inputs  
            for(var i = 0; i < idField.length; i++)
            {
                var currentObject = document.getElementById(idField[i]);
                var currentField = currentObject.value;
                /** Criacao dos elementos que ficarão ocultos **/
                var input = document.createElement('input');
                var label = document.createElement('label');  
                /** Criacao dos Labels **/
                label.innerHTML = textField[i];
                label.setAttribute('for', idField[i] + countCurso);              
      
                // o IE trata o atributo 'classe' com um nome diferente = 'className'
                if(isIE()) 
                  label.setAttribute('className', classField[i])
                else 
                  label.setAttribute('class', classField[i]);  
                /** Criacao dos inputs **/ 
                input.setAttribute('type', 'text');
                input.setAttribute('id', idField[i] + countCurso);
                input.setAttribute('name', 'cursos.' + nameField[i] + ':records'+cont);                
                input.setAttribute('value', currentField);              
      
                label.appendChild(input);                    
                fieldset.appendChild(label);   
  
                /** Criacao dos elementos que aparecerão **/   
                // monta o texto de saída
                b.innerHTML = textField[i];       
                label2.appendChild(b);
                label2.innerHTML += ':' + currentField + '  ';                  
            }          
            // adiciona o texto com os cursos adicionados no documento
            labelText.appendChild(label2);
            //labelText.appendChild(br);
            // adiciona o novo div no documento
            div.appendChild(fieldset);   
            // coloca o div como invisivel pois será usado apenas para envio de informacoes
            div.style.display = 'none';                      
            cursos.appendChild(div);      
            // adiciona 1 no contador de faculdades
            countCursoHidden.value = countCurso;            
            // limpa os campos
            clearFields(idField);
        }  
        else if(countCurso > 4)
        {
            erros.push('Limite máximo foi alcançado.');
            fillListErros(document.getElementById(divsErro[5]), erros);
            Error(5, 'block');
        }         
        // mostra o div de erro
        else     
            Error(5, 'block');     
    };
    
    function addExperiencia()
    {   
        // nome, classe e label dos inputs (as duas listas são referenciadas pelos index)
        erros = [];
        idField = ['exp_empresa', 'exp_cargo', 'exp_data_inicio', 'exp_data_termino'];
        nameField = ['empresa', 'cargo', 'inicio', 'termino'];
        classField = ['p', 'p', 'p', 'p'];
        textField = ['Empresa', 'Cargo', 'Per&iacute;odo de', 'at&eacute;'];            
               
        // div de cursos
        var cursos = document.getElementById('experiencia');
        // contador da quantidade de cursos que estão presentes
        var countExpHidden = document.getElementById('countExp');
		var cont = parseInt(countExpHidden.value);
        var countExp = parseInt(countExpHidden.value) + 1;
        // texto com os cursos ja adicionados pelo candidato
        var labelText = document.getElementById('text_exp');            
        // criacao dos elementos necessários
        var div = document.createElement('div');     
        var fieldset = document.createElement('fieldset');
        var legend = document.createElement('legend');  
        var label2 = document.createElement('li');  
        var b = document.createElement('b');
        var br = document.createElement('br');           
  
        if(!isEmptyFields(3) && (countExp <= 5))
        {
            // esconde o div de erro
            Error(6, 'none');         
            // criacao do texto do fieldset
            legend.innerHTML = numExt[countExp] + ' Experiência';
            fieldset.appendChild(legend);                     
            // criacao dos labels possuindo seus inputs  
            for(var i = 0; i < idField.length; i++)
            {
                var currentObject = document.getElementById(idField[i]);
                var currentField = currentObject.value;
                /** Criacao dos elementos que ficarão ocultos **/
                var input = document.createElement('input');
                var label = document.createElement('label');  
                /** Criacao dos Labels **/
                label.innerHTML = textField[i];
                label.setAttribute('for', idField[i] + countExp);              
      
                // o IE trata o atributo 'classe' com um nome diferente = 'className'
                if(isIE()) 
                  label.setAttribute('className', classField[i])
                else 
                  label.setAttribute('class', classField[i]);  
                /** Criacao dos inputs **/ 
                input.setAttribute('type', 'text');
                input.setAttribute('id', idField[i] + countExp);
                input.setAttribute('name', 'experiencias.' + nameField[i] + ':records'+cont)
                input.setAttribute('value', currentField);              
      
                label.appendChild(input);                    
                fieldset.appendChild(label);   
  
                /** Criacao dos elementos que aparecerão **/   
                // monta o texto de saída
                b.innerHTML = textField[i];             
                label2.appendChild(b);
                label2.innerHTML += ':' + currentField + '  ';                  
            }          
            // adiciona o texto com os cursos adicionados no documento
            labelText.appendChild(label2);
            //labelText.appendChild(br);
            // adiciona o novo div no documento
            div.appendChild(fieldset);   
            // coloca o div como invisivel pois será usado apenas para envio de informacoes
            div.style.display = 'none';                      
            cursos.appendChild(div);      
            // adiciona 1 no contador de faculdades
            countExpHidden.value = countExp;            
            // limpa os campos
            clearFields(idField);
        } 
        else if(countExp > 5)
        {
            erros.push('Limite máximo foi alcançado.');
            fillListErros(document.getElementById(divsErro[6]), erros);
            Error(6, 'block');
        } 
        // mostra o div de erro
        else     
            Error(6, 'block');     
    };
  
    function removeLastField(type)
    {
         /** Pega a variavel que deve ser usada como contador **/
        switch(type)
        {
            // faculdade
             case 1:     
                 field = document.getElementById('faculdade');
                 text = document.getElementById('text_fac');
                 countHidden = document.getElementById('countFac');
                 count = parseInt(countHidden.value);  
                 break;
            // curso      
            case 2:
                 field = document.getElementById('curso');
                 text = document.getElementById('text_curso');              
                 countHidden = document.getElementById('countCurso');
                 count = parseInt(countHidden.value);       
                 break;
            // experiencia      
            case 3:
                 field = document.getElementById('experiencia');    
                 text = document.getElementById('text_exp');                                                        
                 countHidden = document.getElementById('countExp');
                 count = parseInt(countHidden.value);       
                 break;                                       
        }
        /** obriga o usuario a colocar pelo um curso/faculdade **/
        if(count > 0)
        {
           // remove o item
           field.removeChild(field.lastChild);
           // remove 2 vezes por causa do <BR />
           text.removeChild(text.lastChild);
           //text.removeChild(text.lastChild);         
           // atualiza o contador escondido
           countHidden.value = count - 1;
        };
    };
    
    function fillListErros(div, erros)
    {
        div.innerHTML = '';
        for(var i = 0; i < erros.length; i++)
            div.innerHTML += erros[i];
    };
      
    function isEmptyFields(numDiv)
    {
        // divs de erros 
        var result = false;
        var erros = [];
        var divs = ['', 'faculdade', 'curso', 'experiencia'];
        var divErros = ['','erros_fac', 'erros_curso', 'erros_exp'];    
        var descErro = ['','Preencha todos os campos relativos à Faculdade antes de adicionar uma nova.', 
                       'Preencha todos os campos relativos ao Curso antes de adicionar um novo.', 
                       'Preencha todos os campos relativos à Experiência antes de adicionar uma nova.'];      
        var div = document.getElementById(divs[numDiv]);
        var inputs = div.getElementsByTagName('input');  
        
        /** Testa se há algum textarea vazio  **/
        for(var i = 0; i < inputs.length; i++)
        {
            // testa se há campos vazios (exp_data_termino pode ser vazio)
            if(inputs[i].value == '' && inputs[i].id != 'exp_data_termino')
            {
                erros.push(descErro[numDiv]);
                result = true;                
                break;
            };   
            // testa se os campos que devem possuir uma data estão corretos         
            if(inputs[i].getAttribute('data') == 'true')
            {
                // exp_data_termino pode ser vazio
                if(!isDate(inputs[i].value, null) && inputs[i].id != 'exp_data_termino')
                {
                    erros.push('Os campos Início e Término devem estar no formato DD/MM/AAAA');
                    result = true;
                    break;
                };
            };
        };
        // preenche a lista de erros
        if(result) fillListErros(document.getElementById(divErros[numDiv]), erros);
        return result;
    };
   
    function clearFields(fields)
    {
        for(var i = 0; i < fields.length; i++)    
        {
            document.getElementById(fields[i]).value = '';
        };
    };
    
    function isIE()
    {
        if(navigator.appName == 'Microsoft Internet Explorer')
          return true;  
        else
          return false;
    };
    
    function toErrorDiv()
    {
        abasErro = ['erros_aba1', 'erros_aba2', 'erros_aba3', 'erros_aba4'];
        abas = ['abapasso01', 'abapasso02', 'abapasso03', 'abapasso04'];
        for(var i = 0; i < abasErro.length; i++)
        {
            var objErro = document.getElementById(abasErro[i]);
            var objAba = document.getElementById(abas[i]);
            if(objErro.style.display == 'block')
            {
                // altera a classe da aba
                alteraAba(objAba);       
                // coloca o div referente a aba como block    
                proxPasso(i + 1); 
                return;
            };
        };
    };

    function Error(numDiv, display)
    {        
        document.getElementById(divsErro[numDiv]).style.display = display;        
    };    
        
    function hideAllErros()
    {
        for(var i = 0; i < divsErro.length; i++)        
        {
            document.getElementById(divsErro[i]).style.display = 'none';
        };
    };
    
    function isEmptySelects(obj) 
    {
        var result = false;
        selects = obj.getElementsByTagName('select');
        
        for(i = 0; i < selects.length; i++)
        {
            if(selects[i].value == '')
                return true;
        };    
        return false;
    };
    
    function disabledForm(oForm, disabled)
    {
        var curriculo = document.getElementById('curriculo');
        var aguarde = document.getElementById('aguarde');
        /* Congela ou descongela o form */
        for(var i = 0; i < oForm.length; i++)
            oForm[i].disabled = disabled;
            
        // mostra a mensagem de "aguarde"
        if(disabled == true)
            showWait()
        else
        {
            aguarde.style.display = 'none';               
            curriculo.style.display = 'block';
        }    
                        
    };
    
    function showWait()
    {
        var aguarde = document.getElementById('aguarde');
        var curriculo = document.getElementById('curriculo');
        aguarde.style.display = 'block';
        curriculo.style.display = 'none';    
    };
    
    function showSuccess()    
    {
        var sucesso = document.getElementById('curriculo_sucesso');
        var curriculo = document.getElementById('curriculo');
        var aguarde = document.getElementById('aguarde');        
        sucesso.style.display = 'block';
        curriculo.style.display = 'none';
        aguarde.style.display = 'none';
    }; 

    function showIndicacao(value)
    {
        objIndicacao = document.getElementById('indicacao');
        objQuemIndicou = document.getElementById('quem_indicou');
        if(value == 'Indicação')
        { 
            objIndicacao.style.display = 'block'; 
            objQuemIndicou.setAttribute('require', '4Informe o nome de quem te indicou.');
        }
        else 
        { 
            objIndicacao.style.display = 'none';  
            objQuemIndicou.removeAttribute('require');
        };            
    };

