// JavaScript Document

//retira espaços em branco do começo e do fim da string dada
function trim(str) {
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}



//Função para verificar se emails estão em formato válido
function emailValido(src) {
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(src);
}

function vazio(src){
	return trim(src)=="";
}


//construtor do objeto Campo
function campo(nome, id, tipovalidacao){
	this.nome = nome;
	this.id = id;
	this.tipovalidacao = tipovalidacao;
}


//recebe um array de objetos com informações sobre os campos
//retorna uma lista UL com os erros ou true se der td certo
function valida(arrayCampos){
	var elem;
	var strRetorno = "<ul>\n";
	var erro = false;
	for(i=0; i<arrayCampos.length; i++){
		elem = document.getElementById(arrayCampos[i].id);
		if(arrayCampos[i].tipovalidacao==""){
			if(vazio(elem.value)){
				erro = true;
				strRetorno = strRetorno + "<li>O campo "+arrayCampos[i].nome+" não pode ser deixado em branco.</li>\n";
			}
		}else if(arrayCampos[i].tipovalidacao=="email"){
			if(!emailValido(elem.value)){
				erro = true;
				strRetorno = strRetorno + "<li>O campo "+arrayCampos[i].nome+" deve receber um email válido.</li>\n";
			}
		}
	}
	strRetorno = strRetorno + "</ul>\n";
	if(erro){
		return strRetorno;	
	}else{
		return true;	
	}
}

/*funcoes de validações de formulários específicos*/

function validaContato(){
	campos = new Array(4);
	campos[0] = new campo("Nome", "nome", "");
	campos[1] = new campo("Email", "email", "email");
	campos[2] = new campo("Assunto", "assunto", "");
	campos[3] = new campo("Mensagem", "mensagem", "");

	validacao = valida(campos);
	var aviso = document.getElementById("aviso");

	if(validacao!==true){
		aviso.innerHTML = validacao;
		aviso.style.display = "block";
		return false;
	}else{
		aviso.style.display = "none";		
		return true;	
	}
}


function validaCurriculo(){
	campos = new Array(35);
	/*Dados pessoais*/
	campos[0] = new campo("Nome", "nome", "");
	campos[1] = new campo("Sexo", "sexo", "");
	campos[2] = new campo("Estado civil", "estadocivil", "");
	campos[3] = new campo("Nacionalidade", "nacionalidade", "");
	campos[4] = new campo("Naturalidade", "naturalidade", "");
	campos[5] = new campo("RG", "rg", "");
	campos[6] = new campo("CPF", "cpf", "");
	campos[7] = new campo("No. da carteira de trabalho", "carttrabalho", "");
	campos[8] = new campo("Endereço", "endereco", "");
	campos[9] = new campo("Cidade", "cidade", "");
	campos[10] = new campo("Bairro", "bairro", "");
	campos[11] = new campo("Estado", "estado", "");
	campos[12] = new campo("Telefone fixo", "telfixo", "");
	campos[13] = new campo("Email", "email", "");
	
	/*Historico*/
	campos[14] = new campo("Ano de conclusão do ensino fundamental", "anoconclusao_fundamental", "");
	campos[15] = new campo("Estabelecimento do ensino fundamental", "estabelecimento_fundamental", "");
	campos[16] = new campo("Local do ensino fundamental", "local_fundamental", "");
	campos[17] = new campo("Ano de conclusão do ensino médio", "anoconclusao_medio", "");
	campos[18] = new campo("Estabelecimento do ensino médio", "estabelecimento_medio", "");
	campos[19] = new campo("Local do ensino médio", "local_medio", "");

	/*Penultimo emprego*/
	campos[20] = new campo("Local do penúltimo emprego", "local_penultimo", "");
	campos[21] = new campo("Período do penúltimo emprego", "periodo_penultimo", "");
	campos[22] = new campo("Cargo do penúltimo emprego", "cargo_penultimo", "");
	campos[23] = new campo("Setor do penúltimo emprego", "setor_penultimo", "");
	campos[24] = new campo("Endereço da empresa do penúltimo emprego", "endereco_empresa_penultimo", "");
	campos[25] = new campo("Telefone do penúltimo emprego", "telefone_penultimo", "");
	campos[26] = new campo("Motivo da saída do penúltimo emprego", "motivo_penultimo", "");

	/*Referencias pessoais*/
	campos[27] = new campo("Nome da referência pessoal 1", "referencia1_nome", "");
	campos[28] = new campo("Empresa da referência pessoal 1", "referencia1_empresa", "");
	campos[29] = new campo("Cargo da referência pessoal 1", "referencia1_cargo", "");
	campos[30] = new campo("Telefone da referência pessoal 1", "referencia1_telefone", "");
	campos[31] = new campo("Nome da referência pessoal 2", "referencia2_nome", "");
	campos[32] = new campo("Empresa da referência pessoal 2", "referencia2_empresa", "");
	campos[33] = new campo("Cargo da referência pessoal 2", "referencia2_cargo", "");
	campos[34] = new campo("Telefone da referência pessoal 2", "referencia2_telefone", "");
	
	/*Observacoes*/
	campos[35] = new campo("Dados extras", "dados_extras", "");
	
	validacao = valida(campos);
	var aviso = document.getElementById("aviso");

	if(validacao!==true){
		aviso.innerHTML = validacao;
		aviso.style.display = "block";
		scroll(0,0);
		return false;
	}else{
		aviso.style.display = "none";		
		return true;	
	}	
}





