
function isDate(Cadena)
{   
    var Fecha= new String(Cadena)   // Crea un string  
    //alert('isDate: cadena: ' + Cadena) 
    var RealFecha= new Date()   // Para sacar la fecha de hoy   
    // Cadena A\u00f1o   
    var Ano= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length))   
    //alert('isDate: Ano: ' + Ano) 
    // Cadena Mes   
    var Mes= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")))   
    //alert('isDate: Mes: ' + Mes) 
    // Cadena D\u00eda   
    var Dia= new String(Fecha.substring(0,Fecha.indexOf("/")))   
    //alert('isDate: Dia: ' + Dia) 
  
    // Valido el a\u00f1o   
    if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1980){   
            //alert('A\u00f1o inv\u00e1lido')   
        return false   
    }   
    // Valido el Mes   
    if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){   
        //alert('Mes inv\u00e1lido')   
        return false   
    }   
    // Valido el Dia   
    if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){   
        //alert('D\u00eda inv\u00e1lido')   
        return false   
    }
     
    // meses que terminan en 31 dias
    if (Mes == 1 || Mes == 3 || Mes == 5 || Mes == 7 || Mes == 8 || Mes == 10 || Mes == 12)
    {
        if (Dia < 1 && Dia > 31)
        {
            //alert('Dia de mes: ' + Mes + ' inv\u00e1lido');
            return false
        }
    }
    //meses que terminan en 30 dias
    if (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 7 || Mes == 11)
    {
        if (Dia < 1 && Dia > 30)
        {
            //alert('Dia de mes: ' + Mes + ' inv\u00e1lido');
            return false;
        }
    }
	
	
	if (esBisiesto(Ano))
    {
        if (Mes== 2)
        {
            if (Dia > 29)
                {
                    //alert('Dia de mes: ' + Mes + ' inv\u00e1lido porque es bisiesto y no puede ser mayor a 29');
                    return false;
                }
        }
    }
    else
    {
        if (Mes == 2)
        {
            if (Dia > 28)
            {
                //alert('Dia de mes: ' + Mes + ' inv\u00e1lido porque no es bisiesto y no puede ser mayor a 28');
                return false;
            }
        }
    }
	
    
    //alert("Fecha correcta.")   
    return true   
     
  
}   
  

function esBisiesto(ano)
{
    if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0)))
    {
        return true
    }
    else
    {
        return false 
    }
}

       
       
       
