/*

===============================================================================
 E j C M - Empresa Júnior de Consultoria em Microinformática - UFRJ
-------------------------------------------------------------------------------
 Nome do Projeto:	Sistema Ficha de Ponto
 Gerente:			Rafael Quintana Pinto
 Nome da Pagina:	<funcoes.js>
 Autor:				Rafael Quintana
 Ultima Atualiz.:	10/01/05
-------------------------------------------------------------------------------
 Descrição:	Contém todas as funções javascript comuns para o Projeto Sistema Ray Id.
 Em sistemas anteriores, essas funções ficavam na funcoes,asp, mas percebi que um 
 overhead acontecia pois o asp tinha que imprimir todas esta funções na página HTML, 
 que ficava enorme...

 Observações: As funções que recebem campo como parâmetro devem receber o textbox, ou 
 outro objeto do Javascript, não o seu valor. Qualquer dúvida vá no repositório de 
 código.
 
 1- Colocar alguma coisa de validação de formulários.

===============================================================================

===============================================================================
							 ÍNDICE DAS FUNÇÕES
-------------------------------------------------------------------------------


validarData(campo)											--> strErro

modificaData(campo)

mudaData(D1)

mudaHora(tempo)

validarHora(h)												--> strErro	

PopWindow (url, name, altura, largura, top, left)

tiraletras(oQue)

fechaJanela()

stat()

dataVencimento(data de vencimento, data de hoje)			--> string

validaPreco(preco)											--> string

verificaData(Data)											--> blnData

ValidateHourAlert(nomedoformulario.nomedocampo)				--> hora válida

ValidateHour(nomedoformulario.nomedocampo)					--> hora válida

dataParaInteiro(campo)

limparstring(a)														--> String sem espaço

comparadata(data1, data2)  --> retorna <0 se a 1ª data for menor, 0 se for igual e >0, se for maior
	
valorChecado(Campo)										--> Valor selecionado em um radio

verificaEmail(Campo)											--> Função de validação para email

FormataTel(Campo,e)										--> Só insere numero e formata como ( XX ) XXXX - XXXX

FormataData(Campo,e)										--> Só insere numero e formata como XX/XX/XXXX

FormataCPF(Campo,e)										--> Só insere numero e formata como XXX.XXX.XXX-XX

ValidaCPF(parametro)										--> Valida se o numero de cpf é valido, deve passar o value do campo como parametro

FormataCnpj(Campo,e)										--> Só insere numero e formata como XX.XXX.XXX/XXXX-XX

ValidaCNPJ(parametro)									    --> Valida se o numero de cnpj é valido, deve passar o value do campo como parametro

FormataEmailEJCM(Campo,e)						--> Só insere numero e formata como @ejcm.com.br

-------------------------------------------------------------------------------


*/

//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// Funções para Trabalhar com Datas em javascript
//-----------------------------------------------------------------------------
// Autor: Rafael Quintana
// Última Modificação: 10/01/2005
//-----------------------------------------------------------------------------


//funçao que verifica se a data está no formato (DD/MM/AAAA)
//retorna uma string com o erro da data ou 'OK' se estiver correta
//chama a função modificaData para mudar a data do campo para o formato certo
//recebe como parâmetro o campo e não o campo.value, para poder mudar o seu valor.
function validarData(campo){

  var strDia = new String;
  var strMes = new String;

  var strAno = new String;
  var intAno = 0, intDia = 0, intMes = 0, intK;

  modificaData(campo);
  var data = campo.value;


  if (data.length != 10){
    return ('tamanho irregular');
  }

  else{

    for(intK = 0 ; intK <= 9 ; intK++){ 

      if ( ((intK != 2) && (intK != 5)) && !( data.charAt(intK) >= '0' && data.charAt(intK) <= '9' ) ){
        return ('valores não numéricos');
	  }
    }

    if ((data.charAt(2) != "/") || (data.charAt(5) != "/")) {
      return('/ não encontrado');
	}

    strDia = data.charAt(0) + data.charAt(1);
    strMes = data.charAt(3) + data.charAt(4);
    strAno = data.charAt(6) + data.charAt(7) + data.charAt(8) + data.charAt(9);
	intDia = strDia;
	intMes = strMes;
	intAno = strAno;

    if (intDia > 31 || intDia < 1) {
      return('Dia inválido -> ' + intDia);
	}

    if (intMes > 12 || intMes < 1) {
      return('Mes inválido -> ' + intMes);
	}

    if (intAno > 9000 || intAno < 0) {
      return(intAno + ' ? Esse ano é muito distante.');

	}

  }//fecha o else

  return('OK');

}//fecha a função


//-----------------------------------------------------------------------------


//funçao que modifica uma data válida para o formato DD/MM/AAAA para que assim, esta data possa ser
//validada pelo validarData e colocada no banco de dados como um inteiro ***TEM ALGUNS PROBLEMINHAS***
function modificaData(campo){

	var data = campo.value;
	var strDia = new String('');
	var intDia = 0;
	var intUltimo = 0;

	for(var inti = 0; inti <= data.length; inti++){	
		if (data.charCodeAt(inti) == 47){
			if (data.substring(intUltimo, inti).length == 1){
				campo.value = data.substring(0, intUltimo) + "0" + data.substring(intUltimo, data.length);
				data = campo.value;
			}
			intUltimo = inti + 1;
			intDia = '';
		}
		else{
			if ((data.charCodeAt(inti) >= 48) && (data.charCodeAt(inti) <= 56)){
				strDia += data.charAt(inti);
			}
			else 
				return;
		}
	}

}//fecha a função


//-------------------------------------------------------------------------------


// Função que muda a data para AAAAMMDD para que ela possa ser facilmente comparada com outra data
// é o DateToInt do Javascript (e DO ASP TMB Quintana!!)
function mudaData(D1){

	var D2 = D1.replace(/(\d\d)\/(\d\d)\/(\d\d\d\d)/, '$3$2$1')
	var D2 = D1.split('/').reverse().join('')

	return D2
}


//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// Funções para Trabalhar com Horas em javascript
//-----------------------------------------------------------------------------
// Autor: Rafael Quintana
// Última Modificação: 10/01/2005
//-----------------------------------------------------------------------------

//funçao que modifica uma hora válida para o formato HH:MM para que assim, esta hora possa ser
//validada pelo validarHora
function mudaHora(tempo){

		if (tempo.value == "")
			return "";

		 /*variável que armazenará a posição dos caracteres ':'ou ',' ou '.', ou ';' */
		i=-1;     
		for (j=0;j<tempo.value.length;j++)
		{
			c=tempo.value.charAt(j);
			if ((c==':') || (c==',') || (c=='.')|| (c==';'))
			{
				if (i==-1)
					i=j;
				else
				{
					return (tempo.select());
				}
			}
			else
			{
				num=parseInt(c);
				if (isNaN(num))
				{
					 return (tempo.select());
				}
			}
		}
		
		if (i==-1)		
		/*se não foi digitado nenhum dos caracteres de hora testados acima
		i vai receber a posição do fim da string*/
			i=tempo.value.length;
		/*se o caractere se hora foi colocado no inicio da string*/
		if (i==0)
			hour='0';
		else
		/*hour recebe a parte da string do início até o caractere de hora*/
			hour=tempo.value.substring(0,i);
		/*se foi digitado uma hora com mais de 2 caracteres informa o usuario*/
		if (hour.length>2)
		{
			return (tempo.select());
		}
		/*se a hora não está no intervalo correto informa usuario*/
		if ((hour<0) || (hour>23)) 
		{
			return (tempo.select());
		}
		/*se a hora só tem um digito acrescenta zero na frente*/
		if (hour.length==1)
			hour='0' + hour;
		/*se foi encontrado algum dos caracteres de hora*/
		if (i<tempo.value.length)
		{
				/*se o caractere é ',' or '.' transforma em ':'*/	
				if (c!=':') 
						c=':';
				hour+=c;	
				/*pega os minutos do caractere de hora até o final da string*/
				minutes=tempo.value.substring(i+1,tempo.value.length);
				/*se não foi colocado os minutos*/
				if (i+1==tempo.value.length)
					minutes='00';
				/*os minutos não podem ter mais de 2 algarismos*/
				if (minutes.length>2) 
				{
					   return (tempo.select());
				}	
				/*se os minutos só tem um algarismo completa com um zero*/
				if (minutes.length==1)
					minutes+='0';
				/*se os minutos não estam no intervalo correto informa usuario*/
				if ((minutes<0) || (minutes>59))
				{
					  return  (tempo.select());
				}
				hour+=minutes;
				
		}
		/*senão: se não existe os caracteres ',' or ':' ou '.' demarcadores de hora completa com o que falta*/
		else 
			hour+=':00';


		tempo.value=hour;
		return (tempo.value);

}


//-------------------------------------------------------------------------------


//funçao que verifica se a hora está no formato (HH:MM)
function validarHora(h){

  var strHora = new String;
  var strMinuto = new String;
  var intHora = 0, intMinuto = 0, intK;

  mudaHora(h)

  var hora = h.value;


  if (hora.length != 5){
    return ('tamanho irregular');
  }
  else{

    for(intK = 0 ; intK <= 4 ; intK++){ 

      if ( (intK != 2) && !( hora.charAt(intK) >= '0' && hora.charAt(intK) <= '9' ) ){
        return ('valores não numéricos');
	  }
    }
    if (hora.charAt(2) != ":"){
      return(': não encontrado');
	}

    strHora = hora.charAt(0) + hora.charAt(1);
    strMinuto = hora.charAt(3) + hora.charAt(4);
	intHora = strHora;
    intMinuto = strMinuto;

    if (intHora > 23 || intHora < 0) {
      return('Hora fora do intervalo [0, 23]');
	}

    if (intMinuto > 59 || intHora < 0) {
      return('Minuto fora do intervalo [0, 59]');
	}	

  }//fecha o else

  return('OK');

}//fecha a função


//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Função para Abrir uma Nova Janela
//-----------------------------------------------------------------------------
// Autor: Gisele Morgado / Douglas Magno
// Última Modificação: 05/02/2004
// ----------------------------------------------------------------------------

function PopWindow (url, name, largura, altura)
{
		var left = (screen.width - largura) / 2 - 5;
		var top = (screen.height - altura) / 2 - 15;

		window.open(url, name, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, menubar=no, top='+top+', left='+left+', width='+largura+', height='+altura);

}




// ----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Função para não permitir a entrada de qualquer coisa na text box
//-----------------------------------------------------------------------------
// Autor: Rafael Quintana
// Última Modificação: 13/04/2005
//-----------------------------------------------------------------------------

var tiraletrasOque = 0;


//função em javascript que permite seja digitado apenas certas coisas no textbox
//no textbox use onkeypress="tiraletras(oQue)"
function tiraletras(campo,oQue){ 

  tiraletrasOque = oQue;
  campo.onkeypress = pressionando;

}

function pressionando(evt){ 

  oQue = tiraletrasOque;

// oQue é passado como parâmetro para essa função e diz o que pode ser escrito no text box
// oQue = 5 -> números, traços "-" e espaços " " e parenteses "()" (telefone)
// oQue = 2 -> números, dois pontos ":", pontos "." e virgulas "," (para hora)
// oQue = 3 -> números, "/" (bom para datas)
// oQue = 4 -> números apenas
// oQue = 1 -> números, traços "-", espaços " " 
// oQue = 6 -> números, virgula e pontos
// oQue = 7 -> numeros, tracos, espacos e ponto (bom para CPF e RG)
// oQue = 8 -> numeros, tracos, espacos, ponto e barra (bom para CNPJ)
// oQue = 9 -> números, virgula (bom para preços)
// oQue = 10 -> letras e números. (bom para senhas)
// oQue = 11 -> tudo menos virgula

//isNetscape=(document.layers);
// Cross-browser key capture routine couresty
// of Randy Bennett (rbennett@thezone.net)
//eventChooser = (isNetscape) ? keyStroke.which : event.keyCode;

//alert(3);
//alert(window.event);

  var codigo;
  
  if(evt)
	  codigo = evt.which;
  else
	  codigo = event.keyCode;


  var blnNaoEscreve = false;

  //alert(codigo);

//alert(evt.which);

  if (codigo != 8){


	  if ( (oQue == 1) && (codigo < 48 || codigo > 57)&&(codigo != 45)&&(codigo != 32)) 
		blnNaoEscreve = true;
	  else if ( (oQue == 2) && (codigo < 48 || codigo > 57)&&(codigo != 44)&&(codigo != 46)&&(codigo != 58)) 
		blnNaoEscreve = true;
	  else if ( (oQue == 3) && (codigo < 47 || codigo > 57))
		blnNaoEscreve = true;
	  else if ( (oQue == 4) && (codigo < 48 || codigo > 57))
		blnNaoEscreve = true;
	  else if ( (oQue == 5) && (codigo < 48 || codigo > 57)&&(codigo != 45)&&(codigo != 32)&&(codigo != 40)&&(codigo != 41) &&(codigo != 46))
		blnNaoEscreve = true;
	  else if ( (oQue == 6) && (codigo < 48 || codigo > 57) &&(codigo != 44)&&(codigo != 46) )
		blnNaoEscreve = true;
	  else if ( (oQue == 7) && (codigo < 48 || codigo > 57)&&(codigo != 45) && (codigo !=46)) 
		blnNaoEscreve = true;
	  else if ( (oQue == 8) && (codigo < 47 || codigo > 57)&&(codigo != 45) && (codigo !=46)) 
		blnNaoEscreve = true;
	  else if ( (oQue == 9) && (codigo < 48 || codigo > 57) &&(codigo != 44))
		blnNaoEscreve = true;
	  else if ( (oQue == 10) && (codigo < 48 || codigo > 57) && (codigo < 65  || codigo > 90) && (codigo < 97 || codigo > 122))
		blnNaoEscreve = true;
	  else if ( (oQue == 11) && (codigo == 44) ) 
		blnNaoEscreve = true;

  }

  if(evt){
	  if (blnNaoEscreve && codigo != 13 && codigo != 0){
  	    return false;
	  }
  }
  else{
 	  if (blnNaoEscreve){
  	    window.event.keyCode = 0;;
	  }
  }

}


//-------------------------------------------------------------------------------

//-------------------------------------------------------------------------------
// Função para Fechar a Janela Atual
//-------------------------------------------------------------------------------
// Autor: Douglas Magno
// Última Modificação: 21/04/2004
//-------------------------------------------------------------------------------


function fechaJanela(){
	//Engano o IE para fechar sem confirmação ser pedida
	window.opener = 'qualquer coisa';
	window.close();
}

//-------------------------------------------------------------------------------


//-------------------------------------------------------------------------------
// Abaixo, as funções para fazer a barra de status ficar com o nome do projeto em animação maneira
//-------------------------------------------------------------------------------
// Autor: Rafael Quintana
// Última Modificação: 12/07/2004
// OBS: Para funcionar, chamar dentro do body onload do menu.asp, a função stat();
//-------------------------------------------------------------------------------

var intLetra = 0;
var intEspaco = 0;
var strEspaco = "";
var delay = 0;

for (var inti = 0; inti <= 50; inti++){
	strEspaco += " ";
}

function stat(){
	var strMensagem = "Sistema Rayid";

    if (--delay < 0){

  	  window.status = strMensagem.substring(0,intLetra) + strEspaco.substring(0,50 - intEspaco) + strMensagem.charAt(intLetra) + strEspaco.substring(0,50 - ( (50 - intEspaco) + intLetra) ) + "<- EjCM";

  	  if (++intEspaco > 50){
	    intEspaco = intLetra;
	    if (++intLetra > strMensagem.length){
	      delay = 100;
          intLetra = 0;
	    }
	  }
	}
    window.setTimeout("stat();",25);
  
}

//-------------------------------------------------------------------------------

//-------------------------------------------------------------------------------
// Funções para desabilitar o botão direito do mouse
//-------------------------------------------------------------------------------
// Autora: Karin Ramos Rocha, Rafael Quintana
// Última Modificação: 10/01/2005
// OBS: Para funcionar, chamar a função desabilitarDireito no menu.asp, ou qq página em que queira desabilita-lo.
//-------------------------------------------------------------------------------

var message="Botão direito desabilitado.";
var blnDesabilitado = false;

//se não passar uma string como parâmetro, a string default é mantida.
function desabilitarDireito(msg){

	if (msg)
		message = msg;
	blnDesabilitado = true;

}

function clickIE4( ){
	if (event.button==2) {
	alert(message);
	return false;
	}
}

function clickNS4(e) {
	if (document.layers||document.getElementById&&!document.all) {
		if (e.which==2||e.which==3) {
		alert(message);
		return false;
		}
	}
}



if (document.layers) {
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById) {
	document.onmousedown=clickIE4;
}

document.oncontextmenu = new Function("if(blnDesabilitado){alert(message);return false}");




//-------------------------------------------------------------------------------
// Desabilita o shift-click
//-------------------------------------------------------------------------------

var strMsgShift = 'Shift-click desabilitado.';
var blnDesabilitadoShift = false;

//se não passar uma string como parâmetro, a string default é mantida.
function desabilitarShift(msg){

	if (msg)
		strMsgShift = msg;
	blnDesabilitadoShift = true;

}

function mouseDown(e) {
	var shiftPressed=0;
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape")
			shiftPressed=(e.modifiers-0>3);
		else shiftPressed=event.shiftKey;
		if (shiftPressed && blnDesabilitadoShift) {
			alert (strMsgShift);
			return false;
		}
	}
	return true;
}

if (parseInt(navigator.appVersion)>3) {
	document.onmousedown = mouseDown;
	if (navigator.appName=="Netscape") 
		document.captureEvents(Event.MOUSEDOWN); 
}



//-------------------------------------------------------------------------------------------------------
// Funcao que retorna Sim se a data de vencimento for maior ou igual que a data atual (Não caso contrário)
//-------------------------------------------------------------------------------------------------------


function dataVencimento(strData,Hoje)	
{
	var intDataHoje,intDataVencimento;
	
		
	intDataVencimento=parseInt(strData.substring(6,10) + strData.substring(3,5) + strData.substring(0,2));
	intDataHoje=parseInt(Hoje.substring(6,10) + Hoje.substring(3,5) + Hoje.substring(0,2));

	if(intDataVencimento<intDataHoje)
	{
		return 'Nao';
	}
	else
	{
		
		return 'Sim';
	}
	
}

//-------------------------------------------------------------------------------------------------------
// Funcao que retorna Sim se a verificação do preço estiver certa e não se estiver errada
//-------------------------------------------------------------------------------------------------------


function validaPreco(strPreco)	
{
	var intCont=0;
	
	for(i=0;i<strPreco.length;i++)
	{
		if(strPreco.charAt(i)==",")
		{
			if(intCont==0)
				intCont++;
			else
				return 'Nao';
		}
	}
	
	return 'Sim';
}

//-------------------------------------------------------------------------------------------------------
// Funcao que avisa que o campo está vazio
//-------------------------------------------------------------------------------------------------------

function valida_vazio()
{
	var output = "";
	var count = 0;
	var vazio = false;

	if (document.formulario.login.value == "")
	{
		count ++;
		output += count + ") O campo login está vazio. \n"
		vazio = true;	
			
	}


	if (document.formulario.senha.value == "")
	{
		count ++;
		output += count + ") O campo senha está vazio. \n"
		vazio = true;	
	}

	if (vazio)
	{	
		alert(output)
	}
	else
	{
		formulario.submit()		
	}	
		
}


//-------------------------------------------------------------------------------
// FUNÇÕES DE VERIFICACAO DE DATA E HORA
//-------------------------------------------------------------------------------


function verificaData(Data)
// Função que verifica se uma data é válida
// Do site: http://www.asp4developers.com.br/
 {
  var dma = -1;
  var data = Array(3);
  var ch = Data.charAt(0); 
  for(i=0; i < Data.length && (( ch >= '0' && ch <= '9' ) || ( ch == '/' && i != 0 ) ); ){
   data[++dma] = '';
   if(ch!='/' && i != 0) return false;
   if(i != 0 ) ch = Data.charAt(++i);
   if(ch=='0') ch = Data.charAt(++i);
   while( ch >= '0' && ch <= '9' ){
    data[dma] += ch;
    ch = Data.charAt(++i);
   } 
  }
  if(ch!='') return false;
  if(data[0] == '' || isNaN(data[0]) || parseInt(data[0]) < 1) return false;
  if(data[1] == '' || isNaN(data[1]) || parseInt(data[1]) < 1 || parseInt(data[1]) > 12) return false;
  if(data[2] == '' || isNaN(data[2]) || ((parseInt(data[2]) < 0 || parseInt(data[2]) > 99 ) && (parseInt(data[2]) < 1900 || parseInt(data[2]) > 9999))) return false;
  if(data[2] < 50) data[2] = parseInt(data[2]) + 2000;
  else if(data[2] < 100) data[2] = parseInt(data[2]) + 1900;
  switch(parseInt(data[1])){
   case 2: { if(((parseInt(data[2])%4!=0 || (parseInt(data[2])%100==0 && parseInt(data[2])%400!=0)) && parseInt(data[0]) > 28) || parseInt(data[0]) > 29 ) return false; break; }
   case 4: case 6: case 9: case 11: { if(parseInt(data[0]) > 30) return false; break;}
   default: { if(parseInt(data[0]) > 31) return false;}
  }
  return true; 
 }


//-------------------------------------------------------------------------------
// Função de validação da Hora
//-------------------------------------------------------------------------------

	function ValidateHourAlert(tempo)
	{
		 /*variável que armazenará a posição dos caracteres ':'ou ',' ou '.'*/
		i=-1;     
		for (j=0;j<tempo.value.length;j++)
		{
			c=tempo.value.charAt(j);
			if ((c==':') || (c==',') || (c=='.'))
			{
				if (i==-1)
					i=j;
				else
				{
					alert("Horário inválido.A hora não está no formato correto.");
					return (tempo.select());
				}
			}
			else
			{
				num=parseInt(c);
				if (isNaN(num))
				{
				     alert("Horário inválido.A hora não está no formato correto.");
					 return (tempo.select());
				}
			}
		}
		
		if (i==-1)		
		/*se não foi digitado nenhum dos caracteres de hora testados acima
		i vai receber a posição do fim da string*/
			i=tempo.value.length;
		/*se o caractere se hora foi colocado no inicio da string*/
		if (i==0)
			hour='0';
		else
		/*hour recebe a parte da string do início até o caractere de hora*/
			hour=tempo.value.substring(0,i);
		/*se foi digitado uma hora com mais de 2 caracteres informa o usuario*/
		if (hour.length>2)
		{
			alert("Horário inválido.A hora não está no formato correto.");
			return (tempo.select());
		}
		/*se a hora não está no intervalo correto informa usuario*/
		if ((hour<0) || (hour>23)) 
		{
			alert("Horário inválido. A hora varia no intervalo entre 0 e 23 h.");
			return (tempo.select());
		}
		/*se a hora só tem um digito acrescenta zero na frente*/
		if (hour.length==1)
			hour='0' + hour;
		/*se foi encontrado algum dos caracteres de hora*/
		if (i<tempo.value.length)
		{
				/*se o caractere é ',' or '.' transforma em ':'*/	
				if (c!=':') 
						c=':';
				hour+=c;	
				/*pega os minutos do caractere de hora até o final da string*/
				minutes=tempo.value.substring(i+1,tempo.value.length);
				/*se não foi colocado os minutos*/
				if (i+1==tempo.value.length)
					minutes='00';
				/*os minutos não podem ter mais de 2 algarismos*/
				if (minutes.length>2) 
				{
					   alert("Horário inválido.Os minutos não estão no formato correto.");
					   return (tempo.select());
				}	
				/*se os minutos só tem um algarismo completa com um zero*/
				if (minutes.length==1)
					minutes+='0';
				/*se os minutos não estam no intervalo correto informa usuario*/
				if ((minutes<0) || (minutes>59))
				{
					  alert("Horário inválido.Os minutos variam no intervalo entre 00 e 59 min.");
					  return  (tempo.select());
				}
				hour+=minutes;
				
		}
		/*senão: se não existe os caracteres ',' or ':' ou '.' demarcadores de hora completa com o que falta*/
		else 
			hour+=':00';


		tempo.value=hour;
		return (tempo.value);
	}


//-------------------------------------------------------------------------------
// ROTINA QUE TORNA HORAS VÁLIDAS
//-------------------------------------------------------------------------------
//Autor: Rafael Quintana
//Última Modificação: 01/03/2004
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//  Igual ao validate Hour da Verônica, só que naum mostra mensagem de erro com alert,
// apenas corrige as horas
//-------------------------------------------------------------------------------

	function ValidateHour(tempo)
	{
		 /*variável que armazenará a posição dos caracteres ':'ou ',' ou '.'*/
		i=-1;     
		for (j=0;j<tempo.value.length;j++)
		{
			c=tempo.value.charAt(j);
			if ((c==':') || (c==',') || (c=='.'))
			{
				if (i==-1)
					i=j;
				else
				{
					return (tempo.select());
				}
			}
			else
			{
				num=parseInt(c);
				if (isNaN(num))
				{
					 return (tempo.select());
				}
			}
		}
		
		if (i==-1)		
		/*se não foi digitado nenhum dos caracteres de hora testados acima
		i vai receber a posição do fim da string*/
			i=tempo.value.length;
		/*se o caractere se hora foi colocado no inicio da string*/
		if (i==0)
			hour='0';
		else
		/*hour recebe a parte da string do início até o caractere de hora*/
			hour=tempo.value.substring(0,i);
		/*se foi digitado uma hora com mais de 2 caracteres informa o usuario*/
		if (hour.length>2)
		{
			return (tempo.select());
		}
		/*se a hora não está no intervalo correto informa usuario*/
		if ((hour<0) || (hour>23)) 
		{
			return (tempo.select());
		}
		/*se a hora só tem um digito acrescenta zero na frente*/
		if (hour.length==1)
			hour='0' + hour;
		/*se foi encontrado algum dos caracteres de hora*/
		if (i<tempo.value.length)
		{
				/*se o caractere é ',' or '.' transforma em ':'*/	
				if (c!=':') 
						c=':';
				hour+=c;	
				/*pega os minutos do caractere de hora até o final da string*/
				minutes=tempo.value.substring(i+1,tempo.value.length);
				/*se não foi colocado os minutos*/
				if (i+1==tempo.value.length)
					minutes='00';
				/*os minutos não podem ter mais de 2 algarismos*/
				if (minutes.length>2) 
				{
					   return (tempo.select());
				}	
				/*se os minutos só tem um algarismo completa com um zero*/
				if (minutes.length==1)
					minutes+='0';
				/*se os minutos não estam no intervalo correto informa usuario*/
				if ((minutes<0) || (minutes>59))
				{
					  return  (tempo.select());
				}
				hour+=minutes;
				
		}
		/*senão: se não existe os caracteres ',' or ':' ou '.' demarcadores de hora completa com o que falta*/
		else 
			hour+=':00';


		tempo.value=hour;
		return (tempo.value);
	}



//-------------------------------------------------------------------------------
// Função que muda a data para yyyymmdd para que ela possa ser facilmente comparada com outra data
//-------------------------------------------------------------------------------

function dataParaInteiro(campo){

		var D1 = campo;
		var D2 = D1.replace(/(\d\d)\/(\d\d)\/(\d\d\d\d)/, '$3$2$1');
		var D2 = D1.split('/').reverse().join('');
		return D2;

}


//-------------------------------------------------------------------------------
// Faz limpeza de strings. Utilizada pela função de validação de campos obrigatorios
//-------------------------------------------------------------------------------

function limparstring(s)
   {

   while (s.search(" ")!=-1){
       s=s.replace(" ","");
   }
   return(s);
}



//-------------------------------------------------------------------------------
//Função Javascript que compara duas data no formato string e retorna <0 se a 1ª for menor, 0 se for igual e >0, se a primeira for maior
//-------------------------------------------------------------------------------

function comparadata(strData1, strData2){

  var strDia = new String;
  var strMes = new String;
  var strAno = new String;
  var intAno1 = 0, intDia1 = 0, intMes1 = 0;  
  var intAno2 = 0, intDia2 = 0, intMes2 = 0;

  strDia = strData1.charAt(0) + strData1.charAt(1);
  strMes = strData1.charAt(3) + strData1.charAt(4);
  strAno = strData1.charAt(6) + strData1.charAt(7) + strData1.charAt(8) + strData1.charAt(9);
  intDia1 = strDia;
  intMes1 = strMes;
  intAno1 = strAno;
  strDia = strData2.charAt(0) + strData2.charAt(1);
  strMes = strData2.charAt(3) + strData2.charAt(4);
  strAno = strData2.charAt(6) + strData2.charAt(7) + strData2.charAt(8) + strData2.charAt(9);
  intDia2 = strDia;
  intMes2 = strMes;
  intAno2 = strAno;

  //esses ifs fazem a comparação
  if (intAno1 > intAno2) {
    return(1);
  }	
  else if (intAno1 == intAno2){
    if (intMes1 > intMes2) {
      return(1);
    }
	else if (intMes1 == intMes2){
      if (intDia1 > intDia2) {
        return(1);
      }
	  else if (intDia1 == intDia2){
        return(0);
	  }	
	  else{
        return(-1);
      }
    }
	else{
      return(-1);
	}
  }
  else{
    return(-1);
  }

}//fim da função

//-------------------------------------------------------------------------------
//Função que analiza os radio buttons e retorna o valor do radio button escolhido, fundamental para validação de campos radio
//-------------------------------------------------------------------------------

function valorChecado(Campo){
  for(inti = 0 ; inti < Campo.length; inti++){
    if (Campo[inti].checked)
      return(Campo[inti].value);
  }
  return "";
}

//-------------------------------------------------------------------------------
//Função de validação para email
//-------------------------------------------------------------------------------

function verificaEmail(campo){
  
        return ( !( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(campo.value) )) ;
    
}


//-------------------------------------------------------------------------------
//Função para validação de numeros de telefone e fornatando-as no padrão ( XX ) XXXX - XXXX
//-------------------------------------------------------------------------------

function FormataTel(Campo,e)
{
	var keyCode;

    if(window.event)
         keyCode = window.event.keyCode;     //IE
    else
         keyCode = e.which;     //firefox
	
	if(window.event)
         ctrlKey = window.event.ctrlKey;     //IE
    else
         ctrlKey = e.ctrlKey;     //firefox
	
	
	// BackSpace ou TAB
	if (keyCode==8 || keyCode==9 || keyCode == 0 || ctrlKey==true) { return true; }
	
	
	
	var tam = Campo.value.length;

	if (((keyCode) >= 48 ) && ((keyCode) <= 57 ))
	{
		keyCode;
		
		if (tam == 0 ) 
		{
		Campo.value = Campo.value + "(";
		}
		
		if (tam == 3 ) 
		{
		Campo.value = Campo.value + ") ";
		}
		
		if (tam == 9 )
		{
		Campo.value = Campo.value + "-";
		}
	}
	else
	{
		if(window.event)
			event.keyCode = 0;     //IE
		else
			return false
			//e.which = 0;     //firefox
	}
}


//-------------------------------------------------------------------------------
//Função para formatar o CNPJ no padrão  XX.XXX.XXX/XXXX-XX
//-------------------------------------------------------------------------------

function FormataCnpj(Campo,e)
{
	var keyCode;

    if(window.event)
         keyCode = window.event.keyCode;     //IE
    else
         keyCode = e.which;     //firefox
	
	if(window.event)
         ctrlKey = window.event.ctrlKey;     //IE
    else
         ctrlKey = e.ctrlKey;     //firefox
	
	
	// BackSpace ou TAB
	if (keyCode==8 || keyCode==9 || keyCode == 0 || ctrlKey==true) { return true; }
	
	
	
	var tam = Campo.value.length;

	if (((keyCode) >= 48 ) && ((keyCode) <= 57 ))
	{
		keyCode;
		
		if ((tam == 2) || (tam == 6) ) 
		{
		Campo.value = Campo.value + ".";
		}
		
		if (tam == 10) 
		{
		Campo.value = Campo.value + "/";
		}
		
		if (tam == 15) 
		{
		Campo.value = Campo.value + "-";
		}
		
		
	}
	else
	{
		if(window.event)
			event.keyCode = 0;     //IE
		else
			return false
			//e.which = 0;     //firefox
	}
}


//-------------------------------------------------------------------------------
//Função para eliminar o excesso de espaços vazios no nome de uma string
//-------------------------------------------------------------------------------


function trim(sString) 
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	
	return sString;
}

/*-------------------------------------------------------------------------------
' FUNCAO PARA FORMATAR DATA NO FORMATO __/__/_____
'-------------------------------------------------------------------------------
*/

function FormataData(Campo,e)
{
	var keyCode;

    if(window.event)
         keyCode = window.event.keyCode;     //IE
    else
         keyCode = e.which;     //firefox
	

	if(window.event)
         ctrlKey = window.event.ctrlKey;     //IE
    else
         ctrlKey = e.ctrlKey;     //firefox
	
	// BackSpace ou TAB
	if (keyCode==8 || keyCode==9 || keyCode == 0 || ctrlKey==true) { return true; }
	
	
	var tam = Campo.value.length;

	if (((keyCode) >= 48 ) && ((keyCode) <= 57 ))
	{
		keyCode;
		
		if ((tam == 2 ) || (tam == 5))
		{
		Campo.value = Campo.value + "/";
		}
	}
	else
	{
		if(window.event)
			event.keyCode = 0;     //IE
		else
			return false
			//e.which = 0;     //firefox
	}
}

//-------------------------------------------------------------------------------
//Função para fornatar CPF no padrão XXX.XXX.XXX-XX
//-------------------------------------------------------------------------------

function FormataCPF(Campo,e)	
{
	var keyCode;

    if(window.event)
         keyCode = window.event.keyCode;     //IE
    else
         keyCode = e.which;     //firefox
	
	if(window.event)
         ctrlKey = window.event.ctrlKey;     //IE
    else
         ctrlKey = e.ctrlKey;     //firefox
	
	
	// BackSpace ou TAB
	if (keyCode==8 || keyCode==9 || keyCode == 0 || ctrlKey==true) { return true; }
	
	
	
	var tam = Campo.value.length;

	if (((keyCode) >= 48 ) && ((keyCode) <= 57 ))
	{
		keyCode;
		
		if ( (tam == 3 ) || (tam == 7 ) )
		{
		Campo.value = Campo.value + ".";
		}
		
		if (tam == 11 )
		{
		Campo.value = Campo.value + "-";
		}
	}
	else
	{
		if(window.event)
			event.keyCode = 0;     //IE
		else
			return false
			//e.which = 0;     //firefox
	}
}


/*-------------------------------------------------------------------------------
' Valida CPF
'-------------------------------------------------------------------------------
*/

   function validaCPF(parametro)
   {
   
	   var erro;
	
	   var cpf;

	    
	   if(parametro.length < 14)
	   {
	   	erro = true;
	   }
	   else
	   {	   
	   		cpf = parametro.replace('.', '');	
			cpf = cpf.replace('.', '');					
			cpf = cpf.replace('-', '');
			//alert(cpf);
                
                 if (cpf.length < 11) erro = true;
                 var nonNumbers = /\D/;
                 if (nonNumbers.test(cpf)) erro = true;
				 if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
					{
                       erro = true;
					}
               var a = [];
               var b = new Number;
               var c = 11;
               for (i=0; i<11; i++){
                       a[i] = cpf.charAt(i);
                       if (i < 9) b += (a[i] * --c);
               }
               if ((x = b % 11) < 2) 
				   { 
				   a[9] = 0 
				   } 
				   else 
					  { 
					   a[9] = 11-x 
					  }
               b = 0;
               c = 11;
               for (y=0; y<10; y++) b += (a[y] * c--);
               if ((x = b % 11) < 2) 
				   {
				     a[10] = 0;
				   } 
				   else 
					   {
					     a[10] = 11-x;
					   }
               if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]))
				   {
                       erro = true;
				   }
			   
			   
			   
	   }
	   return erro;

 	}
 
 /*-------------------------------------------------------------------------------
' Valida CNPJ
'-------------------------------------------------------------------------------
*/

 function validaCNPJ(parametro) {
                 CNPJ = parametro;
                 var erro = false;
                 if (CNPJ.length < 18) erro = true;
                 if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
                 if (erro.length == 0) erro = true;
                 }
                 //substituir os caracteres que não são números
               if(document.layers && parseInt(navigator.appVersion) == 4){
                       x = CNPJ.substring(0,2);
                       x += CNPJ. substring (3,6);
                       x += CNPJ. substring (7,10);
                       x += CNPJ. substring (11,15);
                       x += CNPJ. substring (16,18);
                       CNPJ = x;
               } else {
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace (".","");
                       CNPJ = CNPJ. replace ("-","");
                       CNPJ = CNPJ. replace ("/","");
               }
               var nonNumbers = /\D/;
               if (nonNumbers.test(CNPJ)) erro = true;
               var a = [];
               var b = new Number;
               var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
               for (i=0; i<12; i++){
                       a[i] = CNPJ.charAt(i);
                       b += a[i] * c[i+1];
 }
               if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
               b = 0;
               for (y=0; y<13; y++) {
                       b += (a[y] * c[y]);
               }
               if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
               if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro = true;
               }
               return erro;
       }


/*-------------------------------------------------------------------------------
' FUNCAO PARA FORMATAR EMAIL NO FORMATO @ejcm.com.br
'-------------------------------------------------------------------------------
*/

function FormataEmailEJCM(Campo,e)
{
	var keyCode;

    if(window.event)
         keyCode = window.event.keyCode;     //IE
    else
         keyCode = e.which;     //firefox
	

	if(window.event)
         ctrlKey = window.event.ctrlKey;     //IE
    else
         ctrlKey = e.ctrlKey;     //firefox
	
	
	// BackSpace ou TAB
	if (keyCode==8 || keyCode==9 || keyCode == 0 || ctrlKey==true) { return true; }
	
	
	var tam = Campo.value.length;

	if (keyCode == 64)
	{		
		Campo.value = Campo.value + "@ejcm.com.br";
		
		if(window.event)
			event.keyCode = 0;     //IE
		else
			return false
			//e.which = 0;     //firefox
	}

}
