//função que só permite digitar números no campo.
function soNumeros(e){
 car=(navigator.appName == "Netscape" ) ? e.which : e.keyCode;
 if (car>31 && (car<48 || car >57))
  return false;
 else
  return true;
}

/* 
	Função para comparar o valor entre 2 datas
	Retorna a maior data entre 2 valores
	As datas deverão estar no formato: dd/mm/aaaa
*/
function comparaData(dt1,dt2){
	var vlDtComp1 = dt1.substr(6,4) + dt1.substr(3,2) + dt1.substr(0,2);
	var vlDtComp2 = dt2.substr(6,4) + dt2.substr(3,2) + dt2.substr(0,2);
	var dtMaior = '';
	
	if(parseInt(vlDtComp1,10) > parseInt(vlDtComp2,10))
		dtMaior = dt1.substr(0,2) + '/' + dt1.substr(3,2) + '/' + dt1.substr(6,4);
	else
		dtMaior = dt2.substr(0,2) + '/' + dt2.substr(3,2) + '/' + dt2.substr(6,4);
	
	return(dtMaior);
}

//valida um e-mail verificando se existe TEXTO@dominio.pais
function validaEmail(email,msg){
	var field = email;
	var str = field.value;

	if(str.length > 0){
		if(window.RegExp) {
			var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
			var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
			var reg1 = new RegExp(reg1str);
			var reg2 = new RegExp(reg2str);

			if (!reg1.test(str) != reg2.test(str)) {
				alert('Por favor, preencha ' + msg + ' corretamente.');
				field.focus();
				field.select();
				return false;
			}
			else{
				if(str.indexOf("@") >= 0){
				return true;
				field.focus();
				field.select();
				return false;
			}
		}
	}
}

	return true;
}

//exibe uma mensagem antes de direcionar para a página de exclusão
function confirmaExclusao(page,msg){
	if(confirm('Deseja realmente apagar ' + msg + '?'))
		window.location = page;
	else
		return false;
}

/* limitador de caracteres*/
function limitaTexto(campo, TotalCarac){
	if(document.forms.length > 1){
		var tamanho = campo.value.length;
		var tex = campo.value;
		if (tamanho>=TotalCarac-1){	campo.value=tex.substring(0,TotalCarac-1); }
		return true;
		}
	else{
		var tamanho = campo.value.length;
		var tex = campo.value;
		if (tamanho>=TotalCarac-1){	campo.value=tex.substring(0,TotalCarac-1); }
		return true;
		}
}

function contaCampo(campo, tamtxt, TotalCarac){
	if(document.forms.length > 1)
		tamtxt.value = TotalCarac-campo.value.length;
	else
		tamtxt.value = TotalCarac-campo.value.length;
}
/* fim do limitador de caracteres*/

//abre uma imagem (foto) no seu tamanho real
function abreFotoTamReal(Imagem,legendaImagem) {
	var optScroll = (legendaImagem.length > 0) ? 'yes' : 'no';
	var vlWidth = (legendaImagem.length > 0) ? 60 : 20;
	Titulo = "Visualizar Imagens";
	w=window.open("Popup",'image','width=0,height=0,toolbar=no,scrollbars='+optScroll+',resizable=yes');
	w.document.write("<HTML><HEAD><TITLE>" + Titulo + "</TITLE><link rel='stylesheet' type='text/css' href='../estilo.css'></HEAD>");
	w.document.write("<SCRIPT language=javascript>function checksize()  { if (document.images[0].complete) {  window.resizeTo(document.images[0].width+"+vlWidth+",document.images[0].height+115); window.focus();} else { setTimeout('check()',250) } }</"+"SCRIPT>");
	w.document.write("<BODY onload='checksize()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
	w.document.write("<table align=center><tr align=center><td>");
	w.document.write("<IMG src='" + Imagem + "' border=0>");
	w.document.write("</td></tr>");
	w.document.write("<tr><td align=center><font face='arial' style='font-size:10;'>" + legendaImagem + "</font></td></tr>");
	w.document.write("<Tr><td align=center><a href='#' onclick='window.close();'>[ Fechar ]</a></td></TR>");
	w.document.write("</table>");
	w.document.write("</BODY></HTML>");
	w.document.close();
}

//abre uma URL em uma nova janela
function novaJanela(end,lrg,alt,scrlBar,resize,nmJanela){
	var end = (end == null) ? null : end;
	var lrg = ((parseInt(lrg) < 1) || (lrg == null)) ? 200 : lrg;
	var alt = ((parseInt(alt) < 1) || (alt == null)) ? 200 : alt;
	var scrlBar = (scrlBar == null) ? 0 : scrlBar;
	var resize = (resize == null) ? 0 : resize;
	var nmJanela = (nmJanela == null) ? "janelaPopup" : nmJanela;

	if(end == null){
		alert("ERRO: ENDEREÇO não informado na função novaJanela()");
		return false;
	}

	var windowprops = "location=no,scrollbars="+scrlBar+",resizable="+resize+",width="+lrg+",height="+alt;
	popup = window.open(end,nmJanela,windowprops);
	popup.focus();
}

//funções para formatar valores na máscara 9.999.999.999,99
function formataCampoInOut(campo,opc){
	//define o valor do campo quando o usuário sai do campo de moeda
	if(opc.toLowerCase() == 'out'){
		if(campo.value == '')
			campo.value = '0,00';
	}

	//define o valor do campo quando o usuário entra do campo de moeda
	if(opc.toLowerCase() == 'in'){
		if(campo.value == '0,00')
			campo.value = '';
	}
}

//função para deixar somente números
function limpaCaracter(valor){
	var digitos = '0123456789';
	var vl = '';

	for(a=0;a<valor.length;a++){
		if(digitos.indexOf(valor.charAt(a)) > -1)
			vl += valor.charAt(a);
	}

	return(vl);
}

//função para formatar valores em moeda com a máscara 9.999.999.999,99
function formataMoeda(campo,maxNum,teclaPress){
	var tam = campo.value.length;//tamanho do campo
	var vlCp = campo.value;//valor original do campo com '.' e ','
	var vlInteiroInvert = '';//valor invertido da parte inteira
	var parteInteira = 0;//valor da parte inteira
	var parteDecimal = '';//valor da parteDecimal.
	var dif = (teclaPress.keyCode == 8) ? 1 : 1;//diferenciador para quando a tecla de 'backspace' for pressionada
	var cont = 0;//contador de casas decimais para inserir o ponto

	//rotina para retirar os caracteres especiais como '.' e ','
	vlCp = limpaCaracter(vlCp);
	tam = vlCp.length;

   if(tam <= maxNum){
    if(tam == 0){
		parteInteira = 0;
		parteDecimal = '00';
	}
   	//inicio da formatação no primeiro número digitado
	if((tam >0) && (tam <= 2)){
		parteInteira = 0;
		if(tam == 1)
			parteDecimal = '0' + vlCp;
		if(tam == 2)
			parteDecimal = vlCp;
	}

	//apartir do segundo número digitado
	if(tam > 2){
		//definição da parte inteira sem os '.'
		for(i=0;i<tam-(dif+1);i++){
			parteInteira += vlCp.charAt(i);
		}

		//define a parte decimal para mais de 3 dígitos
		parteDecimal = vlCp.charAt(tam-(dif+1)) + vlCp.charAt(tam-dif);

		//correção da parte inteira
		parteInteira = parseInt(parteInteira,10);
	}

	//concatena a parte inteira com a ',' e a parte decimal e joga o valor no campo
	campo.value = mascaraDeValor(parteInteira + '.' + parteDecimal);
  }
  else return false;
}

//função auxiliar para colocar a máscara no campo de valor (9.999,99)
function mascaraDeValor(vl){
 var valorTemp = vl.replace(',','.');
	var valorTemp = valorTemp.split('.');
	var parteInteira = valorTemp[0].split('');
	var parteDecimal = (valorTemp[1] == undefined) ? '00' : valorTemp[1];
	var valorFinal = '';
	var inteiroInvertido = '';
	var valorTemp2 = '';
	var contInteira = 0;

	for(i=parteInteira.length-1;i>-1;i--){
		if((parteInteira.length > 3) && (contInteira > 2)){
			inteiroInvertido += '.';
			contInteira = 0;
		}

		inteiroInvertido += parteInteira[i];
		contInteira++;
	}

	for(j=inteiroInvertido.length-1;j>-1;j--){
		valorTemp2 += inteiroInvertido.charAt(j);
	}

	valorFinal = valorTemp2 + "," + parteDecimal;

	return(valorFinal);

}

//fim das funções para formatar valores na máscara 9.999.999.999,99

//formata data na máscara dd/mm/aaaa
function formataData(objCampo,teclapres) {
  var campo = "";
  var tecla = teclapres.keyCode;
  vr = objCampo.value;
  if ("0123456789".search(vr.substr(vr.length-1,1)) == -1) {
      vr = vr.substr(0, vr.length-1);
      objCampo.value = vr;
  }
  else {
    vr = vr.replace( ".", "" );
    vr = vr.replace( "/", "" );
    vr = vr.replace( "/", "" );
    tam = vr.length + 1;
    if ( tecla != 9 && tecla != 8 ) {
      if ( tam > 2 && tam < 5 ) {
        objCampo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
      }
      if ( tam >= 5 && tam <= 10 ) {
        objCampo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 );
      }
    }
  }
}

//valida a formatação da data
function validaData(campo,msg){
//VALIDACAO DA DATA
dia_inicio = campo.value.substr(0,2);
mes_inicio = campo.value.substr(3,2);
ano_inicio = campo.value.substr(6,4);

if(campo.value.length > 0){
	if(campo.value.length != 10){
		alert("A data " + msg + " deve obedecer o formato:(dd/mm/aaaa).");
  		campo.select();
 		return false;
	}
 	//VALIDACAO DO DIA
	 if((dia_inicio < 1) ||
  		((dia_inicio > 31) && (mes_inicio != 2)) ||
  		((dia_inicio > 28) && (mes_inicio == 2) && ((ano_inicio%4) != 0)) ||
  		((dia_inicio > 29) && (mes_inicio == 2) && ((ano_inicio%4) == 0))){
		  if(mes_inicio != 2) alert("O dia " + msg + " deve estar entre 01-31.");
		  else alert("O dia " + msg + " deve estar entre 01-28.");

  		  campo.select();
  		  return false;
 	}
 	//VALIDACAO DO MES
 	if((mes_inicio < 1) || (mes_inicio > 12)){
  		alert("O mês " + msg + " deve estar entre 01-12.");
  		campo.select();
  		return false;
 	}
}

return true;
}

//formata a hora na máscara hh:mm
function formataHora(campo){
 if(campo.value.length == 2) campo.value += ':';
 
 return true;
}

//valida a formatação da hora
function validaHora(campo,msg){
    //VALIDACAO DA HORA
    hora_inicio=campo.value.substr(0,2);
    minuto_inicio=campo.value.substr(3,2);

   if(campo.value.length > 0){
    if (campo.value.length!=5){
		alert("A hora " + msg + " deve obedecer o formato:(hhmm).");
        campo.select();
        return false;
	}
	//VALIDACAO DA HORA
    if ((hora_inicio>23)||(hora_inicio<0)){
		alert("A hora " + msg + " deve estar entre 00-23.");
		campo.select();
		return false;
	}
    //VALIDACAO MINUTO
	if ((minuto_inicio>59)||(minuto_inicio<0)){
		alert("O minuto " + msg + " deve estar entre 00-59.");
 		campo.select();
        return false;
	}
   }
	return true;
}

//formatao CEP na máscara 99999-999
function formataCEP(cep){
   if((event.keyCode < 48 || event.keyCode > 57)&&(event.keyCode>31)) return false;
      if((cep.value.length==5))
         cep.value+='-';

   return true;
}

//formata telefone com DDD na máscara (99) 9999-9999 ou (99) 999-9999
function formataTelefoneComDDD(cp){
	var vlCp = cp.value; //valor original digitado no campo
	var campoSoNumero = limpaCaracter(vlCp); //limpa "( )", "-" e espaços do telefone
	var vlCampoFormatado = '';

	for(i=0;i<campoSoNumero.length;i++){
		if(i==0) vlCampoFormatado += '(';
		if(i==2) vlCampoFormatado += ') ';
		if(i==5) vlCampoFormatado += '-';
		if(i==9){
			vlCampoFormatado = vlCampoFormatado.replace('-','');
			vlCampoFormatado = vlCampoFormatado.substr(0,9) + '-' + vlCampoFormatado.substr(9,5);
		}

		vlCampoFormatado += campoSoNumero.charAt(i);
	}

	cp.value = vlCampoFormatado;
}

//formata CNPJ na máscara 99.999.999/9999-99
function formataCNPJ(campo){
 if(campo.value.length == 2 || campo.value.length == 6) campo.value+='.';
 if(campo.value.length == 10) campo.value+='/';
 if(campo.value.length == 15) campo.value+='-';

 return true;
}

//valida se o CNPJ informado é válido
function validaCNPJ(cpCnpj,msg){
var i;
s = cpCnpj.value;
s = limpaDigito(s);

if(s.length > 0){
	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){
		alert("CNPJ " + msg + " inválido!");
		cpCnpj.select();
		return false;
	}

	d1 = 11 - (d1 % 11);

	if (d1 > 9) d1 = 0;

	if (dv.charAt(0) != d1){
		alert("CNPJ " + msg + " inválido!");
		cpCnpj.select();
		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){
		alert("CNPJ " + msg + " inválido!");
		cpCnpj.select();
		return false;
	}
}

return true;
}

function limpaDigito(valor){
	var digitos = "0123456789";
	var retorno = '';

	for(i=0;i<valor.length;i++){
		if(digitos.indexOf(valor.charAt(i)) > -1)
			retorno += valor.charAt(i);
	}

	return(retorno);
}
