#Region - TimeStamp
; 2011-06-13 09:57:19   v 1.2
#EndRegion - TimeStamp
; BugFix

#include <Date.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>
#Include <WinAPI.au3>


Opt('GUIOnEventMode', 1)

Global $h10YearView, $h10YearCal, $hYearCal, $hMonthCal
Global $btPrev10YearView, $btNext10YearView
Global $btPrevYear, $btNextYear, $lbYear
Global $btPrevMonth, $btNextMonth, $lbMonth
Global $TodayID, $aCtrlFrame = 0
Global $iCurrMonth = @MON, $iCurrYear = @YEAR, $iCurr10Year = StringLeft($iCurrYear, 3), $iCurr10YearEnd = $iCurr10Year & 9
Global $iShowMonth = $iCurrMonth, $iShowYear = $iCurrYear, $iShow10Year = $iCurr10Year
;~ $iCurrMonth 	    aktueller (bzw. zuletzt gewählter) Monat
;~ $iCurrYear       aktuelles (bzw. zuletzt gewähltes) Jahr
;~ $iCurr10Year     aktuelles (bzw. zuletzt gewähltes) Jahrzehnt (3-stellig)
;~ $iCurr10YearEnd  letztes Jahr des aktuellen (bzw. zuletzt gewählten) Jahrzehnts
;~ $iShowMonth      Monat für Rahmen im Jahreskalender
;~ $iShowYear       Jahr für Rahmen im 10-Jahreskalender
;~ $iShow10Year	    Jahrzehnt für Rahmen in 10-Jahresübersicht (3-stellig)
Global $aShortMonth[12] = ['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
Global $a10YearsView[24], $a10Years[12], $aMonth[12], $aDays[42], $aToolTip[6] ; [ID]
Global $oMarkedDays = ObjCreate("Scripting.Dictionary") ; Key=Datum (JJJJ/MM/TT), Value=Hintergrundfarbe
Global Const $DefCol = 0xF0F0F0, $LightPink = 0xFFB6C1, $LightSkyBlue = 0x87CEEB, $LightGoldenrodYellow = 0xFAFAD2, $LightCyan = 0xE0FFFF
Global $iChooseCol = $LightSkyBlue
;~ Global $iChooseCol = -1 ; wenn -1 wird Palette zur Farbauswahl bei Klick auf Datum geladen, sonst wird die hier definierte Farbe gesetzt
Local $x, $y

#region - Jahrzehnt Übersicht
$h10YearView = GUICreate('Kalender', 200, 171, -1, -1, -1, $WS_EX_TOOLWINDOW)
GUISetOnEvent($GUI_EVENT_CLOSE, '_end', $h10YearView)
$btPrev10YearView = GUICtrlCreateButton('<', 5, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_10YearViewEvent')
$btNext10YearView = GUICtrlCreateButton('>', 180, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_10YearViewEvent')
GUICtrlSetState(-1, $GUI_HIDE)
$x = 6
$y = 37
For $i = 0 To 23
	Switch $i
		Case 2, 4, 6, 10, 12, 14, 18, 20, 22
			$y -= 21
			$x += 47
		Case 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23
			$y += 21
		Case 8, 16
			$x = 6
			$y += 22
	EndSwitch
	$a10YearsView[$i] = GUICtrlCreateLabel('', $x, $y, 46, 21, BitOR($ES_CENTER, $SS_CENTERIMAGE))
	GUICtrlSetOnEvent(-1, '_10YearEvent')
	GUICtrlSetBkColor(-1, 0xD0D0D0)
Next
#endregion - Jahrzehnt Übersicht

#region - Jahrzehntkalender
$h10YearCal = GUICreate('Kalender', 200, 171, -1, -1, -1, $WS_EX_TOOLWINDOW)
GUISetOnEvent($GUI_EVENT_CLOSE, '_end', $h10YearCal)
$btPrev10Year = GUICtrlCreateButton('<', 5, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_10YearCalEvent')
$lb10Year = GUICtrlCreateLabel($iCurr10YearEnd -9 & ' - ' & $iCurr10YearEnd, 21, 8, 158, 17, $ES_CENTER)
GUICtrlSetOnEvent(-1, '_10YearCalEvent')
GUICtrlSetColor(-1, 0x0000FF)
$btNext10Year = GUICtrlCreateButton('>', 180, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_10YearCalEvent')
$x = 6
$y = -5
For $i = 0 To 11
	If Not Mod($i, 4) Then
		$x = 6
		$y += 42
	EndIf
	$a10Years[$i] = GUICtrlCreateLabel($iCurr10YearEnd -10 +$i, $x, $y, 46, 41, BitOR($ES_CENTER, $SS_CENTERIMAGE))
	GUICtrlSetOnEvent(-1, '_YearEvent')
	GUICtrlSetBkColor(-1, 0xD0D0D0)
	If $i = 0 Or $i = 11 Then
		GUICtrlSetState(-1, $GUI_DISABLE)
	Else
		GUICtrlSetState(-1, $GUI_ENABLE)
	EndIf
	$x += 47
Next
#endregion - Jahrzehntkalender

#region - Jahreskalender
$hYearCal = GUICreate('Kalender', 200, 171, -1, -1, -1, $WS_EX_TOOLWINDOW)
GUISetOnEvent($GUI_EVENT_CLOSE, '_end', $hYearCal)
$btPrevYear = GUICtrlCreateButton('<', 5, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_YearCalEvent')
$lbYear = GUICtrlCreateLabel($iCurrYear, 21, 8, 158, 17, $ES_CENTER)
GUICtrlSetOnEvent(-1, '_YearCalEvent')
GUICtrlSetColor(-1, 0x0000FF)
$btNextYear = GUICtrlCreateButton('>', 180, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_YearCalEvent')
$x = 6
$y = -5
For $i = 0 To 11
	If Not Mod($i, 4) Then
		$x = 6
		$y += 42
	EndIf
	$aMonth[$i] = GUICtrlCreateLabel($aShortMonth[$i], $x, $y, 46, 41, BitOR($ES_CENTER, $SS_CENTERIMAGE))
	GUICtrlSetBkColor(-1, 0xD0D0D0)
	GUICtrlSetOnEvent(-1, '_MonthEvent')
	$x += 47
Next
#endregion - Jahreskalender

#region - Monatskalender
Local $aWDays[7] = ['Mo','Di','Mi','Do','Fr','Sa','So']
$hMonthCal = GUICreate('Kalender', 200, 171, -1, -1, -1, $WS_EX_TOOLWINDOW)
GUISetOnEvent($GUI_EVENT_CLOSE, '_end', $hMonthCal)
$btPrevMonth = GUICtrlCreateButton('<', 5, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_MonthCalEvent')
$lbMonth = GUICtrlCreateLabel('Monat Jahr', 21, 8, 158, 17, $ES_CENTER)
GUICtrlSetOnEvent(-1, '_MonthCalEvent')
GUICtrlSetColor(-1, 0x0000FF)
$btNextMonth = GUICtrlCreateButton('>', 180, 5, 15, 20)
GUICtrlSetOnEvent(-1, '_MonthCalEvent')
$x = 6
For $i = 0 To 6
	GUICtrlCreateLabel($aWDays[$i], $x, 30, 26, 17, BitOR($ES_CENTER, $SS_CENTERIMAGE))
	GUICtrlSetBkColor(-1, 0xD0D0D0)
	$x += 27
Next
$x = 6
$y = 40
For $i = 0 To 41
	If Not Mod($i, 7) Then
		$x = 6
		$y += 18
	EndIf
	$aDays[$i] = GUICtrlCreateLabel($i, $x, $y, 26, 17, BitOR($ES_CENTER, $SS_CENTERIMAGE))
	GUICtrlSetOnEvent(-1, '_DayEvent')
	$x += 27
Next
; (leere) Label für Tooltip Wochennummer
$y = 58
For $i = 0 To 5
	$aToolTip[$i] = GUICtrlCreateLabel(' ', 1, $y, 5, 17)
	$y += 18
Next
#endregion - Monatskalender



GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
_setMonthView()
GUISetState()


While 1
	Sleep(10)
WEnd

Func _end()
	Exit
EndFunc

;======= ANZEIGEN =====
Func _show10YearView() ; wechselt von 10-Jahreskalender zu 10-Jahres-Übersicht
	GUISetState(@SW_SHOW, $h10YearView)
	_set10YearView()
	GUISetState(@SW_HIDE, $h10YearCal)
EndFunc

Func _show10YearCal($hWndFrom) ; wechselt von Jahreskalender/10-Jahres-Übersicht zu 10-Jahreskalender
	GUISetState(@SW_SHOW, $h10YearCal)
	If $iCurr10Year = $iShow10Year Then
		$aCtrlFrame = _FrameAroundCtrl_Create($h10YearCal, $a10Years[StringRight($iShowYear,1)+1])
	Else
		_FrameAroundCtrl_Delete()
	EndIf
	GUISetState(@SW_HIDE, $hWndFrom)
EndFunc

Func _showYearCal($hWndFrom) ; wechselt von Monatskalender/10-Jahreskalender zu Jahreskalender
	GUICtrlSetData($lbYear, $iCurrYear)
	GUISetState(@SW_SHOW, $hYearCal)
	_setYear()
	GUISetState(@SW_HIDE, $hWndFrom)
EndFunc

Func _showMonthCal() ; wechselt von Jahreskalender zu Monatskalender
	GUISetState(@SW_SHOW, $hMonthCal)
	If $iCurrYear = @YEAR And $iCurrMonth = @MON Then
		$aCtrlFrame = _FrameAroundCtrl_Create($hMonthCal, $TodayID)
	Else
		_FrameAroundCtrl_Delete()
	EndIf
	GUISetState(@SW_HIDE, $hYearCal)
EndFunc
;======================

;======= ÜBERSICHT ====
Func _10YearViewEvent() ; Klick auf Control in 10-Jahres-Übersicht
	GUISetState(@SW_LOCK, $h10YearView)
	Switch @GUI_CtrlId
		Case $btPrev10YearView
			If $iCurrYear -10 < 1900 Then Return
			$iCurrYear = 1900
			GUICtrlSetState($btPrev10YearView, $GUI_HIDE)
			GUICtrlSetState($btNext10YearView, $GUI_SHOW)
		Case $btNext10YearView
			If $iCurrYear +10 > 2099 Then Return
			$iCurrYear = 2099
			GUICtrlSetState($btPrev10YearView, $GUI_SHOW)
			GUICtrlSetState($btNext10YearView, $GUI_HIDE)
	EndSwitch
	_set10YearView()
	GUISetState(@SW_UNLOCK, $h10YearView)
EndFunc

Func _10YearEvent() ; Klick auf 10-Jahresbereich in 10-Jahres-Übersicht
	_FrameAroundCtrl_Delete()
	Local $i10Year = GUICtrlRead(@GUI_CtrlId)
	If $i10Year = '' Then Return
	If StringRight($i10Year, 1) = 0 Then $i10Year += 9
	$iCurr10YearEnd = $i10Year
	$iCurr10Year = StringLeft($i10Year, 3)
	GUICtrlSetData($lb10Year, $iCurr10Year & '0 - ' & $iCurr10YearEnd)
	_set10Year()
	_show10YearCal($h10YearView)
EndFunc

Func _set10YearView() ; setze Daten in 10-Jahres-Übersicht
	_FrameAroundCtrl_Delete()
	Local $iSet = 2, $iFrom = 1990, $iTo = 1999, $iLoop = 2
	GUICtrlSetState($btPrev10YearView, $GUI_SHOW)
	GUICtrlSetState($btNext10YearView, $GUI_HIDE)
	If $iCurrYear < 2010 Then
		$iSet = 1
		$iFrom = 1900
		$iTo = 1909
		GUICtrlSetState($btPrev10YearView, $GUI_HIDE)
		GUICtrlSetState($btNext10YearView, $GUI_SHOW)
	EndIf
	If $iSet = 1 Then
		GUICtrlSetData($a10YearsView[0], '')
		GUICtrlSetData($a10YearsView[1], '')
	Else
		$iLoop = 0
		GUICtrlSetData($a10YearsView[22], '')
		GUICtrlSetData($a10YearsView[23], '')
	EndIf
	For $i = $iLoop To $iLoop +21
		If Not Mod($i, 2) Then
			GUICtrlSetData($a10YearsView[$i], $iFrom)
			$iFrom += 10
		Else
			GUICtrlSetData($a10YearsView[$i], $iTo)
			If StringLeft(GUICtrlRead($a10YearsView[$i]),3) = $iShow10Year Then _
				$aCtrlFrame = _FrameAroundCtrl_Create($h10YearView, $a10YearsView[$i])
			$iTo += 10
		EndIf
	Next
EndFunc
;======================

;======= 10 JAHR ======
Func _10YearCalEvent() ; Klick auf Control im 10-Jahreskalender
	GUISetState(@SW_LOCK, $h10YearCal)
	Switch @GUI_CtrlId
		Case $btPrev10Year
			If $iCurr10Year -1 < 190 Then Return
			$iCurr10YearEnd -= 10
			$iCurrYear -= 10
			$iCurr10Year -= 1
			_set10Year()
		Case $btNext10Year
			If $iCurr10Year +1 > 209 Then Return
			$iCurr10YearEnd += 10
			$iCurrYear += 10
			$iCurr10Year += 1
			_set10Year()
		Case $lb10Year
			$iShow10Year = $iCurr10Year
			_show10YearView()
	EndSwitch
	GUISetState(@SW_UNLOCK, $h10YearCal)
EndFunc

Func _YearEvent() ; Klick auf Jahr im 10-Jahreskalender
	$iCurrYear = GUICtrlRead(@GUI_CtrlId)
	$iCurr10Year = StringLeft($iCurrYear, 3)
	GUICtrlSetData($lbYear, $iCurrYear)
	_showYearCal($h10YearCal)
EndFunc

Func _set10Year()
	GUICtrlSetData($lb10Year, $iCurr10YearEnd -9 & ' - ' & $iCurr10YearEnd)
	Local $iStart = $iCurr10YearEnd -10
	For $i = 0 To 11
		GUICtrlSetData($a10Years[$i], $iStart + $i)
	Next
	If $iCurrYear = $iShowYear Then
		$aCtrlFrame = _FrameAroundCtrl_Create($h10YearCal, $a10Years[StringRight($iShowYear,1)+1])
	Else
		_FrameAroundCtrl_Delete()
	EndIf
EndFunc
;======================

;======= JAHR =========
Func _YearCalEvent() ; Klick auf Controls im Jahreskalender
	GUISetState(@SW_LOCK, $hYearCal)
	Switch @GUI_CtrlId
		Case $btPrevYear
			If $iCurrYear -1 < 1900 Then Return
			$iCurrYear -= 1
			_setYear()
		Case $btNextYear
			If $iCurrYear +1 > 2099 Then Return
			$iCurrYear += 1
			_setYear()
		Case $lbYear
			$iCurrYear = GUICtrlRead($lbYear)
			$iShowYear = $iCurrYear
			$iShow10Year = StringLeft($iShowYear, 3)
			GUICtrlSetData($lb10Year, $iCurr10Year & '0 - ' & $iCurr10YearEnd)
			_set10Year()
			_show10YearCal($hYearCal)
	EndSwitch
	GUISetState(@SW_UNLOCK, $hYearCal)
EndFunc

Func _MonthEvent() ; Klick auf Monat im Jahreskalender
	Local $sMonth = GUICtrlRead(@GUI_CtrlId)
	For $i = 0 To 11
		If $aShortMonth[$i] = $sMonth Then
			$iCurrMonth = $i +1
			ExitLoop
		EndIf
	Next
	$iShowMonth = $iCurrMonth
	$iCurrYear = GUICtrlRead($lbYear)
	$iShowYear = $iCurrYear
	$iCurr10Year = StringLeft($iCurrYear, 3)
	_setMonthView($iCurrYear, $iCurrMonth)
	_showMonthCal()
EndFunc

Func _setYear()
	$iCurr10Year = StringLeft($iCurrYear, 3)
	$iCurr10YearEnd = $iCurr10Year & 9
	GUICtrlSetData($lbYear, $iCurrYear)
	If $iCurrYear = $iShowYear Then
		$aCtrlFrame = _FrameAroundCtrl_Create($hYearCal, $aMonth[$iShowMonth-1])
	Else
		_FrameAroundCtrl_Delete()
	EndIf
EndFunc
;======================

;======= MONAT ========
Func _MonthCalEvent() ; Klick auf Controls im Monatskalender
	GUISetState(@SW_LOCK, $hMonthCal)
	Switch @GUI_CtrlId
		Case $btPrevMonth
			$iCurrMonth -= 1
			_setMonthView($iCurrYear, $iCurrMonth)
		Case $btNextMonth
			$iCurrMonth += 1
			_setMonthView($iCurrYear, $iCurrMonth)
		Case $lbMonth
			$iShowMonth = $iCurrMonth
			_showYearCal($hMonthCal)
	EndSwitch
	GUISetState(@SW_UNLOCK, $hMonthCal)
EndFunc

Func _DayEvent() ; Klick auf Tag im Monatskalender
	Local $iSetCol = $iChooseCol
	For $i = 0 To 41
		If $aDays[$i] = @GUI_CtrlId Then
			Local $sFullDate = $iCurrYear & '/' & StringRight( '0' & $iCurrMonth, 2) & '/' & GUICtrlRead($aDays[$i])
			If $oMarkedDays.Exists($sFullDate) Then
				$oMarkedDays.Remove($sFullDate)
				GUICtrlSetBkColor($aDays[$i], $DefCol)
			Else
				If $iChooseCol = -1 Then
					$iSetCol = _ChooseColor(2)
					If $iSetCol = -1 Then Return
				EndIf
				$oMarkedDays.Add($sFullDate, $iSetCol)
				GUICtrlSetBkColor($aDays[$i],$iSetCol)
			EndIf
			ExitLoop
		EndIf
	Next
EndFunc

Func _setMonthView($iYear=-1, $iMonth=-1) ; setzt Monatskalender für aktuellen Monat/Jahr
	Local $aLongMonth[13] = ['','Januar ','Februar ','März ','April ','Mai ','Juni ','Juli ','August ','September ','Oktober ','November ','Dezember ']
	If $iYear = -1 Or IsKeyword($iYear) Then $iYear = @YEAR
	If $iMonth = -1 Or IsKeyword($iMonth) Then $iMonth = @MON
	If $iMonth = 0 Then
		If $iCurrYear -1 < 1900 Then Return
		$iCurrYear -= 1
		$iCurrMonth = 12
	ElseIf $iMonth = 13 Then
		If $iCurrYear +1 > 2099 Then Return
		$iCurrMonth = 1
		$iCurrYear += 1
	Else
		$iCurrMonth = $iMonth
		$iCurrYear = $iYear
	EndIf
	$iCurr10Year = StringLeft($iCurrYear, 3)
	$iCurr10YearEnd = $iCurr10Year & 9
	GUICtrlSetData($lbMonth, $aLongMonth[$iCurrMonth] & $iCurrYear)
	_CalcDayArray()
	If $iCurrYear = @YEAR And $iCurrMonth = @MON Then	; Datum HEUTE mit Rahmen
		$aCtrlFrame = _FrameAroundCtrl_Create($hMonthCal, $TodayID)
	Else
		_FrameAroundCtrl_Delete()
	EndIf

EndFunc

Func _CalcDayArray() ; im Monatskalender Tageswerte (+ Farben, falls gesetzt) eintragen
	Local $iMonthDays = _DateDaysInMonth($iCurrYear, $iCurrMonth)
	Local $1stWeekDay = (_DateToDayOfWeekISO($iCurrYear, $iCurrMonth, 1) -1) *(-1)
	Local $s1stFullDate = $iCurrYear & '/' & $iCurrMonth & '/01'
	Local $1stWeekNum = _WeekNumberISO($iCurrYear, $iCurrMonth, '01'), $refDate, $n = 0
	For $i = 0 To 5
		GUICtrlSetTip($aToolTip[$i], $1stWeekNum +$i, 'Kalenderwoche', 1, 1)
	Next
	If $1stWeekDay <> 0 Then
		For $i = $1stWeekDay To 0
			If $i = 0 Then ExitLoop
			$refDate = _DateAdd('D', $i, $s1stFullDate)
			If $oMarkedDays.Exists($refDate) Then
				GUICtrlSetBkColor($aDays[$n], $oMarkedDays.Item($refDate))
			Else
				GUICtrlSetBkColor($aDays[$n], $DefCol)
			EndIf
			GUICtrlSetData($aDays[$n], StringRight($refDate, 2))
			GUICtrlSetState($aDays[$n], $GUI_DISABLE)
			$n += 1
		Next
	EndIf
	For $i = 0 To $iMonthDays -1
		$refDate = _DateAdd('D', $i, $s1stFullDate)
		If $oMarkedDays.Exists($refDate) Then
			GUICtrlSetBkColor($aDays[$n], $oMarkedDays.Item($refDate))
		Else
			GUICtrlSetBkColor($aDays[$n], $DefCol)
		EndIf
		GUICtrlSetData($aDays[$n], StringRight($refDate, 2))
		GUICtrlSetState($aDays[$n], $GUI_ENABLE)
		If StringRight($refDate, 2) = @MDAY Then $TodayID = $aDays[$n]
		$n += 1
	Next
	$i = $iMonthDays
	While $n <= 41
		$refDate = _DateAdd('D', $i, $s1stFullDate)
		If $oMarkedDays.Exists($refDate) Then
			GUICtrlSetBkColor($aDays[$n], $oMarkedDays.Item($refDate))
		Else
			GUICtrlSetBkColor($aDays[$n], $DefCol)
		EndIf
		GUICtrlSetData($aDays[$n], StringRight($refDate, 2))
		GUICtrlSetState($aDays[$n], $GUI_DISABLE)
		$i += 1
		$n += 1
	WEnd
EndFunc
;======================

;======= RAHMEN =======
Func _FrameAroundCtrl_Create($hWnd, $ID) ; roten Rahmen um Control zeichnen
	_FrameAroundCtrl_Delete()
	Local $aSize[4]
	If $hWnd = $h10YearView Then ; VonJahr-BisJahr als ein Ctrl berechnen
		Local $ID_start, $ID_end
		If StringRight(GUICtrlRead($ID), 1) = 0 Then
			$ID_start = $ID
		ElseIf StringRight(GUICtrlRead($ID), 1) = 9 Then
			$ID_start = $ID -1
		EndIf
		Local $aPos = ControlGetPos($hWnd, '', $ID_start)
		$aSize[0] = $aPos[0]
		$aSize[1] = $aPos[1]
		$aSize[2] = $aPos[2]
		$aSize[3] = 2 *$aPos[3]
	Else
		$aSize = ControlGetPos($hWnd, '', $ID)
	EndIf
	Local $aFrame[4] = [ _
		GUICtrlCreateLabel('', $aSize[0] -1, $aSize[1] -1, $aSize[2] +2, 1), _         ; top
		GUICtrlCreateLabel('', $aSize[0] -1, $aSize[1] +$aSize[3], $aSize[2] +2, 1), _ ; bottom
		GUICtrlCreateLabel('', $aSize[0] -1, $aSize[1], 1, $aSize[3]), _               ; left
		GUICtrlCreateLabel('', $aSize[0] +$aSize[2], $aSize[1], 1, $aSize[3])]         ; right
	For $i = 0 To 3
		GUICtrlSetBkColor($aFrame[$i], 0xFF0000)
	Next
	Return $aFrame
EndFunc

Func _FrameAroundCtrl_Delete() ; Rahmen löschen
	If Not IsArray($aCtrlFrame) Then Return
	GUISetState(@SW_LOCK, WinGetHandle('[ACTIVE]'))
	For $i = 0 To 3
		GUICtrlDelete($aCtrlFrame[$i])
	Next
	GUISetState(@SW_UNLOCK, WinGetHandle('[ACTIVE]'))
	$aCtrlFrame = 0
EndFunc
;======================

Func _WM_MOVE($hWnd)
	Local $pos = WinGetPos($hWnd)
    Switch $hWnd
		Case $h10YearView
			WinMove($h10YearCal, '', $pos[0], $pos[1])
			WinMove($hYearCal, '', $pos[0], $pos[1])
			WinMove($hMonthCal, '', $pos[0], $pos[1])
		Case $h10YearCal
			WinMove($h10YearView, '', $pos[0], $pos[1])
			WinMove($hYearCal, '', $pos[0], $pos[1])
			WinMove($hMonthCal, '', $pos[0], $pos[1])
		Case $hYearCal
			WinMove($h10YearView, '', $pos[0], $pos[1])
			WinMove($h10YearCal, '', $pos[0], $pos[1])
			WinMove($hMonthCal, '', $pos[0], $pos[1])
		Case $hMonthCal
			WinMove($h10YearView, '', $pos[0], $pos[1])
			WinMove($h10YearCal, '', $pos[0], $pos[1])
			WinMove($hYearCal, '', $pos[0], $pos[1])
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc
