Public Class clsHollyDaysGR
    Public HollyDayDescr As String
    Dim Easter As Date
 
    Public Function CheckWeekend(ByVal dtmTemp As Date) As Boolean
        HollyDayDescr = ""
        Select Case Weekday(dtmTemp)
            Case vbSaturday
                CheckWeekend = True
                HollyDayDescr = "Ημέρα Σάββατο" & vbCrLf & HollyDayDescr
            Case vbSunday
                CheckWeekend = True
                HollyDayDescr = "Ημέρα Κυριακή" & vbCrLf & HollyDayDescr
            Case Else
                CheckWeekend = False
        End Select
        Return CheckWeekend
    End Function
    'Δημιουργός: Τάσος Φιλοξενίδης 
    Public Function GreekEaster(ByVal iYear As Integer) As Date
        Dim tA%, tB%, tC%, iDay%, iMonth%
        If iYear > 1500 And iYear < 6000 Then
            tA = (iYear \ 100) - 16 - (((iYear \ 100) - 16) \ 4) + 10
            tB = (19 * Int(iYear Mod 19) + 15) Mod 30
            tC = tB - Int((iYear + (iYear \ 4) + tB) Mod 7) + tA
            iDay = 1 + (tC + 27 + ((tC + 6) \ 40)) Mod 31
            iMonth = 3 + (tC + 26) \ 30
            GreekEaster = IIf(iYear > 1899, DateSerial(iYear, iMonth, iDay), iDay & "/" & iMonth & "/" & iYear)
        End If
    End Function
 
    Public Function CheckHollyDays(ByVal idate As Date) As Boolean
        CheckHollyDays = False
        Easter = GreekEaster(idate.Year)
        If idate.Day = 1 And idate.Month = 1 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Πρωτοχρονιάς" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 6 And idate.Month = 1 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Θεοφάνεια" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 1 And idate.Month = 5 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Πρωτομαγιάς" & vbCrLf & HollyDayDescr
        End If
        If Easter.DayOfYear - 48 = idate.DayOfYear Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Καθαρής Δευτέρας" & vbCrLf & HollyDayDescr
        End If
        If Easter.DayOfYear - 2 = idate.DayOfYear Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Μεγάλη Παρασκεύη" & vbCrLf & HollyDayDescr
        End If
        If Easter.DayOfYear - 1 = idate.DayOfYear Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Μεγάλο Σάββατο" & vbCrLf & HollyDayDescr
        End If
        If Easter.Date = idate.Date Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Άγιο Πάσχα" & vbCrLf & HollyDayDescr
        End If
        If Easter.DayOfYear + 1 = idate.DayOfYear Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Δευτέρα του Πάσχα" & vbCrLf & HollyDayDescr
        End If
        If Easter.DayOfYear + 50 = idate.DayOfYear Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Αγίου Πνεύματος" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 25 And idate.Month = 3 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εθνική Εορτή 25η Μαρτίου (Επανάσταση του 1821)" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 15 And idate.Month = 8 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Κοίμηση της Θεοτόκου (Δεκαπενταύγουστος)" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 28 And idate.Month = 10 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εθνική Εορτή 28η Οκτωβρίου (επέτειος του ΟΧΙ)" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 25 And idate.Month = 12 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Εορτή Χριστουγέννων" & vbCrLf & HollyDayDescr
        End If
        If idate.Day = 26 And idate.Month = 12 Then
            CheckHollyDays = True
            HollyDayDescr = "Εθνική αργία: Δευτέρα των Χριστουγέννων" & vbCrLf & HollyDayDescr
        End If
        Return CheckHollyDays
    End Function
End Class