// JavaScript Document

var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
var reDate = reDate4;
var testeMatricula = /^\d{9,11}$/;
var testeAno = /^\d{4}$/;
var testeNumero = /^\d+$/;
var testeSenha = /^\w{6,20}$/;
var testeCep = /^\d{8}$/;
//var testeAtivacao = /^\([A-Za-z]|[0-9])|([0-9]|[A-Za-z])$/;
var testeEmail = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;


  function mascaraData(data){ 
	  var mydata = ''; 
	  mydata = mydata + data.value; 
	  if ( mydata.length >= 10 ) {
		  data.value = mydata.slice(0,10);
		  return;
	  }
	  if (mydata.length == 2){ 
		  mydata = mydata + '/';
		  data.value = mydata;
		  return;
	  } 
	  if (mydata.length == 5){ 
		  mydata = mydata + '/';
		  data.value = mydata;
		  return;
	  }	  
  } 

// valida data no formato dd/mm/aaaa
function validarData(data)
{
	if (!reDate5.test(data.value) || data.value == "" || data.value == " ") {
		return false;
	}
} // doDate

function doDate(pStr, pFmt)
{
	eval("reDate = reDate" + pFmt);
	if (!reDate.test(pStr) || pStr == "" || pStr == " ") {
		alert(pStr + " não é uma data válida.");
		document.form1.f_curric_data_nasc.value = '';
		document.form1.f_curric_data_nasc.focus();
		return false;
	}
} // doDate

function doDate1(pStr, pFmt)
{
	eval("reDate = reDate" + pFmt);
	if (!reDate.test(pStr) || pStr == "" || pStr == " ") {
		return false;
	}
} // doDate

function doDate3(pStr, pFmt)
	{
	eval("reDate = reDate" + pFmt);
	if (!reDate.test(pStr) || pStr == "" || pStr == " ") {
		return false;
	}
} // doDate	

function doDate4(pStr, pFmt)
	{
	eval("reDate = reDate" + pFmt);
	if (!reDate.test(pStr) || pStr == "" || pStr == " ") {
		alert(pStr + " não é uma data válida.");
		document.form1.f_curric_exp_periodoF.value = '';
		document.form1.f_curric_exp_periodoF.focus();
		return false;
	}
} // doDate	


// EMPRESA

function validarFormVaga() {
	var str = '';

	document.form1.f_vaga.value = Trim(document.form1.f_vaga.value);	
	if ( document.form1.f_vaga.value == '' ) {
		str = str + "Vaga em branco.\n";
		document.getElementById('l_vaga').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_vaga').style.backgroundColor = '#dfdfdf';
	}

	document.form1.f_descricao.value = Trim(document.form1.f_descricao.value);	
	if ( document.form1.f_descricao.value == '' ) {
		str = str + "Descrição em branco.\n";
		document.getElementById('l_descricao').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_descricao').style.backgroundColor = '#dfdfdf';
	}

	document.form1.f_prazo.value = Trim(document.form1.f_prazo.value);
	if ( document.form1.f_prazo.value == '' ) {
		str = str + "Prazo em branco.\n";
		document.getElementById('l_prazo').style.backgroundColor = '#FFFFCC';		
	}
	else {
		if ( validarData(document.form1.f_prazo) == false ) {
			str = str + "Prazo inválido. (Formato: dd/mm/aaaa)\n";
			document.getElementById('l_prazo').style.backgroundColor = '#FFFFCC';					
		}
		else {
			document.getElementById('l_prazo').style.backgroundColor = '#f0f0f0';
		}
	}	
	
	document.form1.f_tipo.value = Trim(document.form1.f_tipo.value);	
	if ( document.form1.f_tipo.value == '' ) {
		str = str + "Tipo em branco.\n";
		document.getElementById('l_tipo').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_tipo').style.backgroundColor = '#dfdfdf';
	}	
	
	document.form1.f_quantidade.value = Trim(document.form1.f_quantidade.value);	
	if ( document.form1.f_quantidade.value == '' ) {
		str = str + "Quantidade em branco.\n";
		document.getElementById('l_quantidade').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_quantidade').style.backgroundColor = '#f0f0f0';
	}	
	
	document.form1.f_pre.value = Trim(document.form1.f_pre.value);	
	if ( document.form1.f_pre.value == '' ) {
		str = str + "Pré-Requisitos em branco.\n";
		document.getElementById('l_pre').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_pre').style.backgroundColor = '#dfdfdf';
	}	
	
	document.form1.f_cn.value = Trim(document.form1.f_cn.value);	
	if ( document.form1.f_cn.value == '' ) {
		str = str + "Conhecimento necessário em branco.\n";
		document.getElementById('l_conn').style.backgroundColor = '#FFFFCC';		
	}
	else {
		document.getElementById('l_conn').style.backgroundColor = '#f0f0f0';
	}	
	
	document.form1.f_jornada.value = Trim(document.form1.f_jornada.value);	
	if ( document.form1.f_jornada.value == '' ) {
		str = str + "Jornada em branco.\n";
		document.getElementById('l_jornada').style.backgroundColor = '#FFFFCC';		
	}
	else {
		if ( testeNumero.test(document.form1.f_jornada.value) == false ) {
			str = str + "Jornada inválida. (Formato: 8 Horas/Dia)\n";
			document.getElementById('l_jornada').style.backgroundColor = '#FFFFCC';					
		}
		else {
			document.getElementById('l_jornada').style.backgroundColor = '#f0f0f0';
		}
	}	
	
	if ( str == '' ) {
		document.form1.submit();
	}
	else {
		alert(''+str);
		return false;
	}
}

function validarSenha(senha) {
	senha = Trim(senha);	
	if ( testeSenha.test(senha) == false ) {
		document.getElementById('l_senha').style.backgroundColor = '#FFFFCC';
		document.getElementById('l_senhaERRO').innerHTML = 'Senha inválido';
		document.form1.f_senha.focus();
		return false;
	}
	else {
		document.getElementById('l_senha').style.backgroundColor = '#f0f0f0';
		document.getElementById('l_senhaERRO').innerHTML = '';		
	}	
}

function validarConfirmacaoSenha(csenha) {
	csenha = Trim(csenha);
	senha = Trim(document.form1.f_senha.value);
	if ( testeSenha.test(senha) == false ) {
		validarSenha(senha);
		return false;
	}
	
	if ( csenha != document.form1.f_senha.value ) {
		document.getElementById('l_csenha').style.backgroundColor = '#FFFFCC';
		document.getElementById('l_csenhaERRO').innerHTML = 'Senha não confere';
		document.form1.f_senha.value = '';
		document.form1.f_csenha.value = '';
		document.form1.f_senha.focus();
		return false;
	}
	else {
		document.getElementById('l_csenha').style.backgroundColor = '#DFDFDF';
		document.getElementById('l_csenhaERRO').innerHTML = '';		
	}	
}

function validarEtapa1() {
	document.form1.f_nome.value = Trim(document.form1.f_nome.value);	
	if ( document.form1.f_nome.value == '' ) {
		alert("Nome da empresa em branco.");
		document.form1.f_nome.focus();
		return false;
	}
	
	document.form1.f_razao.value = Trim(document.form1.f_razao.value);	
	if ( document.form1.f_razao.value == '' ) {
		alert("Razão Social em branco.");
		document.form1.f_razao.focus();
		return false;
	}	

	document.form1.f_cnpj.value = Trim(document.form1.f_cnpj.value);	
	if ( document.form1.f_cnpj.value == '' ) {
		alert("CNPJ em branco.");
		document.form1.f_cnpj.focus();
		return false;
	}	
	
	if ( isCnpj(document.form1.f_cnpj.value) == false ) {
		alert("CNPJ inválido.");
		document.form1.f_cnpj.focus();
		return false;
	}		
	
	document.form1.f_ano.value = Trim(document.form1.f_ano.value);	
	if ( document.form1.f_ano.value == '' ) {
		alert("Ano de Criação em branco.");
		document.form1.f_ano.focus();
		return false;
	}		
	
	if ( testeAno.test(document.form1.f_ano.value) == false ) {
		alert("Ano de Criação inválido.\nFormato: AAAA (1990) .");
		document.form1.f_ano.value = '';
		document.form1.f_ano.focus();
		return false;
	}	
	
	document.form1.f_nfuncionario.value = Trim(document.form1.f_nfuncionario.value);	
	if ( document.form1.f_nfuncionario.value == '' ) {
		alert("Número de funcionários em branco.");
		document.form1.f_nfuncionario.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_nfuncionario.value) == false ) {
		alert("Número de funcionários inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_nfuncionario.value = '';
		document.form1.f_nfuncionario.focus();
		return false;
	}	
	
	document.form1.f_nestagiario.value = Trim(document.form1.f_nestagiario.value);	
	if ( document.form1.f_nestagiario.value != '' ) {
		if ( testeNumero.test(document.form1.f_nestagiario.value) == false ) {
			alert("Número de estágiarios inválido.\nEste campo só aceita números inteiros.");
			document.form1.f_nestagiario.value = '';
			document.form1.f_nestagiario.focus();
			return false;
		}		
	}

	document.form1.f_ramo.value = Trim(document.form1.f_ramo.value);	
	if ( document.form1.f_ramo.value == '' ) {
		alert("Ramo da empresa em branco.");
		document.form1.f_ramo.focus();
		return false;
	}		

	document.form1.f_login.value = Trim(document.form1.f_login.value);	
	if ( document.form1.f_login.value == '' ) {
		alert("Login da empresa em branco.");
		document.form1.f_login.focus();
		return false;
	}		

	document.form1.f_login.value = Trim(document.form1.f_login.value);	
	if ( document.form1.f_login.value == '' ) {
		alert("Login em branco.");
		document.form1.f_login.focus();
		return false;
	}		

	document.form1.f_senha.value = Trim(document.form1.f_senha.value);	
	if ( document.form1.f_senha.value == '' ) {
		alert("Senha em branco.");
		document.form1.f_senha.focus();
		return false;
	}
	
	if ( testeSenha.test(document.form1.f_senha.value) == false ) {
		alert("Senha inválida.\nFormato: até 6-20 caracteres alfanumericos");
		document.form1.f_csenha.value = '';
		document.form1.f_senha.value = '';
		document.form1.f_senha.focus();
		return false;
	}	
	if ( document.form1.f_csenha.value == '' ) {
		alert("Confirmação de Senha em branco.");
		document.form1.f_csenha.focus();
		return false;
	}
	if ( document.form1.f_csenha.value != document.form1.f_senha.value ) {
		alert("As senhas digitadas não são iguais.");
		document.form1.f_csenha.value = '';
		document.form1.f_senha.value = '';
		document.form1.f_senha.focus();
		return false;		
	}

	document.form1.submit();
}

function validarEmailE2(email) {
	email = Trim(email);	
	if ( testeEmail.test(email) == false ) {
		document.getElementById('l_email').style.backgroundColor = '#FFFFCC';
		document.getElementById('l_emailERRO').innerText = 'E-mail inválido';
		document.form1.f_email.focus();
		return false;
	}
	else {
		document.getElementById('l_email').style.backgroundColor = '#DFDFDF';
		document.getElementById('l_emailERRO').innerText = '';		
	}
}

function validarEtapa2() {
	
	document.form1.f_endereco.value = Trim(document.form1.f_endereco.value);	
	if ( document.form1.f_endereco.value == '' ) {
		alert("Endereço em branco.");
		document.form1.f_endereco.focus();
		return false;
	}	
	
	document.form1.f_numero.value = Trim(document.form1.f_numero.value);	
	if ( document.form1.f_numero.value == '' ) {
		alert("Número em branco.");
		document.form1.f_numero.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_numero.value) == false ) {
		alert("Número inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_numero.value = '';
		document.form1.f_numero.focus();
		return false;
	}		
	
	document.form1.f_bairro.value = Trim(document.form1.f_bairro.value);	
	if ( document.form1.f_bairro.value == '' ) {
		alert("Bairro em branco.");
		document.form1.f_bairro.focus();
		return false;
	}	

	document.form1.f_cep.value = Trim(document.form1.f_cep.value);	
	if ( document.form1.f_cep.value == '' ) {
		alert("Cep em branco.");
		document.form1.f_cep.focus();
		return false;
	}		
	
	if ( testeCep.test(document.form1.f_cep.value) == false ) {
		alert("Cep inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_cep.value = '';
		document.form1.f_cep.focus();
		return false;
	}		

	document.form1.f_estado.value = Trim(document.form1.f_estado.value);	
	if ( document.form1.f_estado.value == '' ) {
		alert("Estado em branco.");
		document.form1.f_estado.focus();
		return false;
	}		

	document.form1.f_ddd1.value = Trim(document.form1.f_ddd1.value);	
	if ( document.form1.f_ddd1.value == '' ) {
		alert("DDD em branco.");
		document.form1.f_ddd1.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_ddd1.value) == false ) {
		alert("DDD inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_ddd1.value = '';
		document.form1.f_ddd1.focus();
		return false;
	}
	
	document.form1.f_numero1.value = Trim(document.form1.f_numero1.value);	
	if ( document.form1.f_numero1.value == '' ) {
		alert("Número em branco.");
		document.form1.f_numero1.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_numero1.value) == false ) {
		alert("Número inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_numero1.value = '';
		document.form1.f_numero1.focus();
		return false;
	}	

	if ( document.form1.f_ddd2.value != '' && testeNumero.test(document.form1.f_ddd2.value) == false ) {
		alert("DDD inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_ddd2.value = '';
		document.form1.f_ddd2.focus();
		return false;
	}
	
	if ( document.form1.f_numero2.value != '' && testeNumero.test(document.form1.f_numero2.value) == false ) {
		alert("Numero inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_numero2.value = '';
		document.form1.f_numero2.focus();
		return false;
	}
	
	document.form1.f_email.value = Trim(document.form1.f_email.value);	
	if ( document.form1.f_email.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_email.focus();
		return false;
	}

	if ( testeEmail.test(document.form1.f_email.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_email.value = '';
		document.form1.f_email.focus();
		return false;
	}

	document.form1.submit();
}

function validarEmailE3(email) {
	email = Trim(email);	
	if ( testeEmail.test(email) == false ) {
		document.getElementById('l_cemail').style.backgroundColor = '#FFFFCC';
		document.getElementById('l_cemailERRO').innerText = 'E-mail inválido';
		document.form1.f_c_email.focus();
	}
	else {
		document.getElementById('l_cemail').style.backgroundColor = '#f0f0f0';
		document.getElementById('l_cemailERRO').innerText = '';		
	}
}

function validarEmailE3A(email) {
	email = Trim(email);	
	if ( email != '' && testeEmail.test(email) == false ) {
		document.getElementById('l_cemailA').style.backgroundColor = '#FFFFCC';
		document.getElementById('l_cemailAERRO').innerText = 'E-mail inválido';
		document.form1.f_c_emailA.focus();
		return false;
	}
	else {
		document.getElementById('l_cemailA').style.backgroundColor = '#DFDFDF';
		document.getElementById('l_cemailAERRO').innerText = '';		
	}
}

function finalizarEmpresa() {
	
	document.form1.f_c_nome.value = Trim(document.form1.f_c_nome.value);	
	if ( document.form1.f_c_nome.value == '' ) {
		alert("Nome em branco.");
		document.form1.f_c_nome.focus();
		return false;
	}
	
	document.form1.f_c_cpf.value = Trim(document.form1.f_c_cpf.value);	
	if ( document.form1.f_c_cpf.value == '' ) {
		alert("CPF em branco.");
		document.form1.f_c_cpf.focus();
		return false;
	}	
	
	if ( isCpf(document.form1.f_c_cpf.value) == false ) {
		alert("CPF inválido.");
		document.form1.f_c_cpf.focus();
		return false;
	}			
	
	document.form1.f_c_rg.value = Trim(document.form1.f_c_rg.value);	
	if ( document.form1.f_c_rg.value == '' ) {
		alert("RG em branco.");
		document.form1.f_c_rg.focus();
		return false;
	}		
	
	document.form1.f_c_cargo.value = Trim(document.form1.f_c_cargo.value);	
	if ( document.form1.f_c_cargo.value == '' ) {
		alert("Cargo em branco.");
		document.form1.f_c_cargo.focus();
		return false;
	}	
	
	document.form1.f_c_tempo.value = Trim(document.form1.f_c_tempo.value);	
	if ( document.form1.f_c_tempo.value == '' ) {
		alert("Tempo em branco.");
		document.form1.f_c_tempo.focus();
		return false;
	}
	
	if ( testeNumero.test(document.form1.f_c_tempo.value) == false ) {
		alert("Tempo inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_c_tempo.value = '';
		document.form1.f_c_tempo.focus();
		return false;
	}		
	
	document.form1.f_c_email.value = Trim(document.form1.f_c_email.value);	
	if ( document.form1.f_c_email.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_c_email.focus();
		return false;
	}

	if ( testeEmail.test(document.form1.f_c_email.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_c_email.value = '';
		document.form1.f_c_email.focus();
		return false;
	}	
	
	if ( document.form1.f_c_emailA.value != '' && testeEmail.test(document.form1.f_c_emailA.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_c_emailA.value = '';
		document.form1.f_c_emailA.focus();
		return false;
	}		
	
	document.form1.f_c_ddd1.value = Trim(document.form1.f_c_ddd1.value);	
	if ( document.form1.f_c_ddd1.value == '' ) {
		alert("DDD em branco.");
		document.form1.f_c_ddd1.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_c_ddd1.value) == false ) {
		alert("DDD inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_c_ddd1.value = '';
		document.form1.f_c_ddd1.focus();
		return false;
	}
	
	document.form1.f_c_numero1.value = Trim(document.form1.f_c_numero1.value);	
	if ( document.form1.f_c_numero1.value == '' ) {
		alert("Número em branco.");
		document.form1.f_c_numero1.focus();
		return false;
	}		
	
	if ( testeNumero.test(document.form1.f_c_numero1.value) == false ) {
		alert("Número inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_c_numero1.value = '';
		document.form1.f_c_numero1.focus();
		return false;
	}	

	if ( document.form1.f_c_ddd2.value != '' && testeNumero.test(document.form1.f_c_ddd2.value) == false ) {
		alert("DDD inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_c_ddd2.value = '';
		document.form1.f_c_ddd2.focus();
		return false;
	}
	
	if ( document.form1.f_c_numero2.value != '' && testeNumero.test(document.form1.f_c_numero2.value) == false ) {
		alert("Numero inválido.\nEste campo só aceita números inteiros.");
		document.form1.f_c_numero2.value = '';
		document.form1.f_c_numero2.focus();
		return false;
	}	
	
	document.form1.submit();
}


//////////////////////////


function validarFormAtivacao() {
	document.form1.f_ativacao.value = Trim(document.form1.f_ativacao.value);
	if ( document.form1.f_ativacao.value == '' ) {
		alert("Código de ativação em branco.");
		document.form1.f_ativacao.focus();
		return false;
	}
/*
	if ( testeAtivacao.test(document.form1.f_ativacao.value) == false ) {
		alert("Código de ativação inválido.\nFormato: apenas caracteres alfanumericos.");
		document.form1.f_ativacao.value = '';
		document.form1.f_ativacao.focus();
		return false;
	}
*/
	document.form1.submit();
}

function validarFormNovaAtivacao() {
	document.form1.f_emailA.value = Trim(document.form1.f_emailA.value);
	document.form1.f_matriculaA.value = Trim(document.form1.f_matriculaA.value);
	if ( document.form1.f_matriculaA.value == '' ) {
		alert("Matrícula em branco.");
		document.form1.f_matriculaA.focus();
		return false;
	}	
	if ( testeMatricula.test(document.form1.f_matriculaA.value) == false ) {
		alert("Matrícula inválida.\nExemplo: 200110100 [Nº MAT]");
		document.form1.f_matriculaA.value = '';
		document.form1.f_matriculaA.focus();
		return false;
	}
	if ( document.form1.f_emailA.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_emailA.focus();
		return false;
	}
	if ( testeEmail.test(document.form1.f_emailA.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_emailA.value = '';
		document.form1.f_emailA.focus();
		return false;
	}
	document.form1.submit();
}

function validarFormNovaSenha() {
	document.form2.f_matriculaR.value = Trim(document.form2.f_matriculaR.value);
	document.form2.f_emailR.value = Trim(document.form2.f_emailR.value);
	
	if ( document.form2.f_matriculaR.value == '' ) {
		alert("Matrícula em branco.");
		document.form2.f_matriculaR.focus();
		return false;
	}	
	if ( testeMatricula.test(document.form2.f_matriculaR.value) == false ) {
		alert("Matrícula inválida.\nExemplo: 200110100 [Nº MAT]");
		document.form2.f_matriculaR.value = '';
		document.form2.f_matriculaR.focus();
		return false;
	}
	if ( document.form2.f_emailR.value == '' ) {
		alert("E-mail em branco.");
		document.form2.f_emailR.focus();
		return false;
	}
	if ( testeEmail.test(document.form2.f_emailR.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form2.f_emailR.value = '';
		document.form2.f_emailR.focus();
		return false;
	}
	document.form2.submit();
}

function validarEnter(evt) {
		evt = (evt) ? evt : event;
		var c = (evt.which) ? evt.which : evt.keyCode;
		if (c == 13) {
			validarFormAutenticacao();
			return false;
		}
		else {
			return true;
		}
}

function validarFormAutenticacao() {
	if ( document.form1.f_login.value == '' ) {
		alert("Login em branco.");
		document.form1.f_login.focus();
		return false;
	}
	if ( testeMatricula.test(document.form1.f_login.value) == false ) {
		alert("Login inválido.\nExemplo: 200110100 [Nº MAT]");
		document.form1.f_login.value = '';
		document.form1.f_login.focus();
		return false;
	}
	if ( document.form1.f_senha.value == '' ) {
		alert("Senha em branco.");
		document.form1.f_senha.focus();
		return false;
	}
	if ( testeSenha.test(document.form1.f_senha.value) == false ) {
		alert("Senha inválida.\nFormato: até 6-20 caracteres alfanumericos");
		document.form1.f_senha.value = '';
		document.form1.f_senha.focus();
		return false;
	}
	document.form1.submit();	
}

function validarFormContato() {
	if ( document.form1.f_nome.value == '' ) {
		alert("Nome em branco.");
		document.form1.f_nome.focus();
		return false;
	}
	if ( document.form1.f_email.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_email.focus();
		return false;
	}
	if ( testeEmail.test(document.form1.f_email.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_cemail.value = '';
		document.form1.f_email.value = '';
		document.form1.f_email.focus();
		return false;
	}
	if ( document.form1.f_mensagem.value == '' ) {
		alert("Mensagem em branco.");
		document.form1.f_mensagem.focus();
		return false;
	}
	if ( document.form1.f_palavra.value == '' ) {
		alert("Palavra em branco.");
		document.form1.f_palavra.focus();
		return false;
	}	
	document.form1.submit();	
}

function validarFormCadastro() {
	document.form1.f_matricula.value = Trim(document.form1.f_matricula.value);
	document.form1.f_email.value = Trim(document.form1.f_email.value);
	document.form1.f_cemail.value = Trim(document.form1.f_cemail.value);
	
	if ( document.form1.f_matricula.value == '' ) {
		alert("Matricula em branco.");
		document.form1.f_matricula.focus();
		return false;
	}
	if ( testeMatricula.test(document.form1.f_matricula.value) == false ) {
		alert("Matricula inválida.\nExemplo: 200110100");
		document.form1.f_matricula.value = '';
		document.form1.f_matricula.focus();
		return false;
	}
	if ( document.form1.f_senha.value == '' ) {
		alert("Senha em branco.");
		document.form1.f_senha.focus();
		return false;
	}
	if ( testeSenha.test(document.form1.f_senha.value) == false ) {
		alert("Senha inválida.\nFormato: até 6-20 caracteres alfanumericos");
		document.form1.f_csenha.value = '';
		document.form1.f_senha.value = '';
		document.form1.f_senha.focus();
		return false;
	}	
	if ( document.form1.f_csenha.value == '' ) {
		alert("Confirmação de Senha em branco.");
		document.form1.f_csenha.focus();
		return false;
	}
	if ( document.form1.f_csenha.value != document.form1.f_senha.value ) {
		alert("As senhas digitadas não são iguais.");
		document.form1.f_csenha.value = '';
		document.form1.f_senha.value = '';
		document.form1.f_senha.focus();
		return false;		
	}
	if ( document.form1.f_email.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_email.focus();
		return false;
	}
	if ( testeEmail.test(document.form1.f_email.value) == false ) {
		alert("E-mail inválido.\nExemplo: nome@dominio");
		document.form1.f_cemail.value = '';
		document.form1.f_email.value = '';
		document.form1.f_email.focus();
		return false;
	}
	if ( document.form1.f_email.value != document.form1.f_cemail.value ) {
		alert("Os e-mails digitados não são iguais.");
		document.form1.f_cemail.value = '';
		document.form1.f_email.value = '';
		document.form1.f_email.focus();
		return false;		
	}
	document.form1.submit();
}

function verificarCursoEscolhidoP1() {
 	var tamanhoSelect = document.form1.f_curso.length;
    var indiceEscolhido = document.form1.f_curso.selectedIndex;
    var valorEscolhido = document.form1.f_curso.options[indiceEscolhido].value;
    var textoEscolhido = document.form1.f_curso.options[indiceEscolhido].text;
	//
	if ( valorEscolhido == 'Sistemas de Informação' || valorEscolhido == 'Administração' ) {
		document.getElementById('periodoL01').style.visibility = 'visible';
		document.getElementById('periodoL01').style.display = '';	
		document.getElementById('periodoL02').style.visibility = 'visible';
		document.getElementById('periodoL02').style.display = '';			
	}
	else {
		document.getElementById('periodoL01').style.visibility = 'hidden';
		document.getElementById('periodoL01').style.display = 'none';	
		document.getElementById('periodoL02').style.visibility = 'hidden';
		document.getElementById('periodoL02').style.display = 'none';
	}
}

function validarFormulario(num) {
	if ( document.form1.f_curso.options[document.form1.f_curso.selectedIndex].value == '' || document.form1.f_curso.options[document.form1.f_curso.selectedIndex].value == ' ' ) {
		alert("Curso em branco.");
		document.form1.f_curso.focus();
		return false;		
	}
	if ( document.form1.f_curso.options[document.form1.f_curso.selectedIndex].value == 'Administração' || document.form1.f_curso.options[document.form1.f_curso.selectedIndex].value == 'Sistemas de Informação' ) {
		if ( document.form1.f_curso_periodo.options[document.form1.f_curso_periodo.selectedIndex].value == '' || document.form1.f_curso_periodo.options[document.form1.f_curso_periodo.selectedIndex].value == ' ' ) {
			alert("Período em branco.\nFavor selecione em qual período você encontra-se matriculado.");
			document.form1.f_curso_periodo.focus();
			return false;
		}
	}
	else {
		document.form1.f_curso_periodo.options[document.form1.f_curso_periodo.selectedIndex].value = '';
	}
	
	if ( document.form1.f_curric_cpf.value == '' ) {
		alert("CPF em branco.");
		document.form1.f_curric_cpf.focus();
		return false;
	}
	if ( document.form1.f_curric_cpf.value.search('^\\d{11}')) {
		alert("CPF invalido.");
		document.form1.f_curric_cpf.focus();
		return false;
	}
	if ( document.form1.f_curric_nome.value == '' || document.form1.f_curric_nome.value == ' ' ) {
		alert("Nome em branco.");
		document.form1.f_curric_nome.focus();
		return false;
	}
	if ( document.form1.f_curric_data_nasc.value == '' ) {
		alert("data de nascimento em branco.");
		document.form1.f_curric_data_nasc.focus();
		return false;
	}		
	//	
	if ( document.form1.f_curric_sexo.value == '' ) {
		alert("sexo em branco.");
		document.form1.sexo.focus();
		return false;
	}
	if ( document.form1.f_curric_pais.value == '' ) {
		alert("país em branco.");
		document.form1.f_curric_pais.focus();
		return false;
	}
	if ( document.form1.f_curric_estado.value == '' ) {
		alert("estado em branco.");
		document.form1.f_curric_estado.focus();
		return false;
	}
	if ( document.form1.f_curric_cidade.value == '' ) {
		alert("cidade em branco.");
		document.form1.f_curric_cidade.focus();
		return false;
	}
	if ( document.form1.f_curric_bairro.value == '' ) {
		alert("bairro em branco.");
		document.form1.f_curric_bairro.focus();
		return false;
	}
	
	if ( document.form1.f_curric_endereco.value == '' ) {
		alert("endereço em branco.");
		document.form1.f_curric_endereco.focus();
		return false;
	}			
	if ( document.form1.f_curric_cep.value == '' ) {
		alert("cep em branco.");
		document.form1.f_curric_cep.focus();
		return false;
	}
	if ( document.form1.f_curric_cep.value.search('^\\d{8}')) {
		alert("CEP invalido.");
		document.form1.f_curric_cep.focus();
		return false;
	}	
	//			
	if ( document.form1.f_curric_mail.value == '' ) {
		alert("E-mail em branco.");
		document.form1.f_curric_mail.focus();
		return false;
	}
	if (!(/^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/.test(document.form1.f_curric_mail.value)))
    { 
        alert("E-mail válido.");
        document.form1.f_curric_mail.focus() 
        return false;
    }
	if ( document.form1.f_curric_mail.value != document.form1.f_curric_mail1.value ) {
        alert("E-mail não são iguais.");
		document.form1.f_curric_mail.value = '';
		document.form1.f_curric_mail1.value = '';
        document.form1.f_curric_mail.focus() 
        return false;		
	}
	if ( confirm('Você tem certeza que deseja salvar seus dados?\n') ) {
		document.form1.pagdest.value = num;
		document.form1.submit();
	}
	else {
		return false;
	}
}

function validarFormulario2(num) {
	if ( document.form1.f_curric_objProf.value == '' || document.form1.f_curric_objProf.value.length <= 1 ) {
        alert("Objetivos em branco.");
		document.form1.f_curric_objProf.focus();
		return false;
	}
	if ( document.form1.f_curric_qualiProf.value == '' || document.form1.f_curric_qualiProf.value.length <= 1 ) {
        alert("Qualificações em branco.");
		document.form1.f_curric_qualiProf.focus();
		return false;
	}	
	if ( confirm('Você tem certeza que deseja salvar seus dados?\n') ) {
		document.form1.pagdest.value = num;
		document.form1.submit();
	}
	else {
		return false;
	}
}

function validarFormulario3(num) {
	if ( document.form1.f_curric_exp_empresa.value == '' || document.form1.f_curric_exp_empresa.value.length <= 1 ) {
        alert("Empresa em branco.");
		document.form1.f_curric_exp_empresa.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_pais.value == '' || document.form1.f_curric_exp_pais.value.length <= 1 ) {
        alert("País em branco.");
		document.form1.f_curric_exp_pais.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_estado.value == '' || document.form1.f_curric_exp_estado.value.length <= 1 ) {
        alert("Estado em branco.");
		document.form1.f_curric_exp_estado.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_cidade.value == '' || document.form1.f_curric_exp_cidade.value.length <= 1 ) {
        alert("Cidade em branco.");
		document.form1.f_curric_exp_cidade.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_periodoI.value == '' || document.form1.f_curric_exp_periodoI.value.length <= 1 ) {
        alert("Período inicial em branco.");
		document.form1.f_curric_exp_periodoI.focus();
		return false;
	}
	
	if ( doDate3(document.form1.f_curric_exp_periodoI.value,5) == false ) {
		alert(document.form1.f_curric_exp_periodoI.value + " não é uma data válida.");
		document.form1.f_curric_exp_periodoI.value = '';
		document.form1.f_curric_exp_periodoI.focus();
		return false;
	}
	
	if ( document.form1.f_curric_exp_periodoF.value == '' || document.form1.f_curric_exp_periodoF.value == ' ' ) {
	 	if ( document.form1.f_curric_exp_empregoAtual.checked == false ) {
			alert("Preencha o campo período final ou marque a opção Emprego Atual.");
			document.form1.f_curric_exp_periodoF.focus();
			return false;
		}
	}
	else {
		if ( doDate1(document.form1.f_curric_exp_periodoF.value,5) == false ) {
			alert(document.form1.f_curric_exp_periodoF.value + " não é uma data válida.");
			document.form1.f_curric_exp_periodoF.value = '';
			document.form1.f_curric_exp_periodoF.focus();
			return false;
		}		
		
	 	if ( document.form1.f_curric_exp_empregoAtual.checked && document.form1.f_curric_exp_empregoAtual.value == 'Sim' ) {
			alert("O campo período final esta preenchido. Desmarque a opção Emprego Atual.");
			document.form1.f_curric_exp_periodoF.focus();
			return false;
		}			
	}
	
	if ( document.form1.f_curric_exp_descricao.value == '' || document.form1.f_curric_exp_descricao.value.length <= 1 ) {
        alert("Descrição em branco.");
		document.form1.f_curric_exp_descricao.focus();
		return false;
	}
	document.form1.pagdest.value = num;	
	document.form1.submit();
}

function validarFormulario4(num) {
	if ( document.form1.f_curric_exp_tipo.value == '' || document.form1.f_curric_exp_tipo.value.length <= 1 ) {
        alert("Tipo em branco.");
		document.form1.f_curric_exp_tipo.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_instituicao.value == '' || document.form1.f_curric_exp_instituicao.value.length <= 1 ) {
        alert("Instituição em branco.");
		document.form1.f_curric_exp_instituicao.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_curso.value == '' || document.form1.f_curric_exp_curso.value.length <= 1 ) {
        alert("Curso em branco.");
		document.form1.f_curric_exp_curso.focus();
		return false;
	}

	if ( document.form1.f_curric_exp_periodoI.value == '' || document.form1.f_curric_exp_periodoI.value.length <= 1 ) {
        alert("Período inicial em branco.");
		document.form1.f_curric_exp_periodoI.focus();
		return false;
	}
	if ( document.form1.f_curric_exp_periodoF.value == '' || document.form1.f_curric_exp_periodoF.value.length <= 1 ) {
        alert("Período final em branco.\nCaso ainda esteja curso indique a data de termino.");
		document.form1.f_curric_exp_periodoF.focus();
		return false;
	}
	if ( doDate3(document.form1.f_curric_exp_periodoI.value,5) == false ) {
		alert(document.form1.f_curric_exp_periodoI.value + " não é uma data válida.");
		document.form1.f_curric_exp_periodoI.value = '';
		document.form1.f_curric_exp_periodoI.focus();
		return false;
	}
	
	if ( doDate3(document.form1.f_curric_exp_periodoF.value,5) == false ) {
		alert(document.form1.f_curric_exp_periodoF.value + " não é uma data válida.");
		document.form1.f_curric_exp_periodoF.value = '';
		document.form1.f_curric_exp_periodoF.focus();
		return false;
	}	
	if ( document.form1.f_curric_exp_descricao.value == '' || document.form1.f_curric_exp_descricao.value.length <= 1 ) {
        alert("Descrição em branco.");
		document.form1.f_curric_exp_descricao.focus();
		return false;
	}	
	document.form1.pagdest.value = num;
	document.form1.submit();
}

function validarFormulario5(num) {
	if ( document.form1.f_curric_idioma.value == '' || document.form1.f_curric_idioma.value.length <= 1 ) {
        alert("Idioma em branco.");
		document.form1.f_curric_idioma.focus();
		return false;
	}
	if ( document.form1.f_curric_nivel.value == '' || document.form1.f_curric_nivel.value.length <= 1 ) {
        alert("Nível em branco.");
		document.form1.f_curric_nivel.focus();
		return false;
	}
	if ( document.form1.f_curric_descricao.value == '' || document.form1.f_curric_descricao.value.length <= 1 ) {
        alert("Descrição em branco.");
		document.form1.f_curric_descricao.focus();
		return false;
	}
	document.form1.pagdest.value = num;	
	document.form1.submit();
}

function validarFormulario6(num) {
	if ( document.form1.f_curriculo_foto.value == '' || document.form1.f_curriculo_foto.value.length <= 1 ) {
        alert("arquivo em branco.");
		document.form1.f_curriculo_foto.focus();
		return false;
	}
	document.form1.pagdest.value = num;	
	document.form1.submit();
}

function finalizarCadastro() {
	if ( confirm('Você tem certeza que deseja finalizar?') ) {
		document.form1.pagina.value = 6;		
		document.form1.submit();
	}
	else {
		return false;
	}
}

function validacpf(){
 
var i;
 
s = document.form1.f_curric_cpf.value;
 
var c = s.substr(0,9);
 
var dv = s.substr(9,2);
 
var d1 = 0;
 
for (i = 0; i < 9; i++)
 
{
 
d1 += c.charAt(i)*(10-i);
 
}
 
if (d1 == 0){
 
alert("CPF Invalido")
document.form1.f_curric_cpf.value = ''; 
document.form1.f_curric_cpf.focus();
return false;
 
}
 
d1 = 11 - (d1 % 11);
 
if (d1 > 9) d1 = 0;
 
if (dv.charAt(0) != d1)
 
{
 
alert("CPF Invalido")
document.form1.f_curric_cpf.value = ''; 
document.form1.f_curric_cpf.focus();
return false;
 
}
 
 
d1 *= 2;
 
for (i = 0; i < 9; i++)
 
{
 
d1 += c.charAt(i)*(11-i);
 
}
 
d1 = 11 - (d1 % 11);
 
if (d1 > 9) d1 = 0;
 
if (dv.charAt(1) != d1)
 
{
 
alert("CPF Invalido")
document.form1.f_curric_cpf.value = ''; 
document.form1.f_curric_cpf.focus(); 
return false; 
}
return true;
}

// fim validação de cpf

// MAIUSCULA
function toUppercase() {
	document.form1.outstring.value = document.form1.instring.value.toUpperCase();
}

// DATA NASCIMENTO
  function mascara_datadeNascimento(data){ 
	  var mydata = ''; 
	  mydata = mydata + data; 
	  if (mydata.length == 2){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_data_nasc.value = mydata; 
	  } 
	  if (mydata.length == 5){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_data_nasc.value = mydata; 
	  } 
	  if (mydata.length == 10){ 
		  verifica_datadeNascimento(); 
	  } 
  } 
   
  function verifica_datadeNascimento () { 

	dia = (document.forms[0].f_curric_data_nasc.value.substring(0,2)); 
	mes = (document.forms[0].f_curric_data_nasc.value.substring(3,5)); 
	ano = (document.forms[0].f_curric_data_nasc.value.substring(6,10)); 

	situacao = ""; 
	// verifica o dia valido para cada mes 
	if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { 
		situacao = "falsa"; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		situacao = "falsa"; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
		situacao = "falsa"; 
	} 

	if (document.forms[0].f_curric_data_nasc.value == "") { 
		situacao = "falsa"; 
	} 

	if (situacao == "falsa") { 
		alert("Data Nascimento inválida!"); 
		document.forms[0].f_curric_data_nasc.focus(); 
	} 
  }
  
  function contarChar(id,num){
		if ( num == 1 ) {
			document.getElementById("qtd1").innerText = 1000-id.value.length
			if((1000-id.value.length)==0)
			alert('Atenção, você atingiu o limite máximo de caracteres!');
		}
		else {
			if ( num == 2 ) {			
				document.getElementById("qtd2").innerText = 1000-id.value.length
				if((1000-id.value.length)==0)
				alert('Atenção, você atingiu o limite máximo de caracteres!');
			}
		}
  }  
  
  function procurar(tipo) {
	  document.form1.pesquisa.value = tipo;
	  document.form1.submit();
  }
  
  function macaraData1(data){ 
	  var mydata = ''; 
	  mydata = mydata + data; 
	  if (mydata.length == 2){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_exp_periodoI.value = mydata; 
	  } 
	  if (mydata.length == 5){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_exp_periodoI.value = mydata; 
	  }
  } 
  
  function macaraData2(data){ 
	  var mydata = ''; 
	  mydata = mydata + data; 
	  if (mydata.length == 2){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_exp_periodoF.value = mydata; 
	  } 
	  if (mydata.length == 5){ 
		  mydata = mydata + '/'; 
		  document.forms[0].f_curric_exp_periodoF.value = mydata; 
	  }
  }   
  
	function Trim(str){
		return str.replace(/^\s+|\s+$/g,"");
	}
	
// CPF E CNPJ

/**
 * @author Márcio d'Ávila
 * @version 1.01, 2004
 *
 * PROTÓTIPOS:
 * método String.lpad(int pSize, char pCharPad)
 * método String.trim()
 *
 * String unformatNumber(String pNum)
 * String formatCpfCnpj(String pCpfCnpj, boolean pUseSepar, boolean pIsCnpj)
 * String dvCpfCnpj(String pEfetivo, boolean pIsCnpj)
 * boolean isCpf(String pCpf)
 * boolean isCnpj(String pCnpj)
 * boolean isCpfCnpj(String pCpfCnpj)
 */


NUM_DIGITOS_CPF  = 11;
NUM_DIGITOS_CNPJ = 14;
NUM_DGT_CNPJ_BASE = 8;


/**
 * Adiciona método lpad() à classe String.
 * Preenche a String à esquerda com o caractere fornecido,
 * até que ela atinja o tamanho especificado.
 */
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad


/**
 * Adiciona método trim() à classe String.
 * Elimina brancos no início e fim da String.
 */
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
} //String.trim


/**
 * Elimina caracteres de formatação e zeros à esquerda da string
 * de número fornecida.
 * @param String pNum
 * 	String de número fornecida para ser desformatada.
 * @return String de número desformatada.
 */
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber


/**
 * Formata a string fornecida como CNPJ ou CPF, adicionando zeros
 * à esquerda se necessário e caracteres separadores, conforme solicitado.
 * @param String pCpfCnpj
 * 	String fornecida para ser formatada.
 * @param boolean pUseSepar
 * 	Indica se devem ser usados caracteres separadores (. - /).
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String de CPF ou CNPJ devidamente formatada.
 */
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj


/**
 * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de
 * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e
 * informa se o número-efetivo fornecido é CNPJ (default = false).
 * @param String pEfetivo
 * 	String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF.
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é de um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String com os dois dígitos verificadores.
 */
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}

	return result;
} //dvCpfCnpj


/**
 * Testa se a String pCpf fornecida é um CPF válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpf
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF válido.
 */
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dígitos verificadores
	if (numero != base + digitos) return false;

	/* Não serão considerados válidos os seguintes CPF:
	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.
	 */
	algUnico = true;
	for (i=1; i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
} //isCpf


/**
 * Testa se a String pCnpj fornecida é um CNPJ válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CNPJ válido.
 */
function isCnpj(pCnpj)
{
	var numero = formatCpfCnpj(pCnpj, false, true);
	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);
	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);
	var digitos = dvCpfCnpj(base + ordem, true);
	var algUnico;

	// Valida dígitos verificadores
	if (numero != base + ordem + digitos) return false;

	/* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS:
	 * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555,
	 * 66.666.666, 77.777.777, 88.888.888, 99.999.999.
	 */
	algUnico = numero.charAt(0) != '0';
	for (i=1; i<NUM_DGT_CNPJ_BASE; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	if (algUnico) return false;

	/* Não será considerado válido CNPJ com número de ORDEM igual a 0000.
	 * Não será considerado válido CNPJ com número de ORDEM maior do que 0300
	 * e com as três primeiras posições do número BÁSICO com 000 (zeros).
	 * Esta crítica não será feita quando o no BÁSICO do CNPJ for igual a 00.000.000.
	 */
	if (ordem == "0000") return false;
	return (base == "00000000"
		|| parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");
} //isCnpj


/**
 * Testa se a String pCpfCnpj fornecida é um CPF ou CNPJ válido.
 * Se a String tiver uma quantidade de dígitos igual ou inferior
 * a 11, valida como CPF. Se for maior que 11, valida como CNPJ.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpfCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF ou CNPJ válido.
 */
function isCpfCnpj(pCpfCnpj)
{
	var numero = pCpfCnpj.replace(/\D/g, "");
	if (numero.length > NUM_DIGITOS_CPF)
		return isCnpj(pCpfCnpj)
	else
		return isCpf(pCpfCnpj);
} //isCpfCnpj

