/*<!---------------------------------------------------------------------------------------
<!--Programa	:	js_Funciones_Val.js
<!--Funcion		:	Paquete que contiene todas las funciones de validación de Datos
<!--Fecha		:	2004/01/15
<!--
<!--Fecha			Autor		Funcion
<!--2004/01/15		JBUP		FG_Val_Numero
<!--2004/01/15		LAGH		FG_Val_Mayor0
<!--2004/01/15		LAGH		FG_Val_Longitud
<!--2004/01/15		LAGH		FG_Val_Rango

<!---------------------------------------------------------------------------------------


<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Numero
<!--Funcion		:	Valida que el Valor Sea un Numero
<!--Parametros	:	ps_DatoAValidar
<!--Fecha		:	2004/01/15
<!--Autor		:	JBU
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Numero	(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima, ps_FlagObligatorio)
{
	var pi_Contador;
	var ps_Chr;

	if (ps_FlagObligatorio == 'N'){
			return (true);
	}
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == 'true')
		{
			pb_Respuesta = FG_Val_Longitud(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima);
			if (pb_Respuesta =='true')
			{
				for (pi_Contador = 0; pi_Contador < ps_DatoAValidar.length; pi_Contador+=1)
				{
					ps_Chr = ps_DatoAValidar.charAt(pi_Contador);
					if (ps_Chr > '9' || ps_Chr < '0')
					{
						pb_Respuesta = false;
					}
				}
			}
			else
			{
				return (false);
			}
		}
		else
		{
			return (false);
		}
	}

	if (pb_Respuesta == 'false')
	{
		alert("El dato digitado no corresponde a un Número");						
	}
	return (pb_Respuesta);
}

/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Decimal
<!--Funcion		:	Valida que el Valor Sea un Decimal
<!--Parametros	:	ps_DatoAValidar
<!--Fecha		:	2004/01/15
<!--Autor		:	JBU
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Decimal	(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima, ps_FlagObligatorio)
{
	var pi_Contador;
	var ps_Chr;

	if (ps_FlagObligatorio == 'N'){
		return (true);
	}	
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == 'true')
		{
			pb_Respuesta = FG_Val_Longitud(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima);
			if (pb_Respuesta == 'true')
			{
				for (pi_Contador = 0; pi_Contador < ps_DatoAValidar.length; pi_Contador+=1)
				{
					ps_Chr = ps_DatoAValidar.charAt(pi_Contador);
					if (ps_Chr > '9' || ps_Chr < '0')
					{
						if (ps_Chr == '.' || ps_Chr == ','){ 
 							pb_Respuesta = true;
 						}	
						else{
 							pb_Respuesta = false;
 						}	
					}
				}
			}
			else
			{
				pb_Respuesta = false;
			}
		}
		else
		{
			pb_Respuesta = false;
		}
	}

	if (pb_Respuesta == 'false')
	{
		alert("El dato digitado no corresponde a un Valor Decimal");						
	}
	return (pb_Respuesta);
}
/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Mayor0
<!--Funcion		:	Valida que el Valor Sea mayor que Cero
<!--Parametros	:	ps_DatoAValidar
<!--Fecha		:	2004/01/15
<!--Autor		:	LAGH
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Mayor0	(ps_DatoAValidar)
{
	var pn_Valor;

	pn_Valor = 0;
	if (FG_Val_Numero(ps_DatoAValidar))
	{
		pn_Valor = 	parseInt(ps_DatoAValidar);
		if (pn_Valor < 0)
		{
			return (false);
		}
		else
		{
			return (true);
		}
	}
	else{
		return (false);
	}	
}

/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Longitud
<!--Funcion		:	Valida que el Valor Sea mayor que Cero
<!--Parametros	:	Dato A Validar, Longitud Minima, Longitud Maxima
<!--Fecha		:	2004/01/15
<!--Autor		:	LAGH
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Longitud	(ps_DatoAValidar, pn_LongMinima, pn_LongMaxima)
{
	var pn_Longitud;
	pn_Longitud = ps_DatoAValidar.length;
	if (pn_Longitud > pn_LongMaxima || pn_Longitud < pn_LongMinima) 
	{	   
		pb_Respuesta = false;
	}
	else
	{	     
		pb_Respuesta = true;
	}
	if (pb_Respuesta == 'false')
	{
		alert("El campo no cumple con la Longitud Requerida, mínimo " + pn_LongMinima + " máximo " + pn_LongMaxima + " caracteres" );						
	}
	
	return (pb_Respuesta);

}
/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Rango
<!--Funcion		:	Valida que el Valor este dentro del Rango
<!--Parametros	:	Dato A Validar, Rango Minimo, Rango Maximo
<!--Fecha		:	2004/01/15
<!--Autor		:	LAGH
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Rango (ps_DatoAValidar, pn_RangoMinimo, pn_RangoMaximo)
{
	var pn_Valor;

	pn_Valor = 0;
	pn_Valor = parseInt(ps_DatoAValidar);

	if (pn_Valor > pn_RangoMaximo || pn_Valor < pn_RangoMinimo) 
	{	   
		pb_Respuesta = false;
	}
	else
	{	     
		pb_Respuesta = true;
	}
	if (pb_Respuesta == 'false')
	{
		alert("El contenido del campo " + ps_DatoAValidar + " no se encuentra dentro de los Valores de los Rangos, mínimo " + pn_RangoMinimo + " máximo " + pn_RangoMaximo);						
	}
	
	return (pb_Respuesta);
}
/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_NoNulo
<!--Funcion		:	Valida que el Valor tenga Datos
<!--Parametros	:	Dato A Validar
<!--Fecha		:	2004/01/15
<!--Autor		:	LAGH
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_NoNulo (ps_DatoAValidar)
{
	var pn_Longitud;
	pn_Longitud = 0;
	pn_Longitud = ps_DatoAValidar.length;
	if (pn_Longitud == 0) 
	{	   
		pb_Respuesta = false;
	}
	else
	{	     
		pb_Respuesta = true;
	}
	
	if (pb_Respuesta === false)
	{
		alert("El campo debe contener datos, es Requerido");						
	}
	
	return (pb_Respuesta);
}

/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Fecha
<!--Funcion		:	Valida que el formato de fecha sea el correcto
<!--Parametros	:	Dato A Validar
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Fecha (ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima, ps_FlagObligatorio)
{
	var Ls_separador = "-";   

	var pb_Respuesta;
	var pn_LngVar;

	if (ps_FlagObligatorio == 'N')
		return (true);
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == true)
		{
			pb_Respuesta = FG_Val_Longitud(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima);
			if (pb_Respuesta == true)
			{
	    		if (FG_Val_IsDate(ps_DatoAValidar,Ls_separador)  == 0)
    			{
					alert("El campo no es una Fecha, el formato de Entrada es: AAAA-MM-DD");						
					return(false);
	    		}
				else
					return (true);
			}
		}
	}
	return(pb_Respuesta);
}

function FG_Val_AnnoBisiesto(ps_Valor_a_Validar)
{
	if (ps_Valor_a_Validar % 100 == 0) 
	{
		if (ps_Valor_a_Validar % 400 == 0) 
		{ 
			return true; 
		}
	}
	else 
	{
		if ((ps_Valor_a_Validar % 4) == 0) 
		{ 
			return true; 
		}
	}
	return false;
}

function FG_Val_IsDate(ps_CadenaFecha ,ps_Separador)
{

	var Ls_fechaAno; 
	var Ls_fechaMes; 
	var Ls_fechaDia; 
	var Ls_valfebrero;

	Ls_fechaAno = 1;
	Ls_fechaMes = 1;
	Ls_fechaDia = 1;

	var Ls_ano;
	var Ls_mes;
	var Ls_dia;

	var ps_CadenaSplit;

	ps_CadenaSplit = ps_CadenaFecha.split(ps_Separador);

	Ls_ano = ps_CadenaSplit[0]
	Ls_mes = ps_CadenaSplit[1]
	Ls_dia = ps_CadenaSplit[2]

	if (Ls_ano >= "2004")
	{
		Ls_fechaAno = 1;
	}
	else
		return 0;

	if (Ls_mes >= "01" && Ls_mes <= "12")
	{
		Ls_fechaMes = 1;
	}
	else
		return 0;

	if (Ls_dia >= "01" && Ls_dia <= "31")
	{
		if (Ls_mes == "04" || Ls_mes == "06" || Ls_mes == "09" || Ls_mes == "11")
		{
			if (Ls_dia > "30")
			{
				Ls_fechaDia = 0;
			}
			else
			{
				Ls_fechaDia = 1;
			}
		}
		else
		{
			Ls_fechaDia = 1;
			
			if (FG_Val_AnnoBisiesto(Ls_ano) == true) 	//	ano bisiesto
			{
				if (Ls_mes == "02" && Ls_dia >"29")
				{
				    Ls_fechaAno = 0; 
					Ls_fechaMes = 0;
					Ls_fechaDia = 0;
				}
				else
					Ls_fechaDia = 1;
			}
		}
	}
	else
		Ls_fechaDia = 0;

	Ls_fechaAno = Ls_fechaAno + Ls_fechaMes + Ls_fechaDia;

	if (Ls_fechaAno == 3)
		return 1;
	else
		return 0;
}

/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Alfa
<!--Funcion		:	Valida que la cadena ingresada sea alfabética
<!--Parametros	:	Dato A Validar (string)
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Alfa (ps_DatoAValidar)
{
	var pi_Contador;
	var pn_Codigo;

	for (pi_Contador = 0; pi_Contador < ps_DatoAValidar.length; pi_Contador+=1)
	{
		pn_Codigo = ps_DatoAValidar.charCodeAt(pi_Contador);

		if (( pn_Codigo >= 65 && pn_Codigo <= 90 ) == true )
		{
		
		}
		else
		{
			if (( pn_Codigo >= 97 && pn_Codigo <= 122 ) == true )
			{
			}				
			else
			{	
				if (( pn_Codigo >= 48 && pn_Codigo <= 57 ) == true )
				{
				}
				else
				{
					if (( pn_Codigo == 32 ) == true)
					{
					}
					else
					{
						alert("El campo contiene caracteres no válidos");						
						return(false);
					}
				}
			}
		}

	}
	return (true);
 
}
/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_TexAlfa
<!--Funcion		:	Valida que el Dato sea un Texto
<!--Parametros	:	Dato A Validar (string), Longitud , Flag de obligatoriedad
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_TexAlfa (ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima, ps_FlagObligatorio)
{
	var pi_Contador;
	var pn_Codigo;
	var pb_Respuesta;

	if (ps_FlagObligatorio == 'N')
		return (true);
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == true)
		{
			pb_Respuesta = FG_Val_Alfa(ps_DatoAValidar);
			if (pb_Respuesta == true)
			{
				pb_Respuesta = FG_Val_Longitud(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima)
			}
		}
		return (pb_Respuesta);
	}
}

/*
<!------------------------------------------------------------------------------------>

<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Texto
<!--Funcion		:	Valida que el Dato sea un Texto
<!--Parametros	:	Dato A Validar (string), Longitud , Flag de obligatoriedad
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Texto (ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima, ps_FlagObligatorio)
{
	var pi_Contador;
	var pn_Codigo;
	var pb_Respuesta;
	
	if (ps_FlagObligatorio == 'N')
		return (true);
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == true)
		{
			pb_Respuesta = FG_Val_AlfaNum(ps_DatoAValidar);
			if (pb_Respuesta == true)
			{
				pb_Respuesta = FG_Val_Longitud(ps_DatoAValidar, pn_Longitud, pn_LongitudMaxima)
			}
		}
		return (pb_Respuesta);
	}
}

/*
<!------------------------------------------------------------------------------------>
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_AlfaNum
<!--Funcion		:	Valida que la cadena ingresada sea alfanumerica
<!--Parametros	:	Dato A Validar (string)
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_AlfaNum (ps_DatoAValidar)
{
	var pi_Contador;
	var pn_Codigo;

	for (pi_Contador = 0; pi_Contador < ps_DatoAValidar.length; pi_Contador+=1)
	{
		pn_Codigo = ps_DatoAValidar.charCodeAt(pi_Contador);
		if ((pn_Codigo >= 1 && pn_Codigo <= 255) == true)
		{
		}
		else
		{
			alert("El campo contiene caracteres no válidos");						
			return(false);
		}
	}
	return(true);
}


/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_Sino
<!--Funcion		:	Valida que el Dato sea un Texto
<!--Parametros	:	Dato A Validar (string), Longitud , Flag de obligatoriedad
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_Sino (ps_DatoAValidar, pn_Longitud, ps_FlagObligatorio)
{
	var pi_Contador;
	var pn_Codigo;
	var pb_Respuesta;

	if (ps_FlagObligatorio == 'N')
		return (true);
	else
	{
		pb_Respuesta = FG_Val_NoNulo(ps_DatoAValidar);
		if (pb_Respuesta == true)
		{
			pb_Respuesta = FG_Val_Alfa (ps_DatoAValidar);
			if (pb_Respuesta == true)
			{
				if (ps_DatoAValidar.toUpperCase() == 'SI' || ps_DatoAValidar.toUpperCase() == 'NO')  
					return (true);
				else
				{
					alert("Los valores válidos para este campos son: SI ó NO");						
					return (false);
				}
			}
		}
		return (pb_Respuesta);
	}
}

/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_ValRaiz
<!--Funcion		:	Valida que que la cadena especificada tenga los caracteres de 
<!--                posición de directorio raiz estén adecuadamente
<!--Parametros	:	Dato A Validar (string)
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_MensajeOPBD (ps_Mensaje)
{
alert(ps_Mensaje);
}


/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_Val_chrCarga
<!--Funcion		:	Valida que la cadena del nombre de archivo tenga los caracteres
<!--                básicos de un nombre de archivo           
<!--Parametros	:	Dato A Validar
<!--Fecha		:	2004/02/25
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_Val_chrCarga (ps_DatoAValidar)
{
	var pb_RaizOk;  // determina la existencia  y la correcta ubicacion del ":\" 
	var pn_posLastBslash; // es la posición del último backslash
	var ps_Narchivo; // es el nombre del archivo
	var pn_longNarchivo; // es la longitud del nombre del archivo
	var ps_slash;
	var pn_contador;
        var pn_puntoExtension;
        var ps_Extension;
		var ps_Respuesta;
     
	pn_posRaiz = 0;
	pn_posLastBslash = 0;
  	pn_longNarchivo = 0;
	ps_Narchivo = ' ';
	  
    pb_RaizOk  = FG_ValRaiz(ps_DatoAValidar);
		
	if (pb_RaizOk != "0" )
	{
	  pn_posLastBslash =  ps_DatoAValidar.lastIndexOf(pb_RaizOk);
	  ps_Narchivo       = ps_DatoAValidar.substring(pn_posLastBslash+1,ps_DatoAValidar.length);
	  pn_longNarchivo   = ps_Narchivo.length;

          pn_puntoExtension = ps_Narchivo.lastIndexOf(".");

          ps_Extension = ps_Narchivo.substring(pn_puntoExtension+1,pn_longNarchivo);

	  if ( pn_longNarchivo == 0 )
		     {  
			   alert("El nombre del archivo no puede ser nulo");
			   return (false); // cadena de nombre de archivo no puede ser nula			   
		     }
			 else
			 {	    
			 
			     switch (ps_Extension)
			     {
				  case "lst":
				        ps_Respuesta = true;
						break;			  
			      case "LST":
				        ps_Respuesta = true;
						break;
				  case "TXT":
				        ps_Respuesta = true;
						break;			  
			      case "txt":
				        ps_Respuesta = true;
						break;
				   default:
				         if (ps_Extension.length != 0)
						 {
						  alert("Extension del archivo inválida");
					      ps_Respuesta = false;
						  break;
						 }
						 else
						    ps_Respuesta = true;   
							                                     			               					 
				}
			 return (ps_Respuesta);
			 }
	}
	else
	    {
		 alert("Ruta de Archivo es requerida");
	     return (false);// Hay problemas con el directorio raiz
	    }		
  return (true);
}
/*
<!-------------------------------------------------------------------------------------
<!--Programa	:	FG_ValRaiz
<!--Funcion		:	Valida que que la cadena especificada tenga los caracteres de 
<!--                posición de directorio raiz estén adecuadamente
<!--Parametros	:	Dato A Validar (string)
<!--Fecha		:	2004/01/15
<!--Autor		:	JBUP
<!----------------------------------------------------------------------------------------->
*/
function	FG_ValRaiz (ps_DatoAValidar)
{

	var pi_indiceSlash;
	var pi_indiceddot;
	var pn_Codigo;
	var ps_charac;
	
	pi_indiceSlash = 2;
	pi_indiceddot = 1;
	
	pn_Codigo = ps_DatoAValidar.charCodeAt(pi_indiceddot);
		
    if (pn_Codigo == 58)
	   {
		pn_Codigo = ps_DatoAValidar.charCodeAt(pi_indiceSlash);
		if (pn_Codigo == 92)
		   {		            
			return (ps_DatoAValidar.charAt(pi_indiceSlash));
		   }
		    else
			    {
			     return ("0");
				}
	   }
	   else
		  {
		   return ("0");
		  }		
}
