// Objetivo				: Funções de formatação de hora
// Autor				: Mauricio Bumba
// Data					: 01/06/2006
// Comentários			: Feitas melhorias diversas na antiga FormataHora.js
// Alterado por			:
// Data					:
// Motivo da alteração	:
// Componentes usados	:
// Premissas			: 
// Entradas				: 
// Retorno				:

/*********************************************************************************************************
// Objetivo : Formata a hora no formato hh:mm:ss
// Premissas : 
// Entradas : valor do text em questao (this)
// Saídas : nenhuma
*********************************************************************************************************/
function FormataHoraComp(objCampo) 
{
	var intTecla = event.keyCode; //Código ASCII da tecla pressionada
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	if (!ValidaDigitoInteiro(strTecla)){
		event.returnValue = false;
		return false;
	}

	if (objCampo.value.length == 0)
	{
                //alert(objCampo.EditaCampo);
		objCampo.EditaCampo=true;		
	}

	

    	if (objCampo.value.length == 7)
	{
		//document.writeln(objCampo.value.indexOf(":"));					
		if (objCampo.value.lastIndexOf(":") == 2)
		{
		objCampo.EditaCampo=true;
		}
		else
		{
			if (objCampo.value.indexOf(":") >= 3)
			{
			objCampo.EditaCampo=true;
			}
			else
			{
			objCampo.EditaCampo=false;
			}
		}
	}

  if (objCampo.EditaCampo == true) 
  {	
	vntValor = objCampo.value;
	vntValor = vntValor.replace( ".", "" );
	vntValor = vntValor.replace( ":", "" );
	vntValor = vntValor.replace( ":", "" );
	lngTamanho = vntValor.length + 1;

	if ( intTecla != 9 && intTecla != 8 )
	{
		if ( lngTamanho > 2 && lngTamanho < 5 )
			objCampo.value = vntValor.substr( 0, lngTamanho - 2  ) + ':' + vntValor.substr( lngTamanho - 2, lngTamanho );
		if ( lngTamanho >= 5 && lngTamanho <= 8 )
			objCampo.value = vntValor.substr( 0, 2 ) + ':' + vntValor.substr( 2, 2 ) + ':' + vntValor.substr( 4, 2 ); 
	}
  }  
  else 
  {
	lngTamanho = objCampo.value.length+1;	
	if (lngTamanho == 3 )
    		objCampo.EditaCampo=true;
        if (lngTamanho == 6 )
   		objCampo.EditaCampo=true;
  }
}


/*********************************************************************************************************
// Objetivo : Formata a hora no formato hh:mm:ss
// Premissas : 
// Entradas : valor do text em questao (this)
// Saídas : nenhuma
*********************************************************************************************************/
function FormataHoraSimp(objCampo) 
{
	var intTecla = event.keyCode; //Código ASCII da tecla pressionada
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	if (!ValidaDigitoInteiro(strTecla)){
		event.returnValue = false;
		return false;
	}

	if (objCampo.value.length == 0)
	{
                //alert(objCampo.EditaCampo);
		objCampo.EditaCampo=true;		
	}

	

    	if (objCampo.value.length == 4)
	{
		//document.writeln(objCampo.value.indexOf(":"));		
		//alert(objCampo.value.lastIndexOf(":"));
		if (objCampo.value.lastIndexOf(":") == -1)
		{
		objCampo.EditaCampo=true;
		}
		else
		{
		objCampo.EditaCampo=false;		
		}
	}

  if (objCampo.EditaCampo == true) 
  {	
	vntValor = objCampo.value;
	vntValor = vntValor.replace( ".", "" );
	vntValor = vntValor.replace( ":", "" );
	vntValor = vntValor.replace( ":", "" );
	lngTamanho = vntValor.length + 1;

	if ( intTecla != 9 && intTecla != 8 )
	{
		objCampo.value = vntValor.substr( 0, 2 ) + ':' + vntValor.substr( 2, 2 );
		
	}
  }  
  else 
  {
	lngTamanho = objCampo.value.length+1;	
	if (lngTamanho == 3 )
    		objCampo.EditaCampo=true;        
  }
}


// Objetivo : Formata a data conforme o usuário digita os valores no text
// Premissas : 
// Entradas : valor do text (this)
// Saídas : alert indicando o erro da data
function ValidaHora() 
{
	var strMascaraHora = "00:00:00" //Máscara de formatação para hora longa
	var dtmPat = /^(\d{1,2})(\:|-)(\d{1,2})\2(\d{1,2})$/; //Expressão regular para validação de hora longa
	var arrMatch; //Array que armazena hora, minuto e segundo em cada uma das posições
	
	strHora = event.srcElement.value;
	//Se o tamanho da hora menor que 8, complementa com a máscara
	if (strHora.length > 0){
		strHora += strMascaraHora.substr(strHora.length);
	}
	else{
		return;
	}

	arrMatch = strHora.match(dtmPat); 

	if (arrMatch == null) 
	{
		alert("Formato de hora invalido.")
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	else	
	{
		intHora = arrMatch[1]; 
		if (intHora.length==1)
			intHora = '0' + intHora;						
		intMin = arrMatch[3];
		if (intMin.length==1)
			intMin = '0' + intMin;
		intSeg = arrMatch[4];
		if (intHora < 0 || intHora > 23) 
		{
			alert("Hora inválida.");
			event.srcElement.focus();
			event.srcElement.select();
			return;
		}
		if (intMin < 0 || intMin > 59) 
		{ 
			alert("Hora inválida.");
			event.srcElement.focus();
			event.srcElement.select();
			return;
		}
		if (intSeg < 0 || intSeg >59)
		{
			alert("Hora inválida.");
			event.srcElement.focus();
			event.srcElement.select();
			return;
		}


	}		
	event.srcElement.value = intHora + ':' + intMin + ':' + intSeg; 	
	return true;
}

// Objetivo : Formata a data conforme o usuário digita os valores no text
// Premissas : 
// Entradas : valor do text (this)
// Saídas : alert indicando o erro da data
function ValidaHoraSimp() 
{
	var strMascaraHora = "00:00" //Máscara de validação de hora curta
	var dtmPat = /^(\d{1,2})(\:|-)(\d{1,2})$/; //Expressão regular para validação de hora curta
	var arrMatch; //Array que armazena hora e minuto em suas posições
	
	strHora = event.srcElement.value;
	//Se o tamanho da hora menor que 6, complementa com a máscara
	if (strHora.length > 0){
		strHora += strMascaraHora.substr(strHora.length);
	}
	else{
		return;
	}
	
	arrMatch = strHora.match(dtmPat); 

	if (arrMatch == null) 
	{
		alert("Formato de hora invalido.")
		event.srcElement.focus();
		event.srcElement.select();
		return;
	}
	else	
	{
		intHora = arrMatch[1]; 
		if (intHora.length==1)
			intHora = '0' + intHora;						
		intMin = arrMatch[3];
		if (intMin.length==1)
			intMin = '0' + intMin;
		
		if (intHora < 0 || intHora > 23) 
		{
			alert("Hora inválida.");
			event.srcElement.focus();
			event.srcElement.select();
			return;
		}
		if (intMin < 0 || intMin > 59) 
		{ 
			alert("Hora inválida.");
			event.srcElement.focus();
			event.srcElement.select();
			return;
		}
	}		
	event.srcElement.value = intHora + ':' + intMin	
	return true;
}

// Objetivo : Inicializa flag de controle
// Premissas :
// Entradas : valor do text em questao (this)
// Saídas : nenhuma
function SetarEvento(objCampo)
{
	if (objCampo.value.length == 0)
	{
		objCampo.EditaCampo=true;
	}
	else
	{
		objCampo.EditaCampo=false;
	}
}