function sprawdzDate(pole) {
    var miesiac, dzien, rok;
    var dana = pole.value;
    var re = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    if (re.test(dana)) {
        var znakRozdz = (dana.indexOf("/") != -1) ? "/" : "-";
        var rozdziel1 = dana.indexOf(znakRozdz);
        var rozdziel2 = dana.lastIndexOf(znakRozdz);
        miesiac = parseInt(dana.substring(0, rozdziel1), 10);
        dzien = parseInt(dana.substring(rozdziel1+1, rozdziel2), 10);
        rok = parseInt(dana.substring(rozdziel2+1), 10);
        var testowanaData = new Date(rok, miesiac-1, dzien);
        alert(testowanaData)
        if (testowanaData.getDate() == dzien) {
            if (testowanaData.getMonth() + 1 == miesiac) {
                if (testowanaData.getFullYear() == rok) {
                    return true;
                } else {
                    alert("Istnieje problem z podanym rokiem.");
                }
            } else {
                alert("Istnieje problem z podanym miesicem.");
            }
        } else {
            alert("Istnieje problem z podanym dniem.");
        }
    } else {
        alert("Bdny format zapisu daty. Zapisz dat w postaci mm/dd/yyyy.");
    }
    return false;
}

function weryfikacjaDaty(pole) {
    if (!sprawdzDate(pole)) {
        // przejd do pola jeli dane nie s poprawne
        pole.focus();
        pole.select();
    }
}

----------

function sprawdzDate(pole) {
    var miesiac, dzien, rok;
    var dana = pole.value;
    var reDlugie = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    var reKrotkie = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
    var poprawne = (reDlugie.test(dana)) || (reKrotkie.test(dana));
    if (poprawne) {
        var znakRozdz = (dana.indexOf("/") != -1) ? "/" : "-";
        var rozdziel1 = dana.indexOf(znakRozdz);
        var rozdziel2 = dana.lastIndexOf(znakRozdz);
        miesiac = parseInt(dana.substring(0, rozdziel1), 10);
        dzien = parseInt(dana.substring(rozdziel1+1, rozdziel2), 10);
        rok = parseInt(dana.substring(rozdziel2+1), 10);
        // obsuga lat dwucyfrowych
        if (rok < 100) {
            var dzis = new Date();
            // okrelenie aktualnego wieku
            var aktualnyWiek = parseInt(dzis.getFullYear() / 100) * 100;
            // dwie cyfry do tego roku + 15 daje aktualny wiek
            var prog = (dzis.getFullYear() + 15) - aktualnyWiek;
            if (rok > prog) {
                rok += aktualnyWiek - 100;
            } else {
                rok += aktualnyWiek;
            }
        }
        var testowanaData = new Date(rok, miesiac-1, dzien);
        if (testowanaData.getDate() == dzien) {
            if (testowanaData.getMonth() + 1 == miesiac) {
                if (testowanaData.getFullYear() == rok) {
                    // w polu wywietlamy dat z formacie 
                    // nadajcym si do zapisu w bazach danych
                    pole.value = miesiac + "/" + dzien + "/" + rok;
                    return true;
                } else {
                    alert("Istnieje problem z podanym rokiem.");
                }
            } else {
                alert("Istnieje problem z podanym miesicem.");
            }
        } else {
            alert("Istnieje problem z podanym dniem.");
        }
    } else {
        alert("Bdny format zapisu daty. Zapisz dat w postaci mm/dd/yyyy.");
    }
    return false;
}
