
function TamDado(objeto, tam) {
	if (objeto.value.length > tam) {
		alert("O tamanho máximo de "+tam+" caracteres do campo foi superado. Elimine o excesso.");
	}
}

function TamData(objeto, tam) {
    if (objeto.value.match("^\\d{3}$")) {
        if (tam < 9)
          objeto.value = objeto.value.substring(0, 2)+":"+ objeto.value.substring(2, 3);
        else
          objeto.value = objeto.value.substring(0, 2)+"/"+ objeto.value.substring(2, 3);
	}
    else if (objeto.value.match("^\\d{2}[/:]\\d{3}$")) {
        if (tam < 9)
          objeto.value = objeto.value.substring(0, 5)+":"+ objeto.value.substring(5, 6);
        else
          objeto.value = objeto.value.substring(0, 5)+"/"+ objeto.value.substring(5, 6);
			}
    else if (objeto.value.match("\\d{2}[/]\\d{2}[/]\\d{5}$"))
        objeto.value = objeto.value.substring(0, 10)+" "+ objeto.value.substring(10, 11);
    else if (objeto.value.match("\\d{2}[/]\\d{2}[/]\\d{4}[ ]\\d{3}$"))
        objeto.value = objeto.value.substring(0, 13)+":"+ objeto.value.substring(13, 14);
    else if (objeto.value.match("\\d{2}[/]\\d{2}[/]\\d{4}[ ]\\d{2}[:]\\d{3}$"))
        objeto.value = objeto.value.substring(0, 16)+":"+ objeto.value.substring(16, 17);
		}

function TamCpf(objeto) {
	if (objeto.value.length > 14) {
		alert("O tamanho máximo de "+tam+" caracteres do campo foi superado. Elimine o excesso.");
	}
}

function TamCep(objeto, tam) {
	for(i=0;i<9;i++){
            if (/^[0-9]+$/.test(objeto.value))
                break;
		objeto.value = objeto.value.replace( ".", "" );
		objeto.value = objeto.value.replace( " ", "" );
		objeto.value = objeto.value.replace( "/", "" );
		objeto.value = objeto.value.replace( "-", "" );
	}
	if (/^[0-9]{0,8}$/.test(objeto.value)) {
        } else {
		alert("CEP incorreto.");
		objeto.focus();
	}
}

function Apagar(objeto) {
	if (objeto.value.length > 0)
		objeto.value = objeto.value.substring(0, (objeto.value.length - 1));
	objeto.focus();
}

function erroString(obj, obrigatorio, tam) {
	if (fLTrim(obj.value).length == 0) {
		if (obrigatorio == "Sim") {
			alert("Preenchimento obrigatorio.");
			obj.focus();
			return true;
		}
	}
	else if (obj.value.length > tam) {
		alert("Conteúdo do campo superou o tamanho máximo. Elimine "+eval(obj.value.length - tam)+" caracteres.");
		obj.focus();
		return true;
	}
	return false;
}

function fLTrim(sValor) {
   var wI = sValor.length - 1;
   for (; wI > -1; wI--) {
      if (sValor.substring(wI, wI + 1) != " ")
         return sValor.substring(0,wI + 1);
   }
   return "";
}

function erroBoolean(obj, obrigatorio) {
	if ((obrigatorio == "Sim") && (obj.value.length == 0)) {
		alert("Informe obrigatoriamente Sim ou Não.");
		obj.focus();
		return true;
	}
	return false;
}

function erroEmail(obj, obrigatorio, tam) {
	if ((obrigatorio == "Sim") && (obj.value.length == 0)) {
		alert("Informe obrigatoriamente seu e-mail.");
		obj.focus();
		return true;
	}
	else if ((obrigatorio == "Não") && (obj.value.length == 0)) {
		return false;
	}
	else {
		if (obj.value.length > tam) {
			alert("Conteúdo do campo superou o tamanho máximo. Elimine "+eval(obj.value.length - tam)+" caracteres.");
			obj.focus();
			return true;
		}
		if (/^((\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+;?){1,3})+$/.test(obj.value))
		{}
		else {
			alert("Informe corretamente o e-mail.");
			obj.focus();
			return true;
		}
	}
	return false;
}

function erroInt(obj, obrigatorio, tam) {
	if ((obrigatorio != "Sim") && (obj.value.length == 0))
		return false;
	if (obj.value.length > tam) {
		alert("Conteúdo do campo superou o máximo de "+tam+" caracteres. Corrija!");
		obj.focus();
		return true;
	}
	if (/^[0-9]+$/.test(obj.value))
	{}
	else {
		alert("Informe obrigatoriamente um número, sem casas decimais.");
		obj.focus();
		return true;
	}
	return false;
}

function erroFloat(obj, obrigatorio, tam) {
	if ((obrigatorio != "Sim") && (obj.value.length == 0))
		return false;
	if (obj.value.length > tam) {
		alert("Conteúdo do campo superou o máximo de "+tam+" caracteres. Corrija!");
		obj.focus();
		return true;
	}
	obj.value = obj.value.replace( ",", "." );
	if (/^[0-9]+([.][0-9]+)?$/.test(obj.value))
	{}
	else {
		alert("Informe obrigatoriamente um número, com ou sem casas decimais, tendo por separador o ponto, e não a vírgula.");
		obj.focus();
		return true;
	}
	return false;
}

function erroCEP(obj, obrigatorio, tam) {
	if ((obrigatorio != "Sim") && (obj.value.length == 0))
		return false;
	if (erroInt(obj, "obrigatorio", 8))
		return true;
	if (obj.value < 1000000) {
		alert("CEP incorreto.");
		obj.focus();
		return true;
	}
	return false;
}

function erroDateTime(obj, obrigatorio, tam) {
	if ((obrigatorio != "Sim") && (obj.value.length == 0))
		return false;
	if (obj.value.length != tam) {
		if (tam == 10)
			msg = "Preencha a DATA com o formato DD/MM/AAAA";
		else if (tam == 16)
			msg = "Preencha a DATA/HORA com o formato DD/MM/AAAA HH:MM";
		else if (tam == 19)
			msg = "Preencha a DATA/HORA com o formato DD/MM/AAAA HH:MM:SS";
		else if (tam == 8)
			msg = "Preencha a HORA com o formato HH:MM:SS";
	}
	else {
		msg = ValidaDataDMA(obj.value, tam);
		if(msg == "") {
			msg = ValidaHoraHMS(obj.value, tam);
			if(msg == "")
				return false;
		}
	}
	alert(msg);
	obj.focus();
	return true;
}

function ValidaDataDMA(strData, tipo) {
	if (tipo == 8)
		return("");

	var strDia = new String;
	var strMes = new String;
	var strAno = new String;

	strDia = strData.substring(0,2);
 	strMes = strData.substring(3,5);
 	strAno = strData.substring(6,10);

	if ((strAno < "1900") || (strAno > "2050"))
		return("Informe ANO dentro da faixa de 1900 a 2050.");

	if ((strMes < "01") || (strMes > "12"))
		return("Informe MÊS dentro da faixa de 01 a 12.");
		
	if ((strMes == "01") || (strMes == "03") || (strMes == "05") || 
       (strMes == "07") || (strMes == "08") || (strMes == "10") || 
       (strMes == "12")) {
		if((strDia < "01" ) || (strDia > "31"))
			return("Informe Dia dentro da faixa de 01 a 31.");
	}

	if((strMes == "04") || (strMes == "06") || (strMes == "09") || 
       (strMes == "11")) {
		if((strDia < "01") || (strDia > "30"))
			return("Informe Dia dentro da faixa de 01 a 30.");
	}

	if (strMes == "02") {
		if ((strDia < "01") || (strDia > "29"))
			return("Informe Dia dentro da faixa de 01 a 29.");
		else {
			if ((strDia == "29") && ((parseFloat(strAno) % 4) != 0))
				return("Informe Dia dentro da faixa de 01 a 28.");
		}
	}
//	if (eval(strAno+strMes+strDia) > eval('<cfoutput>#DateFormat(now(),'yyyymmdd')#</cfoutput>'))
//		return("Data não pode ser maior que a de hoje.");

	return("");
}
  
function ValidaHoraHMS(sHora, tipo) {
	if (tipo == 10)
		return("");
	if (tipo == 19)
		strHora = sHora.substring(11,19);
	else if (tipo == 16)
		strHora = sHora.substring(11,16);
	else
		strHora = sHora;

	var strHH = new String;
	var strMM = new String;
	var strSS = new String;

	strHH = strHora.substring(0,2);
	if ((strHH  < "00") || (strHH > "23"))
		return("Informe HORA dentro da faixa de 00 a 23.");

 	strMM = strHora.substring(3,5);
	if ((strMM   < "00") || (strMM > "59"))
		return("Informe MINUTOS dentro da faixa de 00 a 59.");

	if ((tipo == 8) || (tipo == 19)){
		strSS = strHora.substring(6,8);
		if ((strSS   < "00") || (strSS > "59"))
			return("Informe SEGUNDOS dentro da faixa de 00 a 59.");
	}
	return("");
}

function NumericoPesq() {
	if((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 60 || event.keyCode > 62)) {
		event.keyCode = 0;
		alert("Digite somente números, =, < e > neste campo.");
		return false;
	}else{
		return true;
	}
}

function PrecisaoDuplaPesq() {
	if((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 60 || event.keyCode > 62) && event.keyCode != 46) {
		event.keyCode = 0;
		alert("Digite somente números, =, < e > neste campo.");
		return false;
	}else{
		return true;
	}
}

//// Seguintes não testados ////

function FaltaCaracter(objeto , caracter, msg) {		
	if (objeto.value.indexOf(caracter) <= 0) {
      alert(msg);
      objeto.focus();
      return true;
    }
    return false;
}

function LZeros(text, tam)
{
  while (text.length < tam)
    text = '0' + text;
  return text;
}

function Valor(numero, casas)
{
  numero = Math.round(numero * Math.pow(10, casas)) / Math.pow(10, casas);
  if (numero < 0)
  {
    negativo = true;
    numero = numero * (-1);
  }
  else
    negativo = false;
  inteiro = parseInt(numero, 10);
  centavos = Math.round((numero - inteiro) * Math.pow(10, casas));
  i = 3;
  numero = '';
  inteiro = inteiro.toString();
  while (i < inteiro.length)
  {
    numero = '.' + inteiro.substr(inteiro.length - i, 3) + numero;
    i += 3;
  }
  numero = inteiro.substr(0, inteiro.length - i + 3) + numero;
  if (negativo)
    numero = '-' + numero;
  return (numero + ',' + Zeros(centavos.toString(), casas));
}

function ValidaMatricula(obj){
	str=obj.value;
	for(i=0;i<11;i++){
		str = str.replace( ".", "" );
		str = str.replace( ".", "" );
		str = str.replace( "-", "" );
	}
    num = str.substring(0, str.length - 1);
    dv = str.charAt(str.length - 1);
    if ((dv == calcDVMat(num)) || (str == 99999999))
		return true;
	else{
		alert('O Dígito Verificador da Matrícula é INVÁLIDO!');
		obj.value="";
		obj.focus();
		return false;
    }
}

function calcDVMat(pValor){
	var dv = 0;
	//Recebe o número da matrícula como string sem o DV
	var soma = 0;
	var mult = pValor.length + 1;
	for (i = 0;i<pValor.length;i++)
		soma += pValor.charAt(i) * mult--;
	dv = (soma * 10) % 11;
	dv = (dv==10)?0:dv;
	return dv;
}

function erroCpf(obj, obrigatorio, tam) {
	obj.value.concat("");
	if ((obrigatorio == "Sim") && (obj.value.length == 0)) {
		alert("Informe obrigatoriamente o CPF.");
		obj.focus();
		return true;
	}
	else {
		str1 = obj.value.concat("@");
		for(i=0;i<14;i++){
			str1 = str1.replace( "@", "" );
			str1 = str1.replace( ".", "" );
			str1 = str1.replace( " ", "" );
			str1 = str1.replace( "/", "" );
			str1 = str1.replace( "-", "" );
		}
		if (str1.length != (tam - 3)) {
			alert("Preencha, obrigatoriamente, 11 dígitos do CPF.");
			obj.focus();
			return true;
		}
		if (ValidaCPF(str1)) {
			obj.value = str1.substring(0,3)+"."+str1.substring(3,6)+"."+str1.substring(6,9)+"-"+str1.substring(9,11);
		}
		else {
			alert("Informe corretamente o CPF.");
			obj.focus();
			return true;
		}
	}
	return false;
}

function ValidaCPF(str1){
	soma=0;
	if(str1.length == 11){
		if (str1 == "00000000000" || str1 == "11111111111" || str1 == "22222222222" || str1 == "33333333333" || str1 == "44444444444" || str1 == "55555555555" || str1 == "66666666666" || str1 == "77777777777" || str1 == "88888888888" || str1 == "99999999999"){
			return false;  
		}
		for ( i=0; i < 9; i++)   
			soma += (10 - i) * (str1.charAt(i));	  
		soma = 11 - (soma % 11);
		if (soma > 9) 
			soma = 0;
		if (soma == (str1.charAt(9) )){
			soma = 0;
			for (i=0; i < 10; i++)
				soma += (11 - i) * (str1.charAt(i) );
			soma = 11 - (soma % 11);
			if (soma > 9) soma = 0;
				if (soma == (str1.charAt(10) )) 
					return true;
		}
	}
	return false;
}

function erroFindString(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindInt(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindBoolean(obj) {
  return false;
}
function erroFindFloat(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindDateTime(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindCpf(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindEmail(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}
function erroFindCEP(obj) {
	if (fLTrim(obj.value).length == 0)
          return false;
	if (false) {
		alert("erro ???");
		obj.focus();
		return true;
	}
	return false;
}

