'===========================================================================
' Subject: perpetual Calendar                 Date: 06-17-01 (  :  )       
'  Author: Achilles Mina                      Code: RAPIDQ                 
'  Origin: Achilles B. Mina                 Packet: RAPIDQ.ABC
'===========================================================================
'===========================================================================
' Subject: perpetual Calendar                 Date: 06-17-01 (  :  )       
'  Author: Achilles Mina                      Code: RapidQ                 
'  Origin:                                  Packet: RAPIDQ.ABC
'===========================================================================
'CalendriX (prototype), a virtually perpetual calendar 
'By Achilles B. Mina
'Updated: June 17, 2001

'This utility is based on Days, a dates-days calculator. Days is
'downloadable from ZDNet, Nonags and other freeware sites, and at my 
'website at http://pages.zdnet.com/wasaywasay/wasaywasay/

'Nota bene: the algorithms below use the date format mm:dd:yyyy. Also
'since this is just an outtake from a larger program, some variables and
'quite possibly, even a few routines are superfluous. Sorry.

'You can do as you please with this code.

$INCLUDE "RAPIDQ.INC"
$ESCAPECHARS ON

$RESOURCE CalendriXIco AS "Calendrix.ico"
$RESOURCE clocktow AS "clocktow.wav"
$RESOURCE camera AS "camera.wav"
$RESOURCE cuckoo AS "cuckoo.wav"
$RESOURCE gong AS "gong.wav"
$RESOURCE handbell AS "handbell.wav"
$RESOURCE whoosh AS "whoosh.wav"
$RESOURCE whoosh AS "wipe.wav"

Const AW_CENTER = &H10 'Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.
Const AW_HIDE = &H10000 'Hides the window. By default, the window is shown.

DECLARE FUNCTION AnimateWindow Lib "user32" Alias "AnimateWindow"(ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Integer
DECLARE SUB Animate(Handle)
DECLARE SUB Deanimate(Handle)
DECLARE SUB CloseNoteProductForm
DECLARE SUB ShowNotes
DECLARE SUB NotesShow
DECLARE SUB EMailMe
DECLARE SUB SendMe
DECLARE SUB Colors
DECLARE SUB New_Date
DECLARE SUB DaysDifference
DECLARE FUNCTION GetAOdays AS INTEGER
DECLARE FUNCTION GetOdays AS INTEGER
DECLARE SUB DayTodayLt
DECLARE SUB Initialize
DECLARE SUB MilTime
DECLARE SUB Time
DECLARE SUB Nights
DECLARE SUB Noisemaker
DECLARE SUB Calendar
DECLARE SUB PopMonths
DECLARE SUB MonthChanged(Sender AS QMENUITEM)
DECLARE SUB YearChanged
DECLARE SUB DayChanged(Sender AS QCOOLBTN)
DECLARE SUB LoopColor
DECLARE SUB UpdownYear(Sender AS QCOOLBTN)
DECLARE SUB Blink


DEFWORD monthnow, monththen, monthchecked, yearnow, yearthen, betyears
DEFBYTE blinking,military,soundoff,juston,colorcount,countyrsmos,leapnow, leapthen, bleap, circa, weekday, fmonth, emonth, pmonth, todate, always
DEFINT totyears, totmonths, byear, bmonth, bleapyear, yearhence, AOyears, fyear, eyear, pyear
DEFINT Bdays, rundays, edays, otherdays, totdays, yeardays,Odays, AOdays, diffdays, betleaps, daynow, daythen, Adays
DEFINT lastColor, fday, eday, pday, neweday, newpday, monthdays, daysthence, dayshence, bday, days
DEFSTR PreWeeksPanel$, wday$, month$, thedate$, inifile

CREATE Arial10B AS QFONT
  Name = "Arial"
  Size = 10
  AddStyles(fsBold)
END CREATE

CREATE Arial9B AS QFONT
  Name = "Arial"
  Size = 12
  AddStyles(fsBold)
END CREATE

CREATE Timer1 AS QTIMER
  Enabled = 1
  Interval = 1000
  OnTimer = Time
END CREATE

CREATE Timer2 AS QTIMER
  Enabled = 0
  Interval = 1
  OnTimer = NotesShow
END CREATE

CREATE Timer3 AS QTIMER
  Enabled = 1
  Interval = 80
  OnTimer = LoopColor
END CREATE 


  CREATE CalendarForm AS QFORM
    Caption = "CalendriX"
    Width = 215
    Height = 225
    Color = &HEEFAFA 
    BorderStyle = 1
    DelBorderIcons(biMaximize)
    DelBorderIcons(biMinimize)
    Hint = "Click on form to change background color."
    ShowHint = 1
    Center
    OnClick = Colors
    CREATE CDay1 AS QCOOLBTN
      Caption = "1"
      Left = 7
      Top = 71
      Width = 27
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay8 AS QCOOLBTN
      Caption = "8"
      Left = 7
      Top = 96
      Width = 27
      Flat = 1
      OnClick = DayChanged  
    END CREATE
    CREATE CDay15 AS QCOOLBTN
      Caption = "15"
      Left = 7
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay29 AS QCOOLBTN
      Caption = "29"
      Left = 7
      Top = 169
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay22 AS QCOOLBTN
      Caption = "22"
      Left = 7
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay9 AS QCOOLBTN
      Caption = "9"
      Left = 35
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay2 AS QCOOLBTN
      Caption = "2"
      Left = 35
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay16 AS QCOOLBTN
      Caption = "16"
      Left = 35
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay30 AS QCOOLBTN
      Caption = "30"
      Left = 35
      Top = 169
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay23 AS QCOOLBTN
      Caption = "23"
      Left = 35
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay10 AS QCOOLBTN
      Caption = "10"
      Left = 63
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay3 AS QCOOLBTN
      Caption = "3"
      Left = 63
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay17 AS QCOOLBTN
      Caption = "17"
      Left = 63
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay31 AS QCOOLBTN
      Caption = "31"
      Left = 63
      Top = 169
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay24 AS QCOOLBTN
      Caption = "24"
      Left = 63
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay11 AS QCOOLBTN
      Caption = "11"
      Left = 91
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay4 AS QCOOLBTN
      Caption = "4"
      Left = 91
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay18 AS QCOOLBTN
      Caption = "18"
      Left = 91
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay25 AS QCOOLBTN
      Caption = "25"
      Left = 91
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay12 AS QCOOLBTN
      Caption = "12"
      Left = 119
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay5 AS QCOOLBTN
      Caption = "5"
      Left = 119
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay19 AS QCOOLBTN
      Caption = "19"
      Left = 119
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay26 AS QCOOLBTN
      Caption = "26"
      Left = 119
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay13 AS QCOOLBTN
      Caption = "13"
      Left = 147
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay6 AS QCOOLBTN
      Caption = "6"
      Left = 147
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay20 AS QCOOLBTN
      Caption = "20"
      Left = 147
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay27 AS QCOOLBTN
      Caption = "27"
      Left = 147
      Top = 144
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay14 AS QCOOLBTN
      Caption = "14"
      Left = 175
      Top = 96
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay7 AS QCOOLBTN
      Caption = "7"
      Left = 175
      Top = 71
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay21 AS QCOOLBTN
      Caption = "21"
      Left = 175
      Top = 120
      Width = 27 
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE CDay28 AS QCOOLBTN
      Caption = "28"
      Left = 175
      Top = 144
      Width = 27
      Flat = 1
      OnClick = DayChanged 
    END CREATE
    CREATE BlinkButt AS QOVALBTN
      Caption = "B"
      Left = 91
      Top = 169
      Height = 25
      Width = 27
      Flat = 1
      Layout = -1
      Hint = "Click to switch on/off blinking highlight."
      ShowHint = 1
      OnClick = Blink
    END CREATE
    CREATE MilButt AS QOVALBTN
      Caption = "T"
      Left = 119
      Top = 169
      Height = 25
      Width = 27
      Flat = 1
      Layout = -1
      Hint = "Click to toggle-switch between \nstandard time and military time."
      ShowHint = 1
      OnClick = MilTime 
    END CREATE
    CREATE NoiseButt AS QOVALBTN
      Caption = "S"
      Left = 147
      Top = 169
      Height = 25
      Width = 27
      Flat = 1
      Layout = -1
      Hint = "Click to turn off sound effects."
      ShowHint = 1
      OnClick = NoiseMaker 
    END CREATE
    CREATE NotesButt AS QOVALBTN
      Caption = "?"
      Left = 175
      Top = 169
      Height = 25
      Width = 27
      Flat = 1
      Layout = -1
      Hint = "Click to know more about CalendriX."
      ShowHint = 1
      OnClick = ShowNotes 
    END CREATE
    CREATE DayButt AS QOVALBTN
      Left = 175
      Top = 144
      Height = 25
      Width = 27
      Color = clGreen
      Flat = 1
      Layout = -1
    END CREATE
    CREATE MonthsPop AS QPOPUPMENU
      CREATE Jan AS QMENUITEM
        Caption = "January"
        OnClick = MonthChanged
      END CREATE
      CREATE Feb AS QMENUITEM
        Caption = "February"
        OnClick = MonthChanged
      END CREATE
      CREATE Mar AS QMENUITEM
        Caption = "March"
        OnClick = MonthChanged
      END CREATE
      CREATE Apr AS QMENUITEM
        Caption = "April"
        OnClick = MonthChanged
      END CREATE
      CREATE May AS QMENUITEM
        Caption = "May"
        OnClick = MonthChanged
      END CREATE
      CREATE Jun AS QMENUITEM
        Caption = "June"
        OnClick = MonthChanged
      END CREATE
      CREATE Jul AS QMENUITEM
        Caption = "July"
        OnClick = MonthChanged
      END CREATE
      CREATE Aug AS QMENUITEM
        Caption = "August"
        OnClick = MonthChanged
      END CREATE
      CREATE Sep AS QMENUITEM
        Caption = "September"
        OnClick = MonthChanged
      END CREATE
      CREATE Oct AS QMENUITEM
        Caption = "October"
        OnClick = MonthChanged
      END CREATE
      CREATE Nov AS QMENUITEM
        Caption = "November"
        OnClick = MonthChanged
      END CREATE
      CREATE Dece AS QMENUITEM
        Caption = "December"
        OnClick = MonthChanged
      END CREATE      
    END CREATE
    CREATE MoYe AS QPANEL
      Left = 6
      Top = 4
      Width = 197
      Height = 34
      BevelInner = 1
      BorderStyle = 0
      CREATE CMonth AS QPANEL
        Top = 5
        Left = 4
        Height = 24
        Width = 95
        Color = &H00FF00
        Font = Arial9B
        BevelOuter = bvNone
        BevelInner = bvLowered
        Alignment = taLeft
        Hint = "Click then select month of choice."
        ShowHint = 1
        OnClick = PopMonths
      END CREATE
      CREATE Increase AS QCOOLBTN
        Top = 5
        Left = 100
        Width = 26
        Height = 12
        Flat = 1
        Caption = ">"
        Hint = "Go up one year."
        ShowHint = 1
        OnClick = UpdownYear
      END CREATE
      CREATE Decrease AS QCOOLBTN
        Top = 17
        Left = 100
        Width = 26
        Height = 12
        Flat = 1
        Caption = "<"
        Hint = "Go down one year."
        ShowHint = 1
        OnClick = UpdownYear
      END CREATE
      CREATE CYear AS QEDIT
        Top = 5
        Left = 126
        Height = 24
        Width = 66
        Autosize = 0
        Color = &H00FF00
        Font = Arial9B
        Hint = "Click then type in new year."
        ShowHint = 1
        OnChange = YearChanged
      END CREATE
    END CREATE
    CREATE One AS QPANEL
      Left = 7
      Top = 42
      Caption = "Sun"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Two AS QPANEL
      Left = 35
      Top = 42
      Caption = "Mon"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Three AS QPANEL
      Left = 63
      Top = 42
      Caption = "Tue"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Four AS QPANEL
      Left = 91
      Top = 42
      Caption = "Wed"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Five AS QPANEL
      Left = 119
      Top = 42
      Caption = "Thu"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Six AS QPANEL
      Left = 147
      Top = 42
      Caption = "Fri"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
    CREATE Seven AS QPANEL
      Left = 175
      Top = 42
      Caption = "Sat"
      Width = 27
      Height = 25
      BevelOuter = 1
      Hint = "Click here to get today's date"
      ShowHint = 1
      OnClick = Initialize
    END CREATE
  CREATE NoteProductForm AS QFORM    
    Top = Screen.Height/2 + 25
    Left = Screen.Width/2 - 170
    Width = 340 '320
    Height = 205
    Color = CalendarForm.Color '&HCC000 '&HABC777
    DelBorderIcons(biMaximize)
    DelBorderIcons(biMinimize)
    BorderStyle = bsSingle
    FormStyle = fsStayOnTop
    Caption = "Notes on CalendriX"
    OnClose = CloseNoteProductForm
    CREATE DXNotes AS QCANVAS
      Top = 21
      Left = 242
      Height = 63
      Width = 84
      Color = 0
      Cursor = -21
      Hint = "Click to email comment or bug report."
      Showhint = 1
      OnClick = EmailMe
    END CREATE
    CREATE ProductList AS QLISTBOX
	Width = 232
      Height = 177
      AddItems ""
      AddItems "Welcome!
      AddItems ""
      AddItems "  »  Using CalendriX is straightforward.
      AddItems "      To change the month, click on the 
      AddItems "      Month panel, then select the month. 
      AddItems "      To change the year, select the Year
      AddItems "      panel, then type in the new year.
      AddItems "      Or you can use the arrow-left or
      AddItems "      arrow-right button to change the
      AddItems "      year entry one year at a time.
      AddItems "      To change the day, simply click on
      AddItems "      the appropriate button.
      AddItems ""                                                                                                                            
      AddItems "  »  Theoretically, CalendriX can display 
      AddItems "      dates from Year 0 to Year 65000, a 
      AddItems "      span of over 23 million days. For a
      AddItems "      meaningful result, however, confine 
      AddItems "      dates to after September 14, 1752-- 
      AddItems "      the day our calendar, the Gregorian, 
      AddItems "      was last significantly amended and  
      AddItems "      the day it was adopted by Britain.                                                                            
      AddItems ""
      AddItems "  »  Nota bene: this prototype uses the
      AddItems "      date format mm:dd:yyyy. If you have 
      AddItems "      set your date format differently,
      AddItems "      CalendriX will display the wrong
      AddItems "      the dates.
      AddItems ""
      AddItems "  »  CalendriX remembers your preferences
      AddItems "      so there's no need to readjust your 
      AddItems "      settings each time you open it. 
      AddItems ""          
      AddItems "Programming"
      AddItems "  »  CalendriX was written in Rapid-Q,"
      AddItems "      a compiler developed by William Yu."
      AddItems "      It's also freeware and downloadable"
      AddItems "      at www.basicguru.com/abc/rapidq."     
    END CREATE
    CREATE NotesP0 AS QLABEL
      Top = 3
      Left = 255
      Width = 84
      Font = Arial10B
      Caption = "CalendriX"      
      Alignment = taCenter
      Layout = -1
      LabelStyle = 1
      Hint = "Click to visit website"
      ShowHint = 1
      OnClick = SendMe
    END CREATE
    CREATE NotesP1 AS QLABEL
      Top = 85
      Left = 235
      Caption = "  Copyright (c) 2001\n    Achilles B. Mina\n\nThis is FREEWARE.\n Not for commercial\n       distribution."
    END CREATE
  END CREATE
  END CREATE


SUB Initialize
  RANDOMIZE
  IF FILEEXISTS("calendrix.ini") <> 0 THEN
    DIM File AS QFILESTREAM
    File.Open("calendrix.ini",fmOpenReadWrite)
    inifile = File.ReadStr(File.Size)
    File.Close
  END IF
  colorcount = VAL(LEFT$(inifile,1))
  military = VAL(MID$(inifile,2,1))
  soundoff = VAL(MID$(inifile,3,1))
  blinking = VAL(MID$(inifile,4,1))
  DayButt.Color = VAL(MID$(inifile,5,16))
  juston = 1
  Colors
  juston = 0
  IF soundoff = 0 THEN PLAYWAV(clocktow,1)
  Application.IcoHandle = CalendriXIco
  Application.HintShortPause = 25
  Application.HintPause = 25
  Application.HintHidePause = 12000
  DayTodayLt
  New_Date
  Time
  Calendar
END SUB

SUB MilTime
  IF soundoff = 0 THEN PLAYWAV(gong,1)
  IF military = 0 THEN
    military = 1
  ELSE 
    military = 0
  END IF
  Time
END SUB

SUB Time
  DEFINT milhour, hour, min
  hour =  VAL(LEFT$(TIME$,2))
  min = VAL(MID$(TIME$,4,2))     
  milhour = hour
  IF hour >= 12 AND hour < 24 THEN
    hour = hour - 12
    IF hour = 0 THEN hour = 12
    ampm$ = " PM"
  ELSEIF hour = 0 THEN 
    hour = 12
    ampm$ = " AM"
  ELSE
    ampm$ = " AM"
  END IF
  IF min < 10 THEN
    IF military = 1 THEN
      thetime$ = STR$(milhour) + ":0" + STR$(min) + RIGHT$(TIME$,3)
    ELSE
      thetime$ = STR$(hour) + ":0" + STR$(min) + RIGHT$(TIME$,3) + ampm$
    END IF
  ELSE
    IF military = 1 THEN
      thetime$ = SPACE$(5) + TIME$
    ELSE
      thetime$ = STR$(hour) + ":" + STR$(min) + RIGHT$(TIME$,3) + ampm$
    END IF
  END IF
  CalendarForm.Caption = "CalendriX" + SPACE$(10) + thetime$
END SUB


SUB New_Date
  IF soundoff = 0 THEN PLAYWAV(whoosh,1)
  byear = VAL(REPLACESUBSTR$(CYear.Text,",",""))
  fday = bday
  fyear = byear
  fmonth = bmonth                       
  IF fyear = 0 THEN
    fyear = 1
  ELSEIF fyear < 0 THEN
    fyear = ABS(fyear) + 1
  ELSE                                   
    DaysDifference
  END IF 
END SUB

SUB DaysDifference    

    monthnow = fmonth
    yearnow = fyear
    daynow = fday
    monththen = 1    
    yearthen = 1900 'arbitrary but don't change; day-of-week algorithm uses it
    daythen = 1  

  IF yearnow < yearthen THEN
    SWAP(yearnow,yearthen)
    SWAP(monthnow,monththen)
    SWAP(daynow,daythen)
  END IF
  AOyears = yearnow - yearthen
  betyears = AOyears - 1
  IF AOyears = 0 THEN
    IF monthnow = monththen THEN
      diffdays = daynow - daythen
    ELSE
      IF yearthen MOD 4 = 0 THEN
        leapthen = 1
        IF yearthen MOD 100 = 0 AND yearthen MOD 400 <> 0 THEN leapthen = 0
      ELSE 
        leapthen = 0
      END IF
      IF yearnow MOD 4 = 0 THEN
        leapnow = 1
        IF yearnow MOD 100 = 0 AND yearnow MOD 400 <> 0 THEN leapnow = 0
      ELSE 
        leapnow = 0
      END IF                
      SELECT CASE monththen
        CASE 1
          Adays = daythen
        CASE 2
          Adays = 31 + daythen
        CASE 3
          Adays = 59 + daythen + leapthen
        CASE 4
          Adays = 90 + daythen + leapthen
        CASE 5
          Adays = 120 + daythen + leapthen
        CASE 6
          Adays = 151 + daythen + leapthen
        CASE 7
          Adays = 181 + daythen + leapthen
        CASE 8
          Adays = 212 + daythen + leapthen
        CASE 9
          Adays = 243 + daythen + leapthen
        CASE 10
          Adays = 273 + daythen + leapthen
        CASE 11
          Adays = 304 + daythen + leapthen
        CASE 12
          Adays = 334 + daythen + leapthen    
      END SELECT
      diffdays = GetOdays - Adays
    END IF
  ELSEIF AOyears = 1 THEN
    diffdays = GetAOdays
  ELSE
    betleaps = 0 'betyears \ 4
    trialyear = yearthen + 1
    DO
      IF trialyear MOD 4 = 0 THEN
        INC betleaps
        IF trialyear MOD 100 = 0 AND trialyear MOD 400 <> 0 THEN DEC betleaps
      END IF
      INC trialyear
    LOOP UNTIL trialyear = yearnow
    diffdays = (betyears*365) + GetAOdays + betleaps
  END IF
 
    todate = diffdays MOD 7    
    IF fyear < VAL(RIGHT$(DATE$,4)) THEN
      past = 1
    ELSEIF fyear = VAL(RIGHT$(DATE$,4)) THEN
      IF fmonth < VAL(LEFT$(DATE$,2)) THEN
        past = 1
      ELSEIF fmonth = VAL(LEFT$(DATE$,2)) THEN
        IF fday < VAL(MID$(DATE$,4,2)) THEN past = 1
      END IF
    END IF

    SELECT CASE todate
      CASE 0
        wday$ = "Monday!"
      CASE 1
        IF fyear < 1900 THEN 
          wday$ = "Sunday!"
        ELSE
          wday$ = "Tuesday!"
        END IF
      CASE 2
        IF fyear < 1900 THEN 
          wday$ = "Saturday!"
        ELSE
          wday$ = "Wednesday!"
        END IF        
      CASE 3
        IF fyear < 1900 THEN 
          wday$ = "Friday!"
        ELSE
          wday$ = "Thursday!"
        END IF                      
      CASE 4
        IF fyear < 1900 THEN 
          wday$ = "Thursday!"
        ELSE
          wday$ = "Friday!"
        END IF             
      CASE 5
        IF fyear < 1900 THEN 
          wday$ = "Wednesday!"
        ELSE
          wday$ = "Saturday!"
        END IF              
      CASE 6
        IF fyear < 1900 THEN 
          wday$ = "Tuesday!"
        ELSE
          wday$ = "Sunday!"
        END IF                     
    END SELECT
END SUB  

FUNCTION GetAOdays
  IF yearthen MOD 4 = 0 THEN
    leapthen = 1
    IF yearthen MOD 100 = 0 AND yearthen MOD 400 <> 0 THEN leapthen = 0
   ELSE 
    leapthen = 0
   END IF  
  SELECT CASE monththen
    CASE 1
      Adays = 365 - daythen + leapthen
    CASE 2
      Adays = 334 - daythen + leapthen
    CASE 3
      Adays = 306 - daythen        
    CASE 4
      Adays = 275 - daythen
    CASE 5
      Adays = 245 - daythen
    CASE 6
      Adays = 214 - daythen
    CASE 7
      Adays = 184 - daythen
    CASE 8
      Adays = 153 - daythen
    CASE 9
      Adays = 122 - daythen
    CASE 10
      Adays = 92 - daythen
    CASE 11
      Adays = 61 - daythen
    CASE 12
      Adays = 31 - daythen      
  END SELECT
  GetAOdays = Adays + GetOdays    
END FUNCTION

FUNCTION GetOdays
  IF yearnow MOD 4 = 0 THEN
    leapnow = 1
    IF yearnow MOD 100 = 0 AND yearnow MOD 400 <> 0 THEN leapnow = 0
  ELSE 
    leapnow = 0
  END IF
  SELECT CASE monthnow
    CASE 1
      Odays = daynow
    CASE 2
      Odays = 31 + daynow
    CASE 3
      Odays = 59 + daynow + leapnow
    CASE 4
      Odays = 90 + daynow + leapnow
    CASE 5
      Odays = 120 + daynow + leapnow
    CASE 6
      Odays = 151 + daynow + leapnow
    CASE 7
      Odays = 181 + daynow + leapnow
    CASE 8
      Odays = 212 + daynow + leapnow
    CASE 9
      Odays = 243 + daynow + leapnow
    CASE 10
      Odays = 273 + daynow + leapnow
    CASE 11      
      Odays = 304 + daynow + leapnow
    CASE 12
      Odays = 334 + daynow + leapnow      
  END SELECT
  RESULT = Odays
END FUNCTION

SUB Colors
  IF soundoff = 0 THEN PLAYWAV(wipe,1)
  IF juston = 0 THEN INC colorcount
  IF colorcount = 6 THEN colorcount = 0
  SELECT CASE colorcount
    CASE 0
      CalendarForm.Color = &HBCCAAA
    CASE 1
      CalendarForm.Color = &HEEFAFA 
    CASE 2
      CalendarForm.Color = &HCCC000
    CASE 3
      CalendarForm.Color = &HGFCCC
    CASE 4
      CalendarForm.Color = &HA000
    CASE 5
      CalendarForm.Color = &HBB00CC
  END SELECT
    MoYe.Color = CalendarForm.Color
    NoteProductForm.Color = CalendarForm.Color                  
END SUB

SUB ShowNotes
  IF soundoff = 0 THEN PLAYWAV(cuckoo,1)
  Timer2.Enabled = 1
  Animate(NoteProductForm.Handle)
  NoteProductForm.Visible = 1
END SUB

SUB NotesShow
  DEFSHORT y
  DXNotes.FillRect(0,0,84,63,0) 
  INC y
  IF y > 84 THEN y = 1
  IF y < 11 THEN b$ = RIGHT$("wasaywasay",y)
  IF y < 8 THEN a$ = RIGHT$(".com.ph",y)    
  DXNotes.TextOut(y,y+2,a$,clGreen,clBlack)
  DXNotes.TextOut(y+2,2,b$,clWhite,clBlack)
  DXNotes.TextOut(1,y+16,"@i-manila",&HDDCE,clBlack)  
END SUB

SUB SendMe
  IF soundoff = 0 THEN PLAYWAV(camera,1)
  dummy = SHELL ("start http://pages.zdnet.com/wasaywasay/wasaywasay", SW_HIDE)
  IF dummy = 0 THEN
    dummy = SHELL ("start http://pages.zdnet.com/wasaywasay/wasaywasay", SW_HIDE)
    IF dummy = 0 THEN
      SHOWMESSAGE "Can't find your Start program. \nPlease go to http://pages.zdnet.com/wasaywasay/wasaywasay manually." 
    END IF
  END IF
END SUB

SUB EMailMe
  IF soundoff = 0 THEN PLAYWAV(camera,1)
  dummy = SHELL("c:\windows\command\Start mailto:wasaywasay@i-manila.com.ph?Subject=Attention_Days_croaks",0)
  IF dummy = 0 THEN
    dummy = SHELL("Start mailto:wasaywasay@i-manila.com.ph?Subject=About_CalendriX",0)
    IF dummy = 0 THEN
      SHOWMESSAGE "Can't find your Start program. Please do manual email instead." 
    END IF
  END IF
END SUB

SUB DayTodayLt
  bday = VAL(MID$(DATE$,4,2))
  bmonth = VAL(LEFT$(DATE$,2))
  CYear.Text = RIGHT$(DATE$,4)
  SELECT CASE bmonth
    CASE 1
      CMonth.Caption = "January"
    CASE 2
      CMonth.Caption = "February" 
    CASE 3
      CMonth.Caption = "March"
    CASE 4
      CMonth.Caption = "April" 
    CASE 5
      CMonth.Caption = "May"
    CASE 6
      CMonth.Caption = "June" 
    CASE 7
      CMonth.Caption = "July"
    CASE 8
      CMonth.Caption = "August"
    CASE 9
      CMonth.Caption = "September"
    CASE 10
      CMonth.Caption = "October" 
    CASE 11
      CMonth.Caption = "November"
    CASE 12
      CMonth.Caption = "December" 
  END SELECT    
END SUB

SUB CloseNoteProductForm
  IF soundoff = 0 THEN PLAYWAV(whoosh,1)
  Deanimate(NoteProductForm.Handle)
  NoteProductForm.Visible = 0
END SUB

SUB Nights
  DIM File AS QFILESTREAM
  IF soundoff = 0 THEN PLAYWAV(gong,1)
  File.Open("calendrix.ini",fmCreate)
  inifile = STR$(colorcount) + STR$(military) + STR$(soundoff)_
            + STR$(blinking) + STR$(DayButt.Color)
  File.WriteStr(inifile,LEN(inifile))
  File.Close
  Application.Terminate
END SUB

SUB Noisemaker
  IF soundoff = 0 THEN
    NoiseButt.Hint = "Click to turn on sound effects."
    soundoff = 1
  ELSE
    PLAYWAV(handbell,1)
    NoiseButt.Hint = "Click to turn off sound effects."
    soundoff = 0
  END IF
END SUB

SUB DayChanged(Sender AS QCOOLBTN)
  bday = VAL(Sender.Caption)
  New_Date
  Calendar
END SUB

SUB MonthChanged(Sender AS QMENUITEM)
  CMonth.Caption = Sender.Caption
  SELECT CASE CMonth.Caption
    CASE "January"
      bmonth = 1
    CASE "February"
      bmonth = 2
    CASE "March"
      bmonth = 3
    CASE "April"
      bmonth = 4
    CASE "May"
      bmonth = 5
    CASE "June"
      bmonth = 6
    CASE "July"
      bmonth = 7
    CASE "August"
      bmonth = 8
    CASE "September"
      bmonth = 9
    CASE "October"
      bmonth = 10
    CASE "November"
      bmonth = 11
    CASE "December"
      bmonth = 12
  END SELECT
  New_Date
  Calendar
END SUB

SUB YearChanged
  New_Date
  Calendar
END SUB

SUB Calendar
  IF soundoff = 0 THEN PLAYWAV(handbell,1)
  CYear.Text = STR$(fyear)

  One.Color = -2147483633
  Two.Color = -2147483633
  Three.Color = -2147483633
  Four.Color = -2147483633
  Five.Color = -2147483633
  Six.Color = -2147483633
  Seven.Color = -2147483633

  CDay1.Visible = 1
  CDay2.Visible = 1
  CDay3.Visible = 1
  CDay4.Visible = 1
  CDay5.Visible = 1
  CDay6.Visible = 1
  CDay7.Visible = 1
  CDay8.Visible = 1
  CDay9.Visible = 1
  CDay10.Visible = 1
  CDay11.Visible = 1
  CDay12.Visible = 1
  CDay13.Visible = 1
  CDay14.Visible = 1
  CDay15.Visible = 1
  CDay16.Visible = 1
  CDay17.Visible = 1
  CDay18.Visible = 1
  CDay19.Visible = 1
  CDay20.Visible = 1
  CDay21.Visible = 1
  CDay22.Visible = 1
  CDay23.Visible = 1
  CDay24.Visible = 1
  CDay25.Visible = 1
  CDay26.Visible = 1
  CDay27.Visible = 1
  CDay28.Visible = 1
  SELECT CASE fmonth
    CASE 1,3,5,7,8,10,12
      CDay29.Visible = 1
      CDay30.Visible = 1
      CDay31.Visible = 1
    CASE 4,6,9,11
      CDay29.Visible = 1
      CDay30.Visible = 1
      CDay31.Visible = 0
    CASE 2
      IF leapthen = 1 OR leapnow = 1 THEN
        CDay29.Visible = 1
      ELSE
        CDay29.Visible = 0
      END IF
      CDay30.Visible = 0
      CDay31.Visible = 0
  END SELECT
  SELECT CASE fday
    CASE 1,8,15,22,29
      One.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Monday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Tuesday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Wednesday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Thursday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Friday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Saturday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
      END SELECT       
    CASE 2,9,16,23,30
      Two.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Monday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Tuesday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Wednesday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Thursday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Friday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Saturday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
      END SELECT
    CASE 3,10,17,24,31
      Three.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Monday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Tuesday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Wednesday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Thursday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Friday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Saturday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
      END SELECT
    CASE 4,11,18,25
      Four.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Monday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Tuesday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Wednesday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Thursday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Friday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Saturday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
      END SELECT
    CASE 5,12,19,26
      Five.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Monday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Tuesday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Wednesday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Thursday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Friday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Saturday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
      END SELECT
    CASE 6,13,20,27
      Six.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Monday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Tuesday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Wednesday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Thursday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Friday!"
          One.Caption = "Sat"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
        CASE "Saturday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
      END SELECT
    CASE 7,14,21,28
      Seven.Color = &HEEFAFA
      SELECT CASE wday$
        CASE "Sunday!"
          One.Caption = "Mon"
          Two.Caption = "Tue"
          Three.Caption = "Wed"
          Four.Caption = "Thu"
          Five.Caption = "Fri"
          Six.Caption = "Sat"
          Seven.Caption = "Sun"
        CASE "Monday!"
          One.Caption = "Tue"
          Two.Caption = "Wed"
          Three.Caption = "Thu"
          Four.Caption = "Fri"
          Five.Caption = "Sat"
          Six.Caption = "Sun"
          Seven.Caption = "Mon"
        CASE "Tuesday!"
          One.Caption = "Wed"
          Two.Caption = "Thu"
          Three.Caption = "Fri"
          Four.Caption = "Sat"
          Five.Caption = "Sun"
          Six.Caption = "Mon"
          Seven.Caption = "Tue"
        CASE "Wednesday!"
          One.Caption = "Thu"
          Two.Caption = "Fri"
          Three.Caption = "Sat"
          Four.Caption = "Sun"
          Five.Caption = "Mon"
          Six.Caption = "Tue"
          Seven.Caption = "Wed"
        CASE "Thursday!"
          One.Caption = "Fri"
          Two.Caption = "Sat"
          Three.Caption = "Sun"
          Four.Caption = "Mon"
          Five.Caption = "Tue"
          Six.Caption = "Wed"
          Seven.Caption = "Thu"
        CASE "Friday!"
          One.Caption = "Sat"
          Two.Caption = "Sun"
          Three.Caption = "Mon"
          Four.Caption = "Tue"
          Five.Caption = "Wed"
          Six.Caption = "Thu"
          Seven.Caption = "Fri"
        CASE "Saturday!"
          One.Caption = "Sun"
          Two.Caption = "Mon"
          Three.Caption = "Tue"
          Four.Caption = "Wed"
          Five.Caption = "Thu"
          Six.Caption = "Fri"
          Seven.Caption = "Sat"
      END SELECT     
  END SELECT
  SELECT CASE fday
    CASE 1
      CDay1.Visible = 0
      DayButt.Top = CDay1.Top
      DayButt.Left = CDay1.Left
    CASE 2
      CDay2.Visible = 0
      DayButt.Top = CDay2.Top
      DayButt.Left = CDay2.Left
    CASE 3
      CDay3.Visible = 0
      DayButt.Top = CDay3.Top
      DayButt.Left = CDay3.Left
    CASE 4
      CDay4.Visible = 0
      DayButt.Top = CDay4.Top
      DayButt.Left = CDay4.Left
    CASE 5
      CDay5.Visible = 0
      DayButt.Top = CDay5.Top
      DayButt.Left = CDay5.Left
    CASE 6
      CDay6.Visible = 0
      DayButt.Top = CDay6.Top
      DayButt.Left = CDay6.Left
    CASE 7
      CDay7.Visible = 0
      DayButt.Top = CDay7.Top
      DayButt.Left = CDay7.Left
    CASE 8
      CDay8.Visible = 0
      DayButt.Top = CDay8.Top
      DayButt.Left = CDay8.Left
    CASE 9
      CDay9.Visible = 0
      DayButt.Top = CDay9.Top
      DayButt.Left = CDay9.Left
    CASE 10
      CDay10.Visible = 0
      DayButt.Top = CDay10.Top
      DayButt.Left = CDay10.Left
    CASE 11
      CDay11.Visible = 0
      DayButt.Top = CDay11.Top
      DayButt.Left = CDay11.Left
    CASE 12
      CDay12.Visible = 0
      DayButt.Top = CDay12.Top
      DayButt.Left = CDay12.Left
    CASE 13
      CDay13.Visible = 0
      DayButt.Top = CDay13.Top
      DayButt.Left = CDay13.Left
    CASE 14
      CDay14.Visible = 0
      DayButt.Top = CDay14.Top
      DayButt.Left = CDay14.Left
    CASE 15
      CDay15.Visible = 0
      DayButt.Top = CDay15.Top
      DayButt.Left = CDay15.Left
    CASE 16
      CDay16.Visible = 0
      DayButt.Top = CDay16.Top
      DayButt.Left = CDay16.Left
    CASE 17
      CDay17.Visible = 0
      DayButt.Top = CDay17.Top
      DayButt.Left = CDay17.Left
    CASE 18
      CDay18.Visible = 0
      DayButt.Top = CDay18.Top
      DayButt.Left = CDay18.Left
    CASE 19
      CDay19.Visible = 0
      DayButt.Top = CDay19.Top
      DayButt.Left = CDay19.Left
    CASE 20
      CDay20.Visible = 0
      DayButt.Top = CDay20.Top
      DayButt.Left = CDay20.Left
    CASE 21
      CDay21.Visible = 0
      DayButt.Top = CDay21.Top
      DayButt.Left = CDay21.Left
    CASE 22
      CDay22.Visible = 0
      DayButt.Top = CDay22.Top
      DayButt.Left = CDay22.Left
    CASE 23
      CDay23.Visible = 0
      DayButt.Top = CDay23.Top
      DayButt.Left = CDay23.Left
    CASE 24
      CDay24.Visible = 0
      DayButt.Top = CDay24.Top
      DayButt.Left = CDay24.Left
    CASE 25
      CDay25.Visible = 0
      DayButt.Top = CDay25.Top
      DayButt.Left = CDay25.Left
    CASE 26
      CDay26.Visible = 0
      DayButt.Top = CDay26.Top
      DayButt.Left = CDay26.Left
    CASE 27
      CDay27.Visible = 0
      DayButt.Top = CDay27.Top
      DayButt.Left = CDay27.Left
    CASE 28
      CDay28.Visible = 0
      DayButt.Top = CDay28.Top
      DayButt.Left = CDay28.Left
    CASE 29
      CDay29.Visible = 0
      DayButt.Top = CDay29.Top
      DayButt.Left = CDay29.Left
    CASE 30
      CDay30.Visible = 0
      DayButt.Top = CDay30.Top
      DayButt.Left = CDay30.Left
    CASE 31
      CDay31.Visible = 0
      DayButt.Top = CDay31.Top
      DayButt.Left = CDay31.Left
  END SELECT
  DayButt.Caption = STR$(fday)
END SUB

SUB PopMonths
  MonthsPop.PopUp(Screen.MouseX,Screen.MouseY)
END SUB

SUB Blink
  IF blinking = 0 THEN
    blinking = 1
  ELSE
    blinking = 0
  END IF
END SUB

SUB LoopColor
  IF blinking = 0 THEN DayButt.Color = 15661818*(1+RND*(5))
END SUB

SUB UpdownYear(Sender AS QCOOLBTN)
  IF Sender.Caption = ">" THEN
    CYear.Text = STR$(VAL(CYear.Text) + 1)
  ELSEIF Sender.Caption = "<" THEN
    CYear.Text = STR$(VAL(CYear.Text) - 1)
  END IF
END SUB

SUB Animate(Handle)
  AnimateWindow Handle, 300, AW_CENTER
  NoteProductForm.Repaint
END SUB

SUB Deanimate(Handle)
  AnimateWindow Handle, 300, AW_CENTER OR AW_HIDE
END SUB

Initialize
CalendarForm.ShowModal
Nights
