Ciao a tutti ho bisogno di una funzione che controlla se la data è una data vera oppure no.

ho trovato uno script però funziona in parte perchè se si scrive 56/1/2010 es l'accetta lo stesso.
So potrei fare in modo che il giorno non superi i 31 ed il mese non superi il 12 però non so come fare per controllare l'esatezza della data perchè in questo modo se scrivo 30/2/2010 verrebbe lo stesso accettata. Non so nemmeno gestirmi con l'anno bisestile.
Qualcuno mi sa dare un aiuto?
codice:
function IsDate(txtDate)
{
	strData = Trim(txtDate);
	
	var stringa = Split(txtDate, "-");
	var giorno = stringa[0];
	var mese = stringa[1];
	var anno = stringa[2];
	
	if(giorno.length==1)
		giorno = "0"+giorno;
	
	if(mese.length==1)
		mese = "0"+mese;
	
	txtDate = giorno +"/" + mese +"/" + anno
	
	txtDate = Trim(txtDate);
	alert("*" +txtDate+ "*")

    try
    {
        if (txtDate.length != 10)
        {
            return null;
        }
        else if
             (
                 isNaN(txtDate.substring(0, 2))       ||
                       txtDate.substring(2, 3) != "/" ||
                 isNaN(txtDate.substring(3, 5))       ||
                       txtDate.substring(5, 6) != "/" ||
                 isNaN(txtDate.substring(6, 15))
             )
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    catch (e)
    {
        return null;
    }
}