/*------------------------------------------------------
'Método: validarCampos
'Finalidade: Validar prrenchimento do campo do formulário
'Parametros: campo: objeto campo
'			 validacao: tipo de validação
'Retorno: True/False
'Exemplo: validarCampos(document.form.campo,'Vazio')
------------------------------------------------------*/
function validarCampos(campo,validacao) {
	//Retira espaços em branco
	campo.value = Trim(campo.value);

	// Verifica se o campo não é vazio.
	if (validacao == 'Vazio') {
		if (campo.value == '') {
			if ((campo.type == 'text') || (campo.type == 'textarea') || (campo.type == 'password') || (campo.type == 'file'))
				alert('O campo ' + campo.title + ' não pode ser vazio.');
			else if (campo.type == 'select-one')
				alert('Selecione uma opção do campo ' + campo.title + '.');

			campo.focus();
			return false;
		}
	}
	// Verifica se o campo tem um endereço de email válido
	if (validacao == 'Email') {
		if (campo.value != '') {
			prim = campo.value.indexOf("@")
			if ((prim < 2) || (campo.value.indexOf("@",prim + 1) != -1) || (campo.value.indexOf(".") < 1) || (campo.value.indexOf(" ") != -1) || (campo.value.indexOf(".@") > 0) || (campo.value.indexOf("@.") > 0) || (campo.value.indexOf(".com.br.") > 0) || (campo.value.indexOf("/") > 0) || (campo.value.indexOf("[") > 0) || (campo.value.indexOf("]") > 0) || (campo.value.indexOf("(") > 0) || (campo.value.indexOf(")") > 0) || (campo.value.indexOf("..") > 0)) {
				alert('O campo ' + campo.title + ' deve ter um endereço de e-mail válido.');
				campo.focus();
				return false;
			}
		}
	}
	// Verifica se o campo tem um CEP formatado
	if (validacao == 'CEP') {
		if (campo.value != '') {
			if (!parseInt(campo.value.replace('-',''))) {
				alert('O campo ' + campo.title + ' deve ter um CEP no formato 00000-000.');
				campo.focus();
				return false;
			}
		}
	}

	// Verifica se o campo tem uma data válida
	if (validacao == 'Data') {
		if ((ValidaData(campo.value) != 'true') && (campo.value != '' )) {
			alert('Data - ' + (ValidaData(campo.value)));
			campo.focus();
			return false;
		}
	}		

	return true;
}

function valida_CPF(s)
{
	var i;
	s = limpa_string(s);
	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) return false;
	  d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1){
		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){
		return false;
	 }
	 return true;
}

function valida_CNPJ(s)
{
	 var i;
	 s = limpa_string(s);
	 var c = s.substr(0,12);
	 var dv = s.substr(12,2);
	 var d1 = 0;
	 for (i = 0; i < 12; i++) {
		   d1 += c.charAt(11-i)*(2+(i % 8));
	 }
	 if (d1 == 0) return false;
		d1 = 11 - (d1 % 11);
	 if (d1 > 9) d1 = 0;
	 if (dv.charAt(0) != d1){
		  return false;
	 }
	 d1 *= 2;
	 for (i = 0; i < 12; i++){
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	 }
	 d1 = 11 - (d1 % 11);
	 if (d1 > 9) d1 = 0;
	 if (dv.charAt(1) != d1){
		  return false;
	 }
	 return true;
  }

	/*------------------------------------------------------
	'Método: tratarNumero
	'Finalidade: Permitir digitar somente números
	'Parametros: e: codigo keyascii
	'			 pCaracteresAdicionais: caracteres validos alem dos numeros
	'Retorno: Não há
	'Exemplo: onKeyPress="return(tratarNumero(event,pCaracteresAdicionais))"
	------------------------------------------------------*/
	function tratarNumero(e,pCaracteresAdicionais) { 
		var key = '';
		var len = len2 = 0;
		var strCheck = '0123456789' + pCaracteresAdicionais;
		var codigo = (window.Event) ? e.which : e.keyCode;
		if (codigo == 13) return true;  // Tecla Enter
		if (codigo == 8) return true;  // Tecla Backspace
		//if (e.keyCode == 46) return true;  // Tecla Delete
		
		if (e.keyCode == 9) return true;  // Tecla Tab
		if (e.keyCode == 37) return true;  // seta para esquerda
		if (e.keyCode == 39) return true;  // seta para direita

		key = String.fromCharCode(codigo);  // Pega o valor de "key"
		if (strCheck.indexOf(key) == -1)
			return false; // Nao é uma tecla valida	
		else  
			return true; // É uma tecla valida	
	}
	
function pula(name,campo,x,proximo) {
// => Utilizacao:  PULA('<FORM>','<origem>',<caracteres>,'<destino>')
	var txt = document[name][campo].value;
	if (txt.length >= x){
		document[name][proximo].focus();
	}
}

function limpa_string(S){
   // Deixa so' os digitos no numero
   var Digitos = "0123456789";
   var temp = "";
   var digito = "";
   for (var i=0; i<S.length; i++){
	   digito = S.charAt(i);
	   if (Digitos.indexOf(digito)>=0){temp=temp+digito}
   }
   return temp
}


/*------------------------------------------------------
'Método: Trim
'Finalidade: Retirar espaços da string
'Parametros: texto string
'Retorno: texto string sem espaços
'Exemplo: Trim(texto)
------------------------------------------------------*/
function Trim(str) {
	while(str.charAt(0) == " ")
		str = str.substr(1,str.length -1);
	
	while(str.charAt(str.length-1) == " ")
		str = str.substr(0,str.length-1);

	return str;
} 

/*------------------------------------------------------
'Método: checkAll
'Finalidade: Selecionar todas as opções
'Parametros: frm: objeto formulário
'			 checkboxesPrefix: nome dos campos
'			 checked: situação (marcado/desmarcado)
'Retorno: Não há
'Exemplo: onclick="checkAll(document.form1, 'agenda', this.checked);"
------------------------------------------------------*/
function checkAll(frm, checkboxesPrefix, checked) {
  for (var i = 0; i < frm.elements.length; i++) {
	if (doesNameStartWith(frm.elements[i].name, checkboxesPrefix)) {
	  frm.elements[i].checked = checked;
	}
  }
}

/*------------------------------------------------------
'Método: doesNameStartWith
'Finalidade: verificar nome do campo
------------------------------------------------------*/
function doesNameStartWith(itemName, itemPrefix) {
	return itemName.indexOf(itemPrefix) == 0;
}

/*------------------------------------------------------
'Método: FormataData
'Finalidade: Formatar Data
'Parametros: campo: objeto formulário
'			 teclapres: tecla pressionada
'Retorno: String formatada (DD/MM/AAAA)
------------------------------------------------------*/
function FormataData(formulario,Campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = document[formulario][Campo].value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 && tecla != 46 && tecla != 37 && tecla != 39){
		if ( tam > 2 && tam < 5 )
			document[formulario][Campo].value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
		if ( tam >= 5 && tam < 10 )
			document[formulario][Campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}
}

/*------------------------------------------------------
'Método: ValidaData
'Finalidade: Validar Data
------------------------------------------------------*/
function ValidaData(string) {
	bissexto = ''
	data = string
	if (data.length != 10) { return 'A data deve ser no formato DD/MM/AAAA' }
		else {
	 if (data.substring(0,4).indexOf('/') == 2) {
	  if (data.substring(3,8).indexOf('/') == 2) {
	   dia = data.substring(0,2)
	   mes = data.substring(3,5)
	   ano = data.substring(6,10)
	   if (mes < 0 || mes > 12) { return 'Mês inválido'; }
	   if (ano < 1909 || ano > 2100) { return 'Ano inválido'; }
	   if (mes == 01 || mes == 03 || mes == 05 || mes == 07 || mes == 08 || mes == 10 || mes == 12) { n_dias = 31 }
	   else if (mes == 04 || mes == 06 || mes == 09 || mes == 11) { n_dias = 30 }
	   else if (mes == 02) { if (ano % 4 == 0) { n_dias = 29 ; bissexto = 'SIM'} else { n_dias = 28 } }
	   if (dia < 0 || dia > n_dias) { return 'Dia inválido'; }
	   if (bissexto == '') bissexto = 'NÃO'
	   return 'true';
	  }
	 }
  }
}
/*------------------------------------------------------
'Método: AbreCalendario
'Finalidade: Abrir dialogbox de calendário

'Parametros: elTarget: campo que rebecerá a data
'			 tipo: tipo do calendário que será aberto
'Retorno: Não há
------------------------------------------------------*/
function AbreCalendario(elTarget,tipo) {
	if (showModalDialog) {
		var sRtn;
		sRtn = showModalDialog('<%=Application("URLSite")%>includes/calendario/dia.asp','','center=yes;dialogWidth=306px;dialogHeight=255px');

		if ((sRtn!="undefined") && (sRtn!="")) {
			elTarget.value = sRtn;
			elTarget.focus();
		}
	} else
		alert('Internet Explorer 4.0 ou superior é obrigatório.');
}

/*------------------------------------------------------
'Método: abrePopUp
'Finalidade: Abrir janela pop-up
'Parametros: pLink: nome da página que será aberta
'			 nome: nome da janela
'			 parameters: parametros de configuração
'Retorno: Não há
------------------------------------------------------*/
function abrePopUp(pLink,nome,parameters) {
	window.open(pLink,nome,parameters);
}

/*------------------------------------------------------
'Método: calculaTexto
'Finalidade: Contar quantos caracteres um campo pode ter
'Parametros: campo (objeto)
'			 numtotal: número máximo de caracteres
'Retorno: Não há
'Exemplo: onKeyUp="javascript:calcula(this, numtotal);"
------------------------------------------------------*/
function calculaTexto(campo, numtotal) {
	var valor = document.getElementById(campo.id).value.length
	var contar = (valor)
	//document.getElementById(contador.id).value = contar;
	if (contar > numtotal)	{ 
		document.getElementById(campo.id).value = document.getElementById(campo.id).value.substring(0, numtotal);
		//document.getElementById(contador.id).value = 0;
	}
}

/*------------------------------------------------------
'Método: FormataCEP
'Finalidade: Formatar CEP
'Parametros: campo: objeto formulário
'			 teclapres: tecla pressionada
'Retorno: String CEP (00000-000)
'Exemplo: onKeyPress="javascript:return FormataCEP(this,event);"
------------------------------------------------------*/
function FormataCEP(Campo,teclapres) {
	if (tratarNumero(teclapres,'') == true) {
		tecla = teclapres.keyCode;
		vr = Campo.value;
		tam = vr.length + 1;
		if ( tecla != 9 && tecla != 8 ) {
			if ( tam > 5 && tam < 8 )
				Campo.value = vr.substr(0,5) + '-' + vr.substr(7,tam);
		}
	}
	else
		return false;
}

/*------------------------------------------------------
'Método: FormataHora
'Finalidade: Formatar Hora
'Parametros: campo: objeto formulário
'			 teclapres: tecla pressionada
'Retorno: String hora (00:00)
'Exemplo: onKeyPress="javascript:return FormataHora(this,event);"
------------------------------------------------------*/
function FormataHora(Campo,teclapres) {
	if (tratarNumero(teclapres,'') == true) {
		tecla = teclapres.keyCode;
		tam = Campo.value.length;

		if ((tam == 0) && (tecla > 50)) 
			return false;
		else if ((tam == 1) && (Campo.value == 2) && (tecla > 51)) 
			return false;
		else if (tam == 2) {
			Campo.value = Campo.value.toString() + ":";

			if (tecla > 53) 
				return false;
		}
		else if ((tam == 3) && (tecla > 53)) 
			return false;
		else if (tam == 5)
			return false;
	}
	else
		return false;
}

/*------------------------------------------------------
'Método: validaHorario
'Finalidade: validar campo horário
'Parametros: obj: objeto formulário
'Retorno: -
'Exemplo: onBlur="javascript:validaHorario(campo);"
------------------------------------------------------*/
function validaHorario(obj) {
	if ((obj.value.length != 5) && (Trim(obj.value) != '')) {
		alert('O campo Horário deve ser no formato HH:MM');
		obj.focus();
		return false;
	}
}

/*------------------------------------------------------
'Método: validaCEP
'Finalidade: validar campo CEP
'Parametros: obj: objeto formulário
'Retorno: -
'Exemplo: onBlur="javascript:validaCEP(campo);"
------------------------------------------------------*/
function validaCEP(obj) {
	if ((obj.value.length != 9) && (Trim(obj.value) != '')) {
		alert('O campo CEP deve ser no formato 00000-000');
		obj.focus();
		return false;
	}
}

/*------------------------------------------------------
'Método: selecionarPais
'Finalidade: selecionar o país Brasil (padrão) e carregar estados
'Parametros: obj: objeto formulário
'Retorno: -
'Exemplo: onLoad="javascript:selecionarPais(campo);"
------------------------------------------------------*/
function selecionarPais(obj) {
	obj.value = 31; //BRASIL
	if (document.getElementById('estado')) {
		atualizaEstado(31);
	}
}

/*------------------------------------------------------
'Método: navegaGrid
'Finalidade: navegar pelas páginas do grid
'Parametros: -
'Retorno: -
'Exemplo: -
------------------------------------------------------*/
function navegaGrid(url,pagina,campoOrderBy,Order) {
	location.href = url + '?vNumeroPagina='+pagina+'&campoOrderBy='+campoOrderBy+'&OrderBy='+Order;
}

function navegaGrid_pesquisa(url,pagina,campoOrderBy,Order,str) {
	location.href = url + '?vNumeroPagina='+pagina+'&campoOrderBy='+campoOrderBy+'&OrderBy='+Order+'&str='+str;
}

/*------------------------------------------------------
'Método: verifica_tecla
'Finalidade: submit no formulário quando clicar <enter> para filtrar
'Parametros: Form: nome do formulário
'			 campoFiltro: nome do campo
'Retorno: -
'Exemplo: <form action="cidades_lista.asp" name="form1" method="post" onKeyPress="javascript:verifica_tecla('form1','filtro');">
------------------------------------------------------*/
function verifica_tecla(Form,campoFiltro){
	if (event.keyCode==13) {
		event.keyCode=0;
		var texto = Trim(document.getElementById(campoFiltro).value);
		var campo = document.getElementById(campoFiltro);
		if (texto.length < 3) {
			alert('Digite no mínimo 3 caracteres para buscar.');
			campo.focus();
			return false;
		}
		event.returnValue=document.getElementById(Form).submit();
	}
}
