#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Pic\ICON_541.ICO
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <Date.au3>
#include <GuiScrollBars.au3>
#include <GUIConstantsEx.au3>
#include <ScrollBarConstants.au3>
#include <WindowsConstants.au3>
#include <_ArrayMultiDisplay.au3>

#include <StaticConstants.au3>
#include <ProgressConstants.au3>
Opt('MustDeclareVars', 1)
Opt('GUIOnEventMode', 1)

Global $Form[5], $Benutzer, $xXx = 0, $vSG = 'F|F1|F2|F3|F4|Z|Z1|S|S1|S2|S3|SS|SK|Na|U|K'
Local $F0_SYS[9]
Local $Array_Tage[31][2]
Local $St_Array_Tag[31][12][2]
Local $aTmp[31][12][2]
Local $Trans = 0.2, $x, $y, $Set_CFS
Local $W_Tag[8] = ['', 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
Local $Ex_Datein[3] = [@DesktopDir & '\Dienstplan.lnk', @ScriptDir & '\Druckerbank.html', @ScriptDir & '\data\Schichten.ini']
Local $Monat[13] = ['', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
Local $Soll[12][2], $Ist[12], $Urlaub[12][2], $Soller[12], $Uebertrag[12][2], $Group[12], $R_Label[12][2], $Name[12][2], $Progress[12], $ProgressLabel[12], $Feiertage[7]
Local $Menue[8], $B_Menue[8][2] = [['A&nsicht Speichern', ''],['S&peicherabfrage', ''],['S&chichtsetzen', ''],['M&onat Einlesen', ''],['A&nsicht Leeren', ''],['', ''],['B&enden', 'GUI_Exit']]


$Form[0] = GUICreate('', 1010, 700, -1, -1)
GUISetBkColor(0xFFFACD, $Form[0]); W 0xFFFFFF; G 0xFFFACD
GUISetOnEvent(-3, 'GUI_Exit')
$F0_SYS[1] = GUICtrlCreateMenu('  M&enü  ')
For $i = 0 To 7
	$Menue[$i] = GUICtrlCreateMenuItem($B_Menue[$i][0], $F0_SYS[1])
	GUICtrlSetOnEvent(-1, $B_Menue[$i][1])
Next
GUICtrlCreateLabel('Monat:', 10, 16, 43, 20)
GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
GUICtrlCreateLabel('Soll', 853, 78, 20, 15)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetTip(-1, 'Gesamter Monats Zeitraum ')
GUICtrlCreateLabel('Ist', 900, 78, 20, 15)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetTip(-1, 'Wieviel im Monat geleistet')
GUICtrlCreateLabel('+/-', 940, 78, 42, 15)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetTip(-1, 'Plus Minus Stunden Übertragen')
GUICtrlCreateLabel('Jahr :', 25, 53, 40, 20)
GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
$F0_SYS[2] = GUICtrlCreateCombo('', 60, 15, 105, 20)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetOnEvent(-1, 'W_Rechnung')
GUICtrlSetData($F0_SYS[2], _ArrayToString($Monat))
;$F0_SYS[3] = GUICtrlCreateLabel('0', -100, 0, 0, 0)
$F0_SYS[4] = GUICtrlCreateLabel(@YEAR, 75, 53, 40, 19)
GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
$F0_SYS[5] = GUICtrlCreateButton('-', 128, 52, 17, 17)
GUICtrlSetOnEvent(-1, 'W_Rechnung')
$F0_SYS[6] = GUICtrlCreateButton('+', 145, 52, 17, 17)
GUICtrlSetOnEvent(-1, 'W_Rechnung')
$F0_SYS[7] = GUICtrlCreateLabel('', 875, 44, 60, 25)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetColor(-1, 0x0000FF)
$F0_SYS[8] = GUICtrlCreateLabel('Feiertage:', 177, 17, 80, 20)
GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
GUICtrlSetColor(-1, 0x0000FF)
$x = 174
For $i = 0 To 30
	$Array_Tage[$i][0] = GUICtrlCreateLabel(StringRight('0' & $i + 1, 2), $x + 1, 46, 19, 18, 0x01)
	GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
	$Array_Tage[$i][1] = GUICtrlCreateLabel('', ($x) + 1.5, 69, 19, 18, 0x01)
	GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
	$x += 21.5
Next
$Form[1] = GUICreate('', 1009, 579, 0, 100, 0x40000000, '', $Form[0])
GUISetBkColor(0xFFFACD, $Form[1]); W 0xFFFFFF; G 0xFFFACD

For $n = 0 To 1
	$y = 20
	If $n Then $y += 21
	For $e = 0 To 11
		$x = 176
		For $i = 0 To 30
			$St_Array_Tag[$i][$e][$n] = GUICtrlCreateInput('', $x, $y, 21, 20)
			$aTmp[$i][$e][$n] = 0
			$x += 22
		Next
		$y += 70
	Next
Next

$x = 31
For $i = 0 To 11
	$Soll[$i][0] = GUICtrlCreateInput('', 130, $x, 45, 19, 0x2000)
	$Soll[$i][1] = GUICtrlCreateInput('', 858, ($x - 17), 45, 21, 0x0800)
	$Name[$i][0] = GUICtrlCreateInput('', 9, ($x - 22), 120, 21)
	$Name[$i][1] = GUICtrlCreateInput('', 9, ($x + 1), 120, 19)
	$R_Label[$i][0] = GUICtrlCreateLabel('R=', 111, ($x + 24), 18, 12)
	$R_Label[$i][1] = GUICtrlCreateLabel('R=', 880, ($x + 20), 20, 12)
	$Uebertrag[$i][0] = GUICtrlCreateInput('', 130, ($x - 22), 45, 21)
	$Uebertrag[$i][1] = GUICtrlCreateInput('', 950, ($x - 17), 45, 21, 0x0800)
	$Urlaub[$i][0] = GUICtrlCreateInput('', 130, ($x + 20), 45, 18, 0x2000)
	$Urlaub[$i][1] = GUICtrlCreateInput('', 904, ($x + 14), 45, 21, 0x0800)
	$Ist[$i] = GUICtrlCreateInput('', 904, ($x - 17), 45, 21, 0x0800)
	$Soller[$i] = GUICtrlCreateInput('', 950, ($x + 14), 45, 21, 0x0800)
	$Group[$i] = GUICtrlCreateGroup('', 858, ($x + 11), 45, 25)
	$Progress[$i] = GUICtrlCreateProgress(9, ($x + 21), 70, 19)
	$ProgressLabel[$i] = GUICtrlCreateLabel(' 0%', 80, ($x + 24), 30, 20)
	GUICtrlSetColor($ProgressLabel[$i], 0x0000FF)
	$x += 70
Next
GUISetState()
;GUISetState(@SW_HIDE, $Form[1])
GUISwitch($Form[0])
GUICtrlSetResizing($Form[1], 802)
$x = 245
For $i = 0 To 6
	$Feiertage[$i] = GUICtrlCreateLabel('', $x, 17, 70, 18)
	GUICtrlSetColor(-1, 0x0000FF)
	GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
	GUICtrlSetOnEvent(-1, 'Set_Color_Feiertage')
	$x += 75
Next
WinSetTrans($Form[0], '', 0)
_GUIScrollBars_Init($Form[1])
GUIRegisterMsg(0x0115, 'WM_VSCROLL')
GUISetState()

GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
;_ArrayMultiDisplay($St_Array_Tag)


$Form[2] = GUICreate('Feiertage', 370, 420, -1, -1)
GUISetOnEvent(-3, 'GUI_HIDE')
GUICtrlCreateLabel('Die zutreffenden Feiertage des jeweiligen Bundesland auswählen.', 25, 10, 390, 20)
GUICtrlSetColor(-1, 0x0000FF)
Local $Feiertage_SHOW[32], $Set_Feiertage = _Feiertage(GUICtrlRead($F0_SYS[4])), $L = 20, $H = 50
For $i = 0 To 31
	If ($i = 16) Then
		$L = 200
		$H = 50
	EndIf
	$Feiertage_SHOW[$i] = GUICtrlCreateButton($Set_Feiertage[$i][1], $L, $H, 150, 20)
	GUICtrlSetOnEvent(-1, '')
	$H += 22
Next
GUISetState(@SW_HIDE, $Form[2])
#comments-start
	$Benutzer = GUICreate('', 230, 130, -1, -1, @SW_DISABLE)
	GUICtrlCreateLabel('Benutzer:', 20, 16, 80, 20)
	Local $InputBenu = GUICtrlCreateInput('', 100, 16, 100, 19)
	GUICtrlCreateLabel('Password:', 20, 48, 80, 15)
	Local $InputPass = GUICtrlCreateInput('', 100, 48, 100, 19)
	GUISetState()
#comments-end

Func W_Rechnung()
	If Not GUICtrlRead($F0_SYS[2]) Then Return 1
	Local $W_SYS[8], $IniAus, $StringSplit, $Time = TimerInit()
	Switch @GUI_CtrlId
		Case $F0_SYS[5]
			GUICtrlSetData($F0_SYS[4], GUICtrlRead($F0_SYS[4]) - 1)
		Case $F0_SYS[6]
			GUICtrlSetData($F0_SYS[4], GUICtrlRead($F0_SYS[4]) + 1)
	EndSwitch
	$W_SYS[0] = GUICtrlRead($F0_SYS[4])
	$W_SYS[1] = M_Zahl(GUICtrlRead($F0_SYS[2]))
	$W_SYS[2] = _DateDaysInMonth($W_SYS[0], $W_SYS[1])
	$W_SYS[3] = @ScriptDir & '\data\Feiertage' & $W_SYS[0] & '.ini'
	;If Not FileExists($W_SYS[3]) Then Return GUISetState(@SW_SHOW, $Form[2])
	GUICtrlSetData($F0_SYS[7], '')
	If GUICtrlRead($Feiertage[0]) Then
		For $i = 0 To 6
			If Not GUICtrlRead($Feiertage[$i]) Then ContinueLoop
			For $n = 0 To 1
				For $e = 0 To 11
					GUICtrlSetTip($St_Array_Tag[StringLeft(GUICtrlRead($Feiertage[$i]), 2) - 1][$e][$n], '')
				Next
			Next
			GUICtrlSetData($Feiertage[$i], '')
		Next
	EndIf
	If Not GUICtrlRead($Array_Tage[30][1]) Then
		For $i = 28 To 30
			For $e = 0 To 11
				For $n = 0 To 1
					GUICtrlSetState($St_Array_Tag[$i][$e][$n], $GUI_ENABLE)
				Next
			Next
		Next
	EndIf
	For $i = 0 To 30
		$W_SYS[4] = _DateToDayOfWeek($W_SYS[0], $W_SYS[1], GUICtrlRead($Array_Tage[$i][0]))
		GUICtrlSetData($Array_Tage[$i][1], W_Tag($W_SYS[4]))
		Switch $W_SYS[4]
			Case 2 To 6
				For $n = 0 To 1
					For $e = 0 To 11
						GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xFFFFFF)
					Next
				Next
				GUICtrlSetColor($Array_Tage[$i][0], 0x000000)
				GUICtrlSetColor($Array_Tage[$i][1], 0x000000)
			Case 1, 7
				For $n = 0 To 1
					For $e = 0 To 11
						GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xDADBE5)
					Next
				Next
				GUICtrlSetColor($Array_Tage[$i][0], 0xff0000)
				GUICtrlSetColor($Array_Tage[$i][1], 0xff0000)
				$W_SYS[5] += 1
			Case Else
				For $n = 0 To 1
					For $e = 0 To 11
						GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xFFFFFF)
						GUICtrlSetState($St_Array_Tag[$i][$e][$n], $GUI_DISABLE)
					Next
				Next
				GUICtrlSetColor($Array_Tage[$i][0], 0x000000)
		EndSwitch
	Next
	$IniAus = IniReadSection($W_SYS[3], GUICtrlRead($F0_SYS[2]))
	If IsArray($IniAus) Then
		_ArraySort($IniAus, 0, 0, 0, 1)
		For $i = 1 To UBound($IniAus) - 1
			$StringSplit = StringSplit($IniAus[$i][1], '.')
			For $n = 0 To 1
				For $e = 0 To 11
					GUICtrlSetTip($St_Array_Tag[$StringSplit[1] - 1][$e][$n], $IniAus[$i][1] & '  ist ein Feiertag', $IniAus[$i][0], 1)
				Next
			Next
			$W_SYS[4] = _DateToDayOfWeek($StringSplit[3], $StringSplit[2], $StringSplit[1])
			If ($W_SYS[4] <> 1 And $W_SYS[4] <> 7) Then $W_SYS[6] += 1
			GUICtrlSetData($Feiertage[$i - 1], $IniAus[$i][1])
		Next
	EndIf
	If (Schaltjahr($W_SYS[0])) Then GUICtrlSetData($F0_SYS[7], 'Schaltjahr')
	$xXx = ($W_SYS[2] - $W_SYS[5] - $W_SYS[6])
	ConsoleWrite('Nettoarbeitstage : ' & $xXx & '   Ende Time:  ' & Round(TimerDiff($Time)) & @CRLF)
EndFunc   ;==>W_Rechnung

Func Set_Color_Feiertage()
	Local $Datum = GUICtrlRead(@GUI_CtrlId, 1)
	If Not $Datum Then Return (0)
	Local $StringSplit = StringSplit($Datum, '.')
	If IsArray($StringSplit) Then
		Local $Color, $Ta_Pr = _DateToDayOfWeek(GUICtrlRead($F0_SYS[4]), M_Zahl(GUICtrlRead($F0_SYS[2])), GUICtrlRead($Array_Tage[$StringSplit[1] - 1][0]))
		If $Set_CFS Then
			$Color = 0xFFFFFF
			If ($Ta_Pr = 1) Or ($Ta_Pr = 7) Then $Color = 0xDADBE5
			$Set_CFS = 0
		Else
			$Color = 0xaaafff
			$Set_CFS = 1
		EndIf
		For $i = 0 To 11
			For $n = 0 To 1
				GUICtrlSetBkColor($St_Array_Tag[$StringSplit[1] - 1][$i][$n], $Color)
			Next
		Next
	EndIf
EndFunc   ;==>Set_Color_Feiertage

Func W_Tag($W_Tag_N)
	Return $W_Tag[$W_Tag_N]
EndFunc   ;==>W_Tag

Func M_Zahl($M_Zahl)
	For $i = 1 To UBound($Monat) - 1
		If ($M_Zahl = $Monat[$i]) Then Return $i
	Next
EndFunc   ;==>M_Zahl

Func Schaltjahr($JahresZahl)
	Return (Mod($JahresZahl, 4) = 0 And Mod($JahresZahl, 100) <> 0 Or Mod($JahresZahl, 400) = 0)
EndFunc   ;==>Schaltjahr

Func _Feiertage($year, $DateTyp = 1)
	Dim $HDays[32][2], $Sy[32], $tmp
	$Sy[0] = Mod($year, 19)
	$Sy[1] = Int($year / 100)
	$Sy[2] = Int($year / 400)
	$Sy[3] = Mod((19 * $Sy[0] + (15 + $Sy[1] - $Sy[2] - Floor(Int((8 * $Sy[1] + 13) / 25)))), 30)
	$Sy[4] = Mod((2 * Mod($year, 4) + 4 * Mod($year, 7) + 6 * $Sy[3] + (4 + $Sy[1] - $Sy[2])), 7)
	If ($Sy[3] + $Sy[4] = 35) Then
		$Sy[5] = 50
	Else
		If ($Sy[3] = 28 And $Sy[4] = 6 And $Sy[0] > 10) Then
			$Sy[5] = 49
		Else
			$Sy[5] = 22 + $Sy[3] + $Sy[4]
		EndIf
	EndIf
	If ($Sy[5] < 32) Then
		$Sy[6] = $Sy[5]
		$Sy[7] = '03'
	Else
		$Sy[6] = $Sy[5] - 31
		$Sy[7] = '04'
	EndIf
	If ($Sy[6] < 10) Then $Sy[6] = '0' & $Sy[6]
	If ($year < 1900) Then
		$Sy[8] = Mod($year, 100)
		If _DateIsLeapYear($year) Then
			If $Sy[8] < 10 Then $Sy[8] = '0' & $Sy[8]
			$Sy[9] = 20 & $Sy[8]
		Else
			If $Sy[8] < 10 Then $Sy[8] = '0' & $Sy[8]
			$Sy[9] = 19 & $Sy[8]
		EndIf
		$Sy[10] = $Sy[9] & '/' & $Sy[7] & '/' & $Sy[6]
	Else
		$Sy[10] = $year & '/' & $Sy[7] & '/' & $Sy[6]
	EndIf
	$Sy[11] = _DateAdd('d', -52, $Sy[10])
	$Sy[12] = _DateAdd('d', -48, $Sy[10])
	$Sy[13] = _DateAdd('d', -47, $Sy[10])
	$Sy[14] = _DateAdd('d', -46, $Sy[10])
	$Sy[15] = _DateAdd('d', -3, $Sy[10])
	$Sy[16] = _DateAdd('d', -2, $Sy[10])
	$Sy[17] = _DateAdd('d', -1, $Sy[10])
	$Sy[18] = $Sy[10]
	$Sy[19] = _DateAdd('d', 1, $Sy[10])
	$Sy[20] = _DateAdd('d', 39, $Sy[10])
	$Sy[21] = _DateAdd('d', 49, $Sy[10])
	$Sy[22] = _DateAdd('d', 50, $Sy[10])
	$Sy[23] = _DateAdd('d', 60, $Sy[10])
	For $i = 8 To 14
		If (_DateToDayOfWeek($year, 5, $i) = 1) Then
			If $i < 10 Then $i = '0' & $i
			$Sy[24] = $year & '/05/' & $i
			If ($Sy[24] = $Sy[21]) Then $Sy[24] = _DateAdd('d', -7, $year & '/05/' & $i)
			ExitLoop
		EndIf
	Next
	For $i = 1 To 7
		If (_DateToDayOfWeek($year, 10, $i) = 1) Then
			$i = '0' & $i
			$Sy[25] = $year & '/10/' & $i
			ExitLoop
		EndIf
	Next
	For $i = 18 To 24
		If (_DateToDayOfWeek($year, 12, $i) = 1) Then
			$Sy[26] = $year & '/12/' & $i
			$Sy[27] = _DateAdd('d', -7, $Sy[26])
			$Sy[28] = _DateAdd('d', -14, $Sy[26])
			$Sy[29] = _DateAdd('d', -21, $Sy[26])
			$Sy[30] = _DateAdd('d', -28, $Sy[26])
			$Sy[31] = _DateAdd('d', -32, $Sy[26])
			ExitLoop
		EndIf
	Next
	Dim $HDS[32] = [$year & '/01/01\Neujahr', $year & '/01/06\Heilige Drei Könige', $year & '/02/14\Valentinstag', $year & '/05/01\Maifeiertag', $year & '/10/03\Tag der Deutschen Einheit', _
			$year & '/10/31\Reformationstag', $year & '/11/01\Allerheiligen', $year & '/12/24\Heiligabend', $year & '/12/25\1. Weihnachtsfeiertag', $year & '/12/26\2. Weihnachtsfeiertag', _
			$year & '/12/31\Silvester', $Sy[11] & '\Weiberfastnacht', $Sy[12] & '\Rosenmontag', $Sy[13] & '\Fastnacht', $Sy[14] & '\Aschermittwoch', $Sy[15] & '\Gründonnerstag', _
			$Sy[16] & '\Karfreitag', $Sy[17] & '\Ostersamstag', $Sy[18] & '\Ostersonntag', $Sy[19] & '\Ostermontag', $Sy[20] & '\Christi Himmelfahrt', $Sy[21] & '\Pfingstsonntag', _
			$Sy[22] & '\Pfingstmontag', $Sy[24] & '\Muttertag', $Sy[23] & '\Fronleichnam', $Sy[25] & '\Erntedankfest', $Sy[31] & '\Buß- und Bettag', $Sy[30] & '\Totensonntag', _
			$Sy[29] & '\1. Advent', $Sy[28] & '\2. Advent', $Sy[27] & '\3. Advent', $Sy[26] & '\4. Advent']
	For $i = 0 To 31
		$HDays[$i][0] = $HDS[$i]
		If $DateTyp Then
			$tmp = StringSplit($HDays[$i][0], '\', 2)
			$HDays[$i][0] = StringMid($tmp[0], 9) & '.' & StringMid($tmp[0], 6, 2) & '.' & StringMid($tmp[0], 1, 4)
			$HDays[$i][1] = $tmp[1]
		Else
			$HDays[$i][1] = StringTrimLeft($HDays[$i][0], 11)
			$HDays[$i][0] = StringLeft($HDays[$i][0], 10)
		EndIf
	Next
	Return $HDays
EndFunc   ;==>_Feiertage

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
	Local $WM_SYS[6]
	For $x = 0 To UBound($aSB_WindowInfo) - 1
		If ($aSB_WindowInfo[$x][0] = $hWnd) Then
			$WM_SYS[0] = $x
			$WM_SYS[1] = $aSB_WindowInfo[$WM_SYS[0]][2] - 2.5
			ExitLoop
		EndIf
	Next
	If ($WM_SYS[0] = -1) Then Return 1
	$WM_SYS[2] = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
	$WM_SYS[3] = DllStructGetData($WM_SYS[2], 'nPos')
	$WM_SYS[4] = DllStructGetData($WM_SYS[2], 'nTrackPos')
	Switch BitAND($wParam, 0x0000FFFF)
		Case $SB_LINEUP
			DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[3] - 1)
		Case $SB_LINEDOWN
			DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[3] + 1)
		Case $SB_THUMBTRACK
			DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[4])
	EndSwitch
	DllStructSetData($WM_SYS[2], 'fMask', $SIF_POS)
	_GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $WM_SYS[2])
	$WM_SYS[5] = DllStructGetData($WM_SYS[2], 'nPos')
	If ($WM_SYS[5] <> $WM_SYS[3]) Then _GUIScrollBars_ScrollWindow($hWnd, 0, $WM_SYS[1] * ($WM_SYS[3] - $WM_SYS[5]))
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_VSCROLL


Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
	;ConsoleWrite(BitShift($wParam, 16) & '  ' & BitAND($wParam, 0xFFFF)  & '  ' & GUICtrlRead(BitAND($wParam, 0xFFFF), 1) & @CR)
	Local $HiWord = BitShift($wParam, 16)
	If ($HiWord = 1024 Or $HiWord = 6) Then
		Local $GetSA, $Minus
		Local $LoWord = BitAND($wParam, 0xFFFF)
		Local $GetLoWord = StringUpper(GUICtrlRead($LoWord, 1))
		If Not GUICtrlRead($F0_SYS[2]) Then Return GUICtrlSetData($LoWord, '')
		GUICtrlSetData($LoWord, $GetLoWord)
		For $n = 0 To 1
			For $e = 0 To 11
				For $i = 0 To 30
					If ($St_Array_Tag[$i][$e][$n] = $LoWord) Then
						GUICtrlSetData($Soll[$e][1], StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5 * $xXx)
						If StringIsDigit($GetLoWord) Or StringLen($GetLoWord) > 2 Then Return 1
						If Not $GetLoWord Then
							$GetLoWord = $aTmp[$i][$e][$n]
							$aTmp[$i][$e][$n] = 0
							$Minus = 1
						Else
							If Not StringInStr($vSG, $GetLoWord) Then Return 1
							$GetSA = $aTmp[$i][$e][$n]
							$aTmp[$i][$e][$n] = $GetLoWord
							$Minus = 0
						EndIf
						$GetLoWord = B_in_Z($GetLoWord)
						If $GetLoWord Then
							If $Minus Then
								_GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - $GetLoWord), GUICtrlRead($Soll[$e][1]))
							Else
								If $GetSA Then
									_GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - B_in_Z($GetSA)) + $GetLoWord, GUICtrlRead($Soll[$e][1]))
								Else
									_GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) + $GetLoWord), GUICtrlRead($Soll[$e][1]))
								EndIf
							EndIf
						Else
							If $Minus Then
								_GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
							Else
								If $GetSA Then
									_GUICtrlSetData($e, ((GUICtrlRead($Ist[$e]) - B_in_Z($GetSA)) + (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
								Else
									_GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) + (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
								EndIf
							EndIf
						EndIf
						Return 1
					EndIf
				Next
			Next
		Next
	EndIf
	Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_COMMAND

Func B_in_Z($B_in_Z)
	Local $Get_B_in_Z[17][2] = [['F', 8.3],['FS', 3.85],['F1', 5.75],['F2', 6.3],['F3', 8.3],['F4', 5.25],['Z', 8.3],['Z1', 8.3],['S', 8.3],['S1', 8.3],['S2', 6.8],['S3', 5.85],['SS', 3.85],['SK', 2.85],['Na', 9.3],['U', 0],['K', 0]]
	For $i = 0 To 16
		If ($Get_B_in_Z[$i][0] = $B_in_Z) Then Return $Get_B_in_Z[$i][1]
	Next
EndFunc   ;==>B_in_Z

Func _GUICtrlSetData(Const $sIndex, Const $sIst, Const $sSol)
	GUICtrlSetData($Ist[$sIndex], $sIst)
	GUICtrlSetData($Progress[$sIndex], ($sIst * 100) / $sSol)
	Return GUICtrlSetData($ProgressLabel[$sIndex], ' ' & Round(($sIst * 100) / $sSol) & '%')
EndFunc   ;==>_GUICtrlSetData

If (@OSArch = 'X86') Then $Trans = 10
For $i = 0 To 255 Step +$Trans
	WinSetTrans($Form[0], '', $i)
Next

While True * Sleep(10)
WEnd

Func GUI_Control_HIDE()
	GUISetState(@SW_HIDE, @GUI_WinHandle)
EndFunc   ;==>GUI_Control_HIDE

Func GUI_HIDE()
	GUISetState(@SW_HIDE, @GUI_WinHandle)
EndFunc   ;==>GUI_HIDE

Func GUI_Control_Exit()
	Exit
EndFunc   ;==>GUI_Control_Exit

Func GUI_Exit()
	Exit
EndFunc   ;==>GUI_Exit