//
// Copyright 2001 Encart Web Marketing (ASP Masters). All rights reserved. 
// --------------------------------------------------------------------------
//
// Validação de campos ASP Masters: AM_funcoes.js
//
// Autor: Flávio Y. Nakamura (nakamura@flavio.com.br)
//
// Estes scripts serão utilizados para a validação de campos de um formulário
// antes de serem transmitidos para o script ASP.
// Nem todas as validações são possíveis.
//
// --------------------------------------------------------------------------

function AM_AllTrim(Valor)
{
	while ((Valor.length != 0) && (Valor.charAt(0) == ' ')) Valor = Valor.substring(1, Valor.length);
	while ((Valor.length != 0) && (Valor.charAt(Valor.length-1) == ' ')) Valor = Valor.substring(0, Valor.length-1);

	return Valor;
}

function AM_Replace(Texto, Caracter, NovoCaracter)
{
	var NovoTexto = '', Posicao;
	
	for (Posicao = 0; Posicao < Texto.length; Posicao++)
	{
	if (Texto.charAt(Posicao) == Caracter)
		NovoTexto = NovoTexto + NovoCaracter;
	else
		NovoTexto = NovoTexto + Texto.charAt(Posicao);
	}

	return (NovoTexto);
}

function AM_Digita_Inteiro(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45) event.returnValue = false;
	if (event.keyCode == 45 && Valor.length > 0) event.returnValue = false;
}

function AM_Verifica_Inteiro(Valor, Tipo)
{
	var Numero;
	var Minimo, Maximo;

	if (Valor == '') { return ''; }

	if (Tipo.toUpperCase() == 'BYTE') 
		{
		Minimo = 0;
		Maximo = 255;
		}
	else if (Tipo.toUpperCase() == 'INTEIRO')
		{
		Minimo = -32768;
		Maximo = 32767;
		}
	else if (Tipo.toUpperCase() == 'INTEIRO LONGO')
		{
		Minimo = -2147483648;
		Maximo = 2147483647;
		}
	else if (Tipo.toUpperCase() == 'DECIMAL')
		{
		Minimo = - Math.pow(10,28) - 1;
		Maximo = Math.pow(10,28) - 1;
		}

	Numero = eval(Valor);

	return (Numero+''=='NaN'||Numero<Minimo||Numero>Maximo?'':Numero);
}

function AM_Digita_Real(Valor)
{
	if (event.keyCode == 46) event.keyCode = 44;
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 44 && event.keyCode != 45) event.returnValue = false;
	if (event.keyCode == 44 && Valor.indexOf(',') >= 0) event.returnValue = false;
	if (event.keyCode == 45 && Valor.length > 0) event.returnValue = false;
}

function AM_Verifica_Real(Valor, Tipo)
{
	var Numero;
	var Minimo, Maximo;

	if (Valor == '') { return ''; }

	Numero = parseFloat(AM_Replace(Valor, ',', '.'));

	if (Numero == 0)
		{
		Minimo = 0;
		Maximo = 0;
		}
	else if (Tipo.toUpperCase() == 'SIMPLES') 
		{
		Minimo = Numero<0?-3.402823e38:1.401298e-45;
		Maximo = Numero<0?-1.401298e-45:3.402823e38;
		}
	else if (Tipo.toUpperCase() == 'DUPLO')
		{
		Minimo = Numero<0?-1.79769313486231e308:4.94065645841247e-324;
		Maximo = Numero<0?-4.94065645841247e-324:1.79769313486231e308;
		}

	return (Numero+''=='NaN'||Numero<Minimo||Numero>Maximo?'':AM_Replace(''+Numero, '.', ','));
}

function AM_Digita_Data(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 47) event.returnValue = false;
	if (event.keyCode == 47 && Valor.indexOf('/') >= 0 && Valor.indexOf('/', Valor.indexOf('/')+1) > 0) event.returnValue = false;
}

function AM_Verifica_Data(Valor)
{
	var Dia, Mes, Ano;
	var NovoDia, NovoMes, NovoAno;

	if (Valor.indexOf('/') > 0 && Valor.indexOf('/',Valor.indexOf('/')+1) > 0)
		{
		Dia = eval(Valor.substring(0, Valor.indexOf('/')));
		Mes = eval(Valor.substring(Valor.indexOf('/')+1, Valor.indexOf('/', Valor.indexOf('/')+1)));
		Ano = eval(Valor.substring(Valor.indexOf('/', Valor.indexOf('/')+1)+1, Valor.length));

		if (Ano <= 10)
			Ano = Ano + 2000;
		else if (Ano < 100)
			Ano = Ano + 1900;
		Valor = new Date(Ano, Mes-1, Dia);

		NovoDia = Valor+''=='NaN'?'':Valor.getDate();
		NovoMes = Valor+''=='NaN'?'':Valor.getMonth()+1;
		NovoAno = Valor+''=='NaN'?'':Valor.getYear();

		if (NovoAno <= 10)
			NovoAno = NovoAno + 2000;
		else if (NovoAno < 100)
			NovoAno = NovoAno + 1900;

		if (Valor+''=='NaN'||Dia!=NovoDia||Mes!=NovoMes||Ano!=NovoAno) return '';
		else return (''+(NovoDia>9?NovoDia:'0'+NovoDia)+'/'+(NovoMes>9?NovoMes:'0'+NovoMes)+'/'+NovoAno);
		}
	else return '';
}

function AM_Digita_Hora(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 58) event.returnValue = false;
	if (event.keyCode == 58 && Valor.indexOf(':') >= 0 && Valor.indexOf(':', Valor.indexOf(':')+1) > 0) event.returnValue = false;
}

function AM_Verifica_Hora(Valor)
{
	var Hora, Minuto = 0, Segundo = 0;
	var NovaHora, NovoMinuto, NovoSegundo;

	if (Valor.indexOf(':') > 0) 
		{
		Hora = eval(Valor.substring(0, Valor.indexOf(':')));

		if (Valor.indexOf(':',Valor.indexOf(':')+1) > 0)
			{
			Minuto = eval(Valor.substring(Valor.indexOf(':')+1, Valor.indexOf(':', Valor.indexOf(':')+1)));
			Segundo = eval(Valor.substring(Valor.indexOf(':', Valor.indexOf(':')+1)+1, Valor.length));
			}
		else Minuto = eval(Valor.substring(Valor.indexOf(':')+1, Valor.length));
		}
	else Hora = eval(Valor);

	Valor = new Date(1978, 8, 27, Hora, Minuto, Segundo);

	NovaHora    = Valor+''=='NaN'?'':Valor.getHours();
	NovoMinuto  = Valor+''=='NaN'?'':Valor.getMinutes();
	NovoSegundo = Valor+''=='NaN'?'':Valor.getSeconds();

	if (Valor+''=='NaN'||Hora!=NovaHora||Minuto!=NovoMinuto||Segundo!=NovoSegundo) return '';
	else return (''+(NovaHora>9?NovaHora:'0'+NovaHora)+':'+(NovoMinuto>9?NovoMinuto:'0'+NovoMinuto)+':'+(NovoSegundo>9?NovoSegundo:'0'+NovoSegundo));
}

function AM_Digita_DataHora(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 32 && event.keyCode != 47 && event.keyCode != 58) event.returnValue = false;
	if (event.keyCode == 32 && Valor.indexOf(' ') >= 0) event.returnValue = false;
	if (event.keyCode == 47 && Valor.indexOf('/') >= 0 && Valor.indexOf('/', Valor.indexOf('/')+1) > 0) event.returnValue = false;
	if (event.keyCode == 58 && Valor.indexOf(':') >= 0 && Valor.indexOf(':', Valor.indexOf(':')+1) > 0) event.returnValue = false;
}

function AM_Verifica_DataHora(Valor)
{
	var Data, Hora;

	Valor = Valor + ' ';
	Data = AM_Verifica_Data(Valor.substring(0, Valor.indexOf(' ')));
	Hora = AM_Verifica_Hora(Valor.substring(Valor.indexOf(' ')+1, Valor.length));

	return (Data == '' || Hora == ''?'':Data+' '+Hora);
}

function AM_Digita_Moeda(Valor)
{
	if (event.keyCode == 46) event.keyCode = 44;
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 44 && event.keyCode != 45) event.returnValue = false;
	if (event.keyCode == 44 && Valor.indexOf('.') >= 0) event.returnValue = false;
	if (event.keyCode == 45 && Valor.length > 0) event.returnValue = false;

	if (Valor.indexOf(',') < 0 && Valor.length >= 15 && event.keyCode != 44) event.returnValue = false;
	else if (Valor.indexOf(',') >= 0 && Valor.length-Valor.indexOf(',') > 2) event.returnValue = false;
}

function AM_Verifica_Moeda(Valor, Minimo, Maximo)
{
	var Numero;

	if (Minimo == Maximo)
		{
		Minimo = -999999999999999.99;
		Maximo = 999999999999999.99;
		}

	Numero = parseFloat(AM_Replace(Valor, ',', '.'));

	return (Numero+''=='NaN'||Numero<Minimo||Numero>Maximo?'':AM_Replace(''+Math.round(Numero*Math.pow(10,2))/Math.pow(10,2), '.', ','));
}

function AM_Verifica_Booleano(Valor)
{
	var Opcao1, Opcao2;

	Opcao1 = Valor[0].checked;
	Opcao2 = Valor[1].checked;

	return (Opcao1||Opcao2?true:false);
}

function AM_Digita_Email(Valor)
{
	if (event.keyCode >= 65 && event.keyCode <= 90) 
		{
		event.keyCode = event.keyCode + 32;
		}

	if ((event.keyCode < 97 || event.keyCode > 122) && 
		(event.keyCode < 48 || event.keyCode > 57) &&
		 event.keyCode != 46 && event.keyCode != 95 &&
		 event.keyCode != 64 && event.keyCode != 45) event.returnValue = false;

	if ((Valor.indexOf('@') >= 0 || Valor.length <= 0) && event.keyCode == 64) event.returnValue = false;
}

function AM_Verifica_Email(Valor)
{
	var Suportado = 0;

	Valor = AM_AllTrim(Valor);
	
	if (window.RegExp) 
		{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) Suportado = 1;
		}

	if (!Suportado) return (Valor.indexOf(".")>2&&Valor.indexOf("@")>0?Valor:'');
	
	var ExpRegular1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var ExpRegular2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

	return (!ExpRegular1.test(Valor)&&ExpRegular2.test(Valor)?Valor:'');
}

function AM_Digita_CEP(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) &&
		 event.keyCode != 46 && event.keyCode != 45) event.returnValue = false;
	
	if (Valor.length > 10) event.returnValue = false;
	if ((Valor.indexOf('.') >= 0 || Valor.length < 2) && event.keyCode == 46) event.returnValue = false;
	if ((Valor.indexOf('-') >= 0 || Valor.length < 5) && event.keyCode == 45) event.returnValue = false;
}

function AM_Verifica_CEP(Valor)
{
	var ExpRegular = new RegExp("(^\\d{5}[-]\\d{3}$)|(^(\\d{2}[.]\\d{3})[-]\\d{3}$)");

	if (ExpRegular.test(Valor) && Valor.indexOf('.') < 0)
		{
		Valor = Valor.substring(0, 2) + '.' + Valor.substring(2, Valor.length);
		}

	return (ExpRegular.test(Valor)?Valor:'');
}

function AM_Digita_CPF(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45) event.returnValue = false;
	if (Valor.length > 12) event.returnValue = false;
	if ((Valor.indexOf('-') >= 0 || Valor.length < 9) && event.keyCode == 45) event.returnValue = false;
}

function AM_Verifica_CPF(Valor)
{
	var Erro = false;
	var Digito1, Digito2;

	if (Valor.length < 12) Erro = true;
  
	for (i = 0; i <= Valor.length - 1; i++)
	{
		if ((i == 9) && (Valor.charAt(i) != '-')) Erro = true
		if ((i != 9) && ((Valor.charAt(i) < '0') || (Valor.charAt(i) > '9'))) Erro = true
	}

	if (!Erro)
	{
		Digito1 = 11 - eval((Valor.charAt(0) * 10) + (Valor.charAt(1) * 9) + (Valor.charAt(2) * 8) + (Valor.charAt(3) * 7) + (Valor.charAt(4) * 6) + (Valor.charAt(5) * 5) + (Valor.charAt(6) * 4) + (Valor.charAt(7) * 3) + (Valor.charAt(8) * 2)) % 11;  
		if (Digito1 >= 10) Digito1 = 0;

		Digito2 = 11 - eval((Valor.charAt(0) * 11) + (Valor.charAt(1) * 10) + (Valor.charAt(2) * 9) + (Valor.charAt(3) * 8) + (Valor.charAt(4) * 7) + (Valor.charAt(5) * 6) + (Valor.charAt(6) * 5) + (Valor.charAt(7) * 4) + (Valor.charAt(8) * 3) + (Digito1 * 2)) % 11;  
		if (Digito2 >= 10) Digito2 = 0;

		if ((Digito1 != Valor.charAt(10)) || (Digito2 != Valor.charAt(11))) Erro = true;
	}
	
	return (Erro?'':Valor);
}

function AM_Digita_CNPJ(Valor)
{
	if ((event.keyCode < 48 || event.keyCode > 57) &&
		 event.keyCode != 46 && event.keyCode != 45 && event.keyCode != 47) event.returnValue = false;

	if (Valor.length > 18) event.returnValue = false;
	if ((Valor.indexOf('.', Valor.indexOf('.')+1) >= 0 || Valor.length < 2) && event.keyCode == 46) event.returnValue = false;
	if ((Valor.indexOf('/') >= 0 || Valor.length < 10) && event.keyCode == 47) event.returnValue = false;
	if ((Valor.indexOf('-') >= 0 || Valor.length < 15) && event.keyCode == 45) event.returnValue = false;
}

function AM_Verifica_CNPJ(Valor)
{
  var Erro = false;
  var Digito1, Digito2;

  if (Valor.length < 18) Erro = true;
  
  for (i = 0; i <= Valor.length - 1; i++)
  {
    if ((i == 2) && (Valor.charAt(i) != '.')) Erro = true
    if ((i == 6) && (Valor.charAt(i) != '.')) Erro = true
    if ((i == 10) && (Valor.charAt(i) != '/')) Erro = true
    if ((i == 15) && (Valor.charAt(i) != '-')) Erro = true
    if ((i != 2) && (i != 6) && (i != 10) && (i != 15) && ((Valor.charAt(i) < '0') || (Valor.charAt(i) > '9'))) Erro = true
    }

  if (!Erro)
  {
	Digito1 = 11 - (eval((Valor.charAt(0) * 5) + (Valor.charAt(1) * 4) + (Valor.charAt(3) * 3) + (Valor.charAt(4) * 2) + (Valor.charAt(5) * 9) + (Valor.charAt(7) * 8) + (Valor.charAt(8) * 7) + (Valor.charAt(9) * 6) + (Valor.charAt(11) * 5) + (Valor.charAt(12) * 4) + (Valor.charAt(13) * 3) + (Valor.charAt(14) * 2)) % 11);
	if (Digito1 >= 10) Digito1 = 0;
	
	Digito2 = 11 - (eval((Valor.charAt(0) * 6) + (Valor.charAt(1) * 5) + (Valor.charAt(3) * 4) + (Valor.charAt(4) * 3) + (Valor.charAt(5) * 2) + (Valor.charAt(7) * 9) + (Valor.charAt(8) * 8) + (Valor.charAt(9) * 7) + (Valor.charAt(11) * 6) + (Valor.charAt(12) * 5) + (Valor.charAt(13) * 4) + (Valor.charAt(14) * 3) + (Digito1 * 2)) % 11);	
	if (Digito2 >= 10) Digito2 = 0;
	
	if ((Digito1 != eval(Valor.charAt(16))) || (Digito2 != eval(Valor.charAt(17)))) Erro = true;
  }

  return (Erro?'':Valor);
}

function SetCookie(Nome, Valor, Expira)
	{
	var Validade = new Date();

	Validade.setTime(Validade.getTime() + 1000 * 24 * 60 * 60 * eval(Expira));
	document.cookie = Nome + '=' + escape(Valor) + '; expires=' + Validade.toGMTString() + '; path=/';
	}

function GetCookie(Nome)
	{
	var Inicio, Fim, Valor;
	var Texto = document.cookie;

	Nome = Nome + '=';
	Inicio = Texto.indexOf(Nome, 0);

	if (Inicio < 0) Valor = '';
	else 
		{
		Inicio += Nome.length;
		Fim = Texto.indexOf(';', Inicio);

		if (Fim < 0) Fim = Texto.length;

		Valor = unescape(Texto.substring(Inicio, Fim));
		}

	return Valor;
	}

function DelCookie(Nome)
	{
	document.cookie = Nome + '=' + '; expires=Thu, 01-Jan-70 00:00:01 GMT' + '; path=/';
	}