//Funções para verificação de dados de formulário
function VerTxt(txt,nome_campo) { //Verifica se o campo foi preenchido em um Input type=text.
	if (txt.value == "" || txt.value == null) {
		alert("Digite um valor para o campo " + nome_campo + ".");
		txt.focus();
		return false;
	}
	return true;
}
function VerSel(sel,nome_campo) { //Verifica se algum campo foi selecionado em um Select.
	if (sel.value == 0) {
		alert("Selecione um valor para o campo " + nome_campo + ".");
		sel.focus();
		return false;
	}
	return true;
}
function VerDt(data,nome_campo) { //Verifica se a data preenchida em um Input type=text é válida.
	if (!VerTxt(data,nome_campo)) return false;
	if (data.value.length != 10 || data.value.substr(2,1) != "/" || data.value.substr(5,1) != "/") {
		alert("Campo " + nome_campo + " com preenchimento inválido (\'dd/mm/aaaa\').");
		return false;
	}
	return true;
}
function VerCN(CN,nome_campo) { //Verifica se o CN (número) do nome_campo (CPF ou CNPJ) preenchido em um Input type=text é valido.
	if(!VerTxt(CN,nome_campo)) return false;
	if(!Verify(CN.value,nome_campo)) {
      alert("O " + nome_campo + " preenchido é inválido.");
	  CN.focus();
	  return false;
	}
	return true;
}
function VerNum(num,nome_campo) { //Verifica se o número inteiro preenchido é válido.
	if (!VerTxt(num,nome_campo)) return false;
	if (isNaN(num.value)) {
		alert("O campo " + nome_campo + " não possui valor númerico.");
		return false;
	}
	return true;
}
function VerVal(num,nome_campo) { //Verifica se o valor preenchido é válido.
	if (!VerTxt(num,nome_campo)) return false;
	numero = num.value.substring(0,num.value.length-3) + "" + num.value.substring(num.value.length-2);
	if (isNaN(numero)) {
		alert("O campo " + nome_campo + " não possui valor númerico.");
		return false;
	}
	return true;
}
//Fim


//Funções de formatação de dados de campos de formulário.
function FmtDt(data) { //Formata o campo data no estilo "DD/MM/AAAA".
  var tam = data.value.length;
  if (((event.keyCode) >= 44 ) && ((event.keyCode) <= 57 )) {
    event.keyCode;
    if (( tam == 2 ) || ( tam == 5 ))
      data.value = data.value + "/"; 
  } else
    event.keyCode = 0;
}
function FmtCpf(cpf) { //Formata o campo CPF no estilo "000.000.000-00".
  var tam = cpf.value.length;
  if (((event.keyCode) >= 44 ) && ((event.keyCode) <= 57 )) {
    event.keyCode;
    if (( tam == 3 ) || ( tam == 7 ))
      cpf.value = cpf.value + "."; 
	if (( tam == 11))
	  cpf.value = cpf.value + "-"; 
  } else
    event.keyCode = 0;
}
function FmtCnpj(cnpj) { //Formata o campo CNPJ no estilo "00.000.000/0000-00".
  var tam = cnpj.value.length;
  if (((event.keyCode) >= 44 ) && ((event.keyCode) <= 57 )) {
    event.keyCode;
    if (( tam == 2 ) || ( tam == 6 ))
      cnpj.value = cnpj.value + "."; 
	if (( tam == 10))
	  cnpj.value = cnpj.value + "/"; 
	if (( tam == 15))
	  cnpj.value = cnpj.value + "-"; 
  } else
    event.keyCode = 0;
}

function FmtCep(cep) { //Formata o campo CEP no estilo "00.000-00".
  var tam = cep.value.length;
  if (((event.keyCode) >= 44 ) && ((event.keyCode) <= 57 )) {
    event.keyCode;
    if (( tam == 2 ))
      cep.value = cep.value + "."; 
	if (( tam == 6))
	  cep.value = cep.value + "-"; 
  } else
    event.keyCode = 0;
}

//--


//Funções internas para Validação de CPF e CNPJ
function ClearStr(str, ch) { //Remove todos caracteres que não são char
  while((cx=str.indexOf(ch))!=-1)
    str = str.substring(0,cx)+str.substring(cx+1);
  return(str);
}
function ParseNumb(c) {
  c=ClearStr(c,"-");
  c=ClearStr(c,"/");
  c=ClearStr(c,",");
  c=ClearStr(c,".");
  c=ClearStr(c,"(");
  c=ClearStr(c,")");
  c=ClearStr(c," ");
  if((parseFloat(c) / c != 1)) {
    if(parseFloat(c) * c == 0)
      return(c);
    else
      return(0);
  }
  return(c);
}
function Verify(CNUMB,CTYPE) { //Verifica CPF e CNPJ
  CNUMB=ParseNumb(CNUMB);
  if(CNUMB == 0)
    return false;
  else {
    g=CNUMB.length-2;
    if(TestDigit(CNUMB,CTYPE,g)) {
      g=CNUMB.length-1;
      if(TestDigit(CNUMB,CTYPE,g))
        return true;
      else
        return false;
    } else
      return false;
  }
}
function TestDigit(CNUMB,CTYPE,g) { //Verifica digitos verificadores de CPF e CNPJ.
  var dig=0;
  var ind=2;
  for(f=g;f>0;f--) {
    dig += parseInt(CNUMB.charAt(f-1))*ind;
    if (CTYPE=='CNPJ') {
	  if(ind>8)
	    ind=2;
	  else
	    ind++;
	} else
	  ind++;
  }
  dig%=11;
  if(dig<2)
    dig=0;
  else
    dig=11-dig;
  if(dig!=parseInt(CNUMB.charAt(g)))
    return(false);
  else
    return(true);
}


function FmtValor(fld, e) { //(this,(event)
	var decSep = ",";
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if (whichCode == 13) return true; // Enter
	key = String.fromCharCode(whichCode); // Get key value from key code
	if (strCheck.indexOf(key) == -1) return false; // Not a valid key
	len = fld.value.length;
	for(i = 0; i < len; i++)
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
	aux = '';
	for(; i < len; i++)
		if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) fld.value = '';
	if (len == 1) fld.value = '0'+ decSep + '0' + aux;
	if (len == 2) fld.value = '0'+ decSep + aux;
	if (len > 2) {
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--) {
			aux2 += aux.charAt(i);
			j++;
		}
		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
			fld.value += aux2.charAt(i);
		fld.value += decSep + aux.substr(len - 2, len);
	}
	return false;
}