//*******************************************************************************
//Resumen
//*******************************************************************************
//Este archivo contiene todas las rutinas asociadas con la validación (Ej. fechas y 
//horas) para ser usadas tanto en el ingreso de formularios como en otras
//funciones.

//****************************************************************
//Funciones
//****************************************************************
//IsDate(s)
//Verifica si el  valor s (cadena) es una fecha valida.
//Mes(i)
//Retorna el mes actual en letras de acuerdo al valor de i (entero).

//*****************************************
//Definición de Constantes
//******************************************

var digitos="0123456789"; //dígitos numéricos
var DiasDelMes = new Array(12); 
DiasDelMes[1]=31;
DiasDelMes[2]=29; //esto debe checkearse mediante programa
DiasDelMes[3]=31;
DiasDelMes[4]=30;
DiasDelMes[5]=31;
DiasDelMes[6]=30;
DiasDelMes[7]=31;
DiasDelMes[8]=31;
DiasDelMes[9]=30;
DiasDelMes[10]=31;
DiasDelMes[11]=30;
DiasDelMes[12]=31;

//******************************************************************
//Cuerpo de las funciones
//******************************************************************

function IsDate(s) 
{
/*
Autor : Miguel Chavez 
Creado : 11/10/1999
Modificado : 12/12/1999
Descripción : Verifica si el  valor s (cadena) es una fecha valida.
*/

var dia;
var mes;
var anio;

anio = parseInt(s.substr(6,4),10);
mes = parseInt(s.substr(3,2),10);
dia = parseInt(s.substr(0,2),10);

if (s.length == 10)
    //Si es un año valido
    if (anio > 1900)
        //Si es un mes valido
        if((mes > 0)&&(mes < 13))
            //Si es un dia valido
            if((dia > 0 )&&(dia < 32 ))
                //Si es mes de febrero
                if(mes == 2)
                    //Si es mes de febrero con 29 dias
                    //Febrero tiene 29 dias en cualquier año que sea multiplo de 4,
                    //excepto los años centenarios ademas de divisibles por 400
                    if((anio % 4 == 0)&&((!(anio % 100 == 0))||(anio % 400 == 0)))
                        //Si esta en el rango[1-29]
                        if((dia > 0)&&(dia < 30))
                            return true;
                        else
                            return false;
                    else
                        //Si esta en el rango[1-28]
                        if((dia > 0)&&(dia < 29))
                            return true;
                        else
                            return false;
                else
                    //Rango de numero de dias permitido para los demas meses
                    
                    if((dia > 0) && (dia<=DiasDelMes[mes]))
                        return true;
                    else
                        return false;
            else
                return false;
        else
            return false;
    else
        return false;
else
    return false;
}

function Upper()
/*
Autor        :    Jeffrey Rosas
Creado        :    11/10/1999
Modificado    :    11/10/1999
Descripcion    :    Convierte a mayusculas las teclas pulsadas.
*/
    {
    if(String.fromCharCode(window.event.keyCode)>="a"&&String.fromCharCode(window.event.keyCode)<="z")
        {
        window.event.keyCode = window.event.keyCode - 32;
        }
    }

function InLineValidDate()
{
/*
Autor        :    Jeffrey Rosas
Creado        :    01/11/1999
Modificado    :    01/11/1999
Descripcion    :    Valida en linea el ingreso de caracteres en campos tipo fecha.
*/

if(window.event.keyCode!=13)
    {
    var Tecla;
    Tecla = String.fromCharCode(window.event.keyCode);
    if ( !((Tecla>="0"&&Tecla<="9")||(Tecla=="/")) )
        {
        window.event.keyCode = 0;
        }
    }    
}

function InLineValidTime()
{
/*
Autor        :    Jeffrey Rosas
Creado        :    01/11/1999
Modificado    :    01/11/1999
Descripcion    :    Valida en linea el ingreso de caracteres en campos tipo Hora.
*/

if(window.event.keyCode!=13)
    {
    var Tecla;
    Tecla = String.fromCharCode(window.event.keyCode);
    if ( !((Tecla>="0"&&Tecla<="9")||(Tecla==":")) )
        {
        window.event.keyCode = 0;
        }
    }
}

function IsTime(cTime)
{
/*
Autor        :    Jeffrey Rosas
Creado        :    01/11/1999
Modificado    :    01/11/1999
Descripcion    :    Verifica si el parametro ingresado es una Hora Valida (formato 24 horas).
*/

var horas;
var minutos;

    if (cTime.length!=5)
        return false;
    else
        {
        horas = parseInt(cTime.substr(0,2));
        minutos = parseInt(cTime.substr(3,2));
        if (!(horas<24&&minutos<60&&cTime.substr(2,1)==":"))
            return false;
        else
            return true;
        }
}

function SoloNumeros()
{
/*
Autor        :    Jeffrey Rosas
Creado        :    01/11/1999
Modificado    :    01/11/1999
Descripcion    :    Permite el ingreso unicamente de Numeros.
*/

if(window.event.keyCode!=13)
    {
    var Tecla;
    Tecla = String.fromCharCode(window.event.keyCode);
    if ( !(Tecla>="0"&&Tecla<="9") )
        {
        window.event.keyCode = 0;
        }
    }
}

function SoloLetras()
{
/*
Autor        :    Jeffrey Rosas
Creado        :    01/11/1999
Modificado    :    01/11/1999
Descripcion    :    Permite el ingreso de unicamente de Letras y Espacios.
*/

if(window.event.keyCode!=13)
    {
    var Tecla;
    Tecla = String.fromCharCode(window.event.keyCode);
    if (!((Tecla<="Z"&&Tecla>="A")||(Tecla<="z"&&Tecla>="a")||(Tecla==" ")))
        {
        window.event.keyCode = 0;
        }
    }    
}

function Inhabilitado()
{
  window.event.keyCode = 0; 
}

function IsNumeric(ch){
    /*
    Autor        :    Dixan Martinez
    Creado        :    26/11/1999
    Modificado    :    26/11/1999
    Descripcion    :    Devuelve true si ch es digito
    */    
    return  (ch>="0" && ch<="9") == true;
}

function IsLetter(ch){
    /*
    Autor        :    Dixan Martinez
    Creado        :    26/11/1999
    Modificado    :    26/11/1999
    Descripcion    :    Devuelve true si ch es letra
    */    
    return ( (  (ch>='a') && (ch<='z') ) || ((ch>='A') && (ch<='Z') ) ||
         (ch=='ñ') || (ch=='Ñ') ) == true;
}

function IsBS(ch){
    /*
    Autor        :    Dixan Martinez
    Creado        :    26/11/1999
    Modificado    :    26/11/1999
    Descripcion    :    Devuelve true si ch es letra
    */
    return ( ch==' ' ) == true;

}

function checkEmail(fld)
{ // simple email check
  if(!fld.value.length) return true; // blank fields are the domain of requireValue 
  var emailfmt= /^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,8}$/;
  if(!emailfmt.test(fld.value))
  { status= 'El campo Email debe contener una dirección valida.'; return false; }
  return true;
}

function NumerosYLetras(){
/*
Autor        :    Dixan Martinez
Creado        :    26/11/1999
Modificado    :    26/11/1999
Descripcion    :    Permite el ingreso de unicamente de numeros y puntos (para IP)
*/

    if(window.event.keyCode!=13)
    {
        var Tecla;
        Tecla = String.fromCharCode(window.event.keyCode);
        if ( (!IsNumeric( Tecla )) && (!IsLetter( Tecla ))  )
            window.event.keyCode = 0;
    }    
}
function NumerosYLetrasYEspacios()
{
    if(window.event.keyCode!=13)
    {
        var Tecla;
        Tecla = String.fromCharCode(window.event.keyCode);
        if ( (!IsNumeric( Tecla )) && (!IsLetter( Tecla )) && (!IsBS( Tecla )) )
            window.event.keyCode = 0;
    }
}

function NumerosYPunto(){
/*
Autor        :    Dixan Martinez
Creado        :    26/11/1999
Modificado    :    26/11/1999
Descripcion    :    Permite el ingreso de unicamente de numeros y puntos (para IP)
*/
    if(window.event.keyCode!=13){
        var Tecla;
        Tecla = String.fromCharCode(window.event.keyCode);
        if ( !IsNumeric( Tecla ) && (Tecla != ".") )
            window.event.keyCode = 0;
    }    
}

function NumerosYGuiones(){
/*
Autor        :    Dixan Martinez
Creado        :    26/11/1999
Modificado    :    26/11/1999
Descripcion    :    Permite el ingreso de unicamente de numeros y puntos (para IP)
*/
    if(window.event.keyCode!=13){
        var Tecla;
        Tecla = String.fromCharCode(window.event.keyCode);
        if ( !IsNumeric( Tecla ) && (Tecla != "-") )
            window.event.keyCode = 0;
    }    
}

function Mostrar(divName)
{
/*
Autor        :    Jeffrey Rosas
Creado        :    21/10/1999
Modificado    :    21/10/1999
Descripcion    :    Muestra la division de nombre <divName>.
*/
var newDiv;
newDiv = eval('document.all.'+ divName);
newDiv.style.visibility = 'visible';
}

function Ocultar(divName)
{
/*
Autor        :    Jeffrey Rosas
Creado        :    21/10/1999
Modificado    :    21/10/1999
Descripcion    :    Oculta la division de nombre <divName>.
*/
var newDiv;
newDiv = eval('document.all.'+ divName);
newDiv.style.visibility = 'hidden';
}

function ValidaUnidadOrganica()
{
/*
Autor        :    Alberto Rodriguez Grados
Creado        :    24/11/1999
Modificado    :    24/11/1999
Descripcion    :    Valida en linea el ingreso de caracteres en el campo Unidad_Organica.
*/
if(window.event.keyCode!=13)
    {
    var Tecla;
    Tecla = String.fromCharCode(window.event.keyCode);
    if ( !((Tecla>="0"&&Tecla<="9")||(Tecla==".")) )
        {
        window.event.keyCode = 0;
        }
    }
}

function MesActual()
{
/*
Autor        :    Claudio Zarate
Creado        :    30/11/1999
Modificado    :    30/11/1999
Descripcion    :    Devuelve el mes de la Fecha Actual en numero.
*/
var Mes;
var FechaActual = new Date();
Mes = (FechaActual.getMonth() + 1);
return(Mes);
}

function AnioActual()
{
/*
Autor        :    Claudio Zarate
Creado        :    30/11/1999
Modificado    :    30/11/1999
Descripcion    :    Devuelve el anio de la Fecha Actual.
*/
var Anio;
var AnioActual = new Date();
Anio = AnioActual.getFullYear();
return(Anio);
}

function FechaHoy()
{
/*
Autor        :    Claudio Zarate
Creado        :    10/12/1999
Modificado    :    10/12/1999
Descripcion    :    Devuelve la fecha de hoy en formato dd/mm/yyyy.
*/
var Fecha;
var Dia;
var Mes;
var FechaHoy;

var Fecha = new Date();
Dia = Fecha.getDate();
Mes = Fecha.getMonth()+1;

if (Dia<=9){
   Dia = "0"+Dia;
}
if (Mes<=9){
   Mes = "0"+Mes;
}

FechaHoy = Dia + "/" + Mes + "/" + Fecha.getFullYear();
return(FechaHoy);
}


function ValidaFechas(FechaInicio,FechaFin)
{
/*
Autor        :    Claudio Zarate
Creado        :    30/11/1999
Modificado    :    30/11/1999
Descripcion    :    Valida un rango de fechas.
*/

    var diaInicio;
    var mesInicio;
    var anioInicio;
    var diaFin;
    var mesFin;
    var anioFin;

    anioInicio = parseInt(FechaInicio.substr(6,4),10);
    mesInicio = parseInt(FechaInicio.substr(3,2),10);
    diaInicio = parseInt(FechaInicio.substr(0,2),10);
    
    anioFin = parseInt(FechaFin.substr(6,4),10);
    mesFin = parseInt(FechaFin.substr(3,2),10);
    diaFin = parseInt(FechaFin.substr(0,2),10);

    return  (diaInicio<=diaFin) && (mesInicio<=mesFin) &&
             (anioInicio<=anioFin);
}


function FechaMayor(valor1,valor2)
/*
Autor        :    Alberto Rodríguez
Creado        :    11/12/1999
Modificado    :    11/12/1999
Descripcion    :    verifica si la primera fecha (valor1) es mayor a la segunda (valor2).
                Devuelve un valor booleano <true o false>.
*/
{
    var fecha1=valor1.substr(6,4) + valor1.substr(3,2) + valor1.substr(0,2);
    var fecha2=valor2.substr(6,4) + valor2.substr(3,2) + valor2.substr(0,2);

    return fecha1>fecha2;
        
}

//****************************************************************
//ReturnKeyPressed()
//Verifica si la tecla presionada fue retornola de retorno

//
//

function ReturnKeyPressed() {
/*    Autor: Dixan */
  var key;
    key= window.event.keyCode;
    if (key == 13)
    {
        window.event.keyCode = 0;
        window.event.returnValue=false;
    }
    return     key == 13;
}

/*aumentado el 08-03-2000*/
function keyvalidafecha(ob){
    var x=window.event.keyCode;
    InLineValidDate();
    if (x==13) 
    {
        window.event.keyCode = 0;
        window.event.returnValue=false;
        return;
    }
    var fecha
    if (window.event.keyCode!=8){
    
    if (x==47){
        if (ob.value.length==0){
            window.event.keyCode = 0;
            window.event.returnValue=false;
        }
        if (ob.value.length==1){
            fecha=ob.value
            ob.value="0"+fecha+"/"
            window.event.returnValue=false;
        }
        if (ob.value.length==3){
            window.event.keyCode = 0;
            window.event.returnValue=false;
        }
        if (ob.value.length==4){
            fecha=ob.value
            ob.value=fecha.substr(0,3)+"0"+fecha.substr(3,1)+"/"
            window.event.returnValue=false;
        }
        if(ob.value.length>5){
            window.event.keyCode = 0;
            window.event.returnValue=false;
        }
        return;
    }
    
        if(ob.value.length==1){
            fecha=ob.value
            ob.value=fecha + String.fromCharCode(window.event.keyCode) +"/"
            window.event.returnValue=0;
        }
        if(ob.value.length==4){
            fecha=ob.value
            ob.value=fecha + String.fromCharCode(window.event.keyCode) +"/"
            window.event.returnValue=0;
        }
    }
}
