//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\\
//% Encart Web Marketing												  %\\
//% --------------------												  %\\
//% Autor: Flávio Yutaka Nakamura (flavio@encart.com.br)                  %\\
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\\


//*************************************************************************
// Funções gerais
//*************************************************************************

//-------------------------------------------------------------------------
// Remove os espaços da direita e da esquerda do texto
function EWM_LimpaTexto(Texto)
	{
	var Valor;
	
	Valor = '' + Texto;

	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 EWM_TiraTAG(Texto)
	{
	var Posicao;
	var TextoTMP = '';

	for (Posicao = 0; Posicao < Texto.length; Posicao++)
		{
		if (Texto.charAt(Posicao) == '<')
			TextoTMP += '&lt;';
		else if (Texto.charAt(Posicao) == '>')
			TextoTMP += '&gt;';
		else if (Texto.charCodeAt(Posicao) == 13)
			TextoTMP += '<br>';
		else if (Texto.charCodeAt(Posicao) != 10)
			TextoTMP += Texto.charAt(Posicao);
		}

	return (TextoTMP);
	}


//*************************************************************************
// Digitação em campos
//*************************************************************************

//-------------------------------------------------------------------------
// Digitação de número inteiro
function EWM_Digita_Inteiro(Valor)
	{
	if (event.keyCode == 45 && Valor.indexOf('-') >= 0) 
		{
		event.returnValue = false;
		}
	else if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de número real
function EWM_Digita_Real(Valor)
	{
	if (event.keyCode == 46) event.keyCode = 44;
	
	if (event.keyCode == 45 && Valor.indexOf('-') >= 0) 
		{
		event.returnValue = false;
		}
	else if (event.keyCode == 44 && Valor.indexOf(',') >= 0) 
		{
		event.returnValue = false;
		}
	else if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45 && event.keyCode != 44)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de valor Data
function EWM_Digita_Data(Valor)
	{
	if (event.keyCode == 47 && Valor.indexOf('/', Valor.indexOf('/')+1) > 0)
		{
		event.returnValue = false;
		}
	else if (event.keyCode < 47 || event.keyCode > 57)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de valor Hora
function EWM_Digita_Hora(Valor)
	{
	if (event.keyCode == 58 && Valor.indexOf(':', Valor.indexOf(':')+1) > 0) 
		{
		event.returnValue = false;
		}
	else if (event.keyCode < 48 || event.keyCode > 58)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de valor Data e Hora
function EWM_Digita_DataHora(Valor)
	{
	if (event.keyCode == 47 && Valor.indexOf('/', Valor.indexOf('/')+1) > 0)
		{
		event.returnValue = false;
		}
	else if (event.keyCode == 58 && Valor.indexOf(':', Valor.indexOf(':')+1) > 0) 
		{
		event.returnValue = false;
		}
	else if (event.keyCode == 32 && Valor.indexOf(' ') >= 0) 
		{
		event.returnValue = false;
		}
	else if ((event.keyCode < 47 || event.keyCode > 58) && event.keyCode != 32)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de e-mail
function EWM_Digita_email(Valor)
	{
	if (event.keyCode >= 65 && event.keyCode <= 90)
		{
		event.keyCode = event.keyCode + 32;
		}

	if (event.keyCode == 64 && Valor.indexOf('@') >= 0) 
		{
		event.returnValue = false;
		}
	else if ((event.keyCode < 97 || event.keyCode > 122) && 
			 (event.keyCode < 48 || event.keyCode > 57) &&
			 event.keyCode != 45 && event.keyCode != 46 &&
			 event.keyCode != 64 && event.keyCode != 95)
		{
		event.returnValue = false;
		}
	}

//-------------------------------------------------------------------------
// Digitação de CEP
function EWM_Digita_CEP(Valor)
	{
	if (event.keyCode == 46 && Valor.indexOf('.') >= 0) 
		{
		event.returnValue = false;
		}
	else if (event.keyCode == 45 && Valor.indexOf('-') >= 0) 
		{
		event.returnValue = false;
		}
	else if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45 && event.keyCode != 46)
		{
		event.returnValue = false;
		}
	}


//*************************************************************************
// Validação de campos
//*************************************************************************

//-------------------------------------------------------------------------
// Verifica Inteiro
function EWM_Verifica_Inteiro(Valor, Tipo)
	{
	var Numero, Minimo, Maximo;

	if (Valor == '') 
		{
		return ('');
		}
	else if (window.RegExp)
		{
		var Expressao = new RegExp('^[-]?[0-9]+$');

		if (!Expressao.test(Valor)) return ('');
		}

	if (Tipo.toUpperCase() == 'BYTE') 
		{
		Minimo = 0;
		Maximo = 255;
		}
	else if (Tipo.toUpperCase() == 'INTEIRO')
		{
		Minimo = -32768;
		Maximo = 32767;
		}
	else
		{
		Minimo = -2147483648;
		Maximo = 2147483647;
		}

	Numero = parseInt(Valor, 10);

	return (Numero+''=='NaN'||Numero<Minimo||Numero>Maximo?'':(''+Numero));
	}

//-------------------------------------------------------------------------
// Verifica Real
function EWM_Verifica_Real(Valor, Tipo)
	{
	var Numero, Minimo, Maximo;

	Numero = Valor.replace(',', '.')

	if (Valor == '')
		{
		return ('');
		}
	else if (Numero.indexOf('.') == 0)
		{
		Numero = '0' + Numero;
		}
	else if (Numero.indexOf('.') == (Numero.length-1))
		{
		Numero = Numero + '0';
		}

	if (window.RegExp)
		{
		var Expressao = new RegExp('^[-]?[0-9]+(\.?[0-9]*)$');

		if (!Expressao.test(Numero)) return ('');
		}

	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;
		}
	else
		{
		Minimo = - Math.pow(10,28) - 1;
		Maximo = Math.pow(10,28) - 1;
		}

	Numero = parseFloat(Numero);

	Valor  = '' + Numero;
	Valor  = Valor.replace('.', ',')

	return (Valor!='0'&&(Valor=='NaN'||Numero<Minimo||Numero>Maximo)?'':Valor);
	}

//-------------------------------------------------------------------------
// Verifica Data
function EWM_Verifica_Data(Valor)
	{
	var Dia, Mes, Ano;
	var NovoDia, NovoMes, NovoAno;
	var Barra_1, Barra_2;

	if (window.RegExp)
		{
		var Expressao = new RegExp('^[0-9]+\/[0-9]+\/([0-9]{2}|[0-9]{4})$');

		if (!Expressao.test(Valor)) return ('');
		}

	Barra_1 = Valor.indexOf('/');
	Barra_2 = Valor.indexOf('/', Barra_1 + 1);

	if (Barra_1 >= 1 && Barra_2 >= 3 && (Barra_2 - Barra_1) >= 2 && (Valor.length - Barra_2) >= 3)
		{
		Dia = eval(Valor.substring(0, Barra_1));
		Mes = eval(Valor.substring(Barra_1 + 1, Barra_2));
		Ano = eval(Valor.substring(Barra_2 + 1, Valor.length));

		if ('' + Ano == 'NaN')
			{
			return ('');
			}
		else 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.getFullYear();

		if (NovoAno == '')
			{
			return ('');
			}
		else 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 ('');
		}
	}

//-------------------------------------------------------------------------
// Verifica Hora
function EWM_Verifica_Hora(Valor)
	{
	var Hora, Minuto = 0, Segundo = 0;
	var NovaHora, NovoMinuto, NovoSegundo;
	var Pontos_1, Pontos_2;

	if (window.RegExp)
		{
		var Expressao = new RegExp('^[0-9]+\:[0-9]+(\:?[0-9]*)$');

		if (!Expressao.test(Valor)) return ('');
		}

	Pontos_1 = Valor.indexOf(':');
	Pontos_2 = Valor.indexOf(':', Pontos_1 + 1);

	if (Pontos_1 >= 1) 
		{
		Hora = eval(Valor.substring(0, Pontos_1));

		if ((Pontos_2 - Pontos_1) >= 2 && (Valor.length - Pontos_2) >= 2)
			{
			Minuto  = eval(Valor.substring(Pontos_1 + 1, Pontos_2));
			Segundo = eval(Valor.substring(Pontos_2 + 1, Valor.length));
			}
		else if (Pontos_2 >= 3)
			{
			Minuto  = eval(Valor.substring(Pontos_1 + 1, Pontos_2));
			}
		else if (Pontos_2 < 3 && (Valor.length - Pontos_1) >= 2)
			{
			Minuto = eval(Valor.substring(Pontos_1 + 1, Valor.length));
			}
		else 
			{
			return ('');
			}

		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));
			}
		}
	else 
		{
		return ('');
		}
	}

//-------------------------------------------------------------------------
// Verifica Data/Hora
function EWM_Verifica_DataHora(Valor)
	{
	var Data = '', Hora = '';

	Valor = EWM_LimpaTexto(Valor);

	if (EWM_Verifica_Data(Valor) != '')
		{
		Data = EWM_Verifica_Data(Valor);
		Hora = '00:00:00';
		}
	else if (Valor.indexOf(' ') >= 6 && Valor.indexOf(' ') <= 10 && Valor.length >= 10 && Valor.indexOf(':') > 0)
		{
		Data = EWM_Verifica_Data(Valor.substring(0, Valor.indexOf(' ')));
		Hora = EWM_Verifica_Hora(Valor.substring(Valor.indexOf(' ')+1, Valor.length));
		}

	return (Data==''||Hora==''?'':Data+' '+Hora);
	}

//-------------------------------------------------------------------------
// Verifica e-mail
function EWM_Verifica_email(Valor)
	{
	var Texto = '' + Valor;

	if (window.RegExp)
		{
		var Expressao = new RegExp(/^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/);

		if (!Expressao.test(Valor)) Texto = '';
		}
	else if (Valor.indexOf('@') < 1 || Valor.indexOf('.') < 3)
		{
		Texto = '';
		}
	
	return (Texto.toLowerCase());
	}

//-------------------------------------------------------------------------
// Verifica CEP
function EWM_Verifica_CEP(Valor)
	{
	var Texto = '' + Valor;
	var Numero;

	if (window.RegExp)
		{
		var Expressao = new RegExp("(^\\d{5}[-]\\d{3}$)|(^(\\d{2}[.]\\d{3})[-]\\d{3}$)|(^[0-9]{8}$)");

		if (!Expressao.test(Valor)) Texto = '';
		}
	else
		{
		if (Valor.length == 10)
			{
			if (EWM_Verifica_Inteiro(Valor.charAt(0) + Valor.charAt(1) + Valor.charAt(3) + Valor.charAt(4) + Valor.charAt(5) + Valor.charAt(7) + Valor.charAt(8) + Valor.charAt(9)) == '' || Valor.charAt(2) != '.' || Valor.charAt(6) != '-') Texto = '';
			}
		else if (Valor.length == 9)
			{
			if (EWM_Verifica_Inteiro(Valor.charAt(0) + Valor.charAt(1) + Valor.charAt(2) + Valor.charAt(3) + Valor.charAt(4) + Valor.charAt(6) + Valor.charAt(7) + Valor.charAt(8)) == '' || Valor.charAt(5) != '-') Texto = '';
			}
		else if (Valor.length == 8)
			{
			if (EWM_Verifica_Inteiro(Valor) == '') Texto = '';
			}
		else
			{
			Texto = '';
			}
		}

	if (Texto.length == 8 && Texto.indexOf(".") < 0 && Texto.indexOf("-") < 0)
		{
		Texto = Texto.substring(0, 2) + '.' + Texto.substring(2, 5)+ '-' + Texto.substring(5, Valor.length);
		}
	else if (Texto.length == 9 && Texto.indexOf(".") < 0)
		{
		Texto = Texto.substring(0, 2) + '.' + Texto.substring(2, Valor.length);
		}

	return (Texto);
	}

//-------------------------------------------------------------------------
// Verifica CPF ou CNPJ
function EWM_Verifica_CPF_CNPJ(Valor)
	{
	var Numero = '';
	var Fator, Fator_Maximo;
	var Digito_1, Digito_2, Posicao;

	for (Posicao = 0; Posicao < Valor.length; Posicao++)
		{
		if (EWM_Verifica_Inteiro(Valor.charAt(Posicao), '') != '')
			{
			Numero = Numero + EWM_Verifica_Inteiro(Valor.charAt(Posicao), '');
			}
		}

	if ((Numero.length == 11 || Numero.length == 14) && Numero != '00000000000' && Numero != '00000000000000')
		{
		if (Numero.length == 11)
			{
			Fator_Maximo = 11;
			}
		else
			{
			Fator_Maximo = 9;
			}

		Digito_1 = 0;
		Fator    = 2;

		for (Posicao = Numero.length - 3; Posicao >= 0; Posicao--)
			{
			Digito_1 = Digito_1 + (parseInt(Numero.charAt(Posicao)) * Fator);

			Fator = Fator + 1;

			if (Fator > Fator_Maximo) Fator = 2;
			}

		Digito_1 = 11 - (Digito_1 % 11);

		if (Digito_1 >= 10) Digito_1 = 0;

		Digito_2 = 0;
		Fator    = 2;

		for (Posicao = Numero.length - 2; Posicao >= 0; Posicao--)
			{
			Digito_2 = Digito_2 + (parseInt(Numero.charAt(Posicao)) * Fator);

			Fator = Fator + 1;

			if (Fator > Fator_Maximo) Fator = 2;
			}

		Digito_2 = 11 - (Digito_2 % 11);

		if (Digito_2 >= 10) Digito_2 = 0;

		if (Digito_1 == parseInt(Numero.charAt(Numero.length - 2)) && Digito_2 == parseInt(Numero.charAt(Numero.length - 1)))
			{
			return (Numero);
			}
		else
			{
			return ('');
			}
		}
	else
		{
		return ('');
		}
	}

//-------------------------------------------------------------------------
// Seletor de cores (Apenas para Painel Administrativo)
function EWM_Seleciona_Cor(Objeto)
	{
	var Cor = showModalDialog('ewm_editor_cores.htm','','dialogWidth:365px;dialogHeight:460px;center:1;scroll:0;help:0;status:0');

	if (Cor != null) Objeto.value = Cor;
	}