#include <GUIConstants.au3>
#include <GuiListView.au3>
Opt("GUIOnEventMode", 1)

Dim $create = "                                                                                            Erstellt mit AutoIt (www.autoit.de)"
Dim $title1 = "100.000 für 10"&$create, $title2 = "50.000 für 5     "&$create, $spiel = 0 ; 0=100.000->10 , 1=50.000->5
Dim $arAlleSN, $arTreffer[1][2], $Fehler = 0, $SN
Dim $alleRichtig = 0, $dreiRichtig = 0, $zweiRichtig = 0, $einRichtig = 0, $lastEntry, $new = 0
Dim $rot = 0xFF0000, $lightcyan = 0xE0FFFF, $indigo = 0x4B0082, $limegreen = 0x32CD32, $springgreen = 0x00FA9A
Dim $black = 0x000000, $crimson = 0xDC143C, $lemonchiffon = 0xFFFACD, $pink = 0xFF69B4
$arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
If @error = 1 Then $Fehler = 1
$arTreffer[0][0] = 0

$Form1 = GUICreate($title1, 636, 384, -1, -1)
GUISetBkColor($lemonchiffon)
GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
$GroupSystem = GUICtrlCreateGroup("Spielsystem", 17, 8, 607, 40)
$Radio00 = GUICtrlCreateRadio("50.000 für &5", 104, 21, 140)
GUICtrlSetOnEvent(-1, "Radio50")
$Radio01 = GUICtrlCreateRadio("100.000 für &10", 400, 21, 140)
GUICtrlSetOnEvent(-1, "Radio100")
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ListView1 = GUICtrlCreateListView("Seriennummern", 17, 59, 353, 305)
GUICtrlSetColor(-1, $indigo)
_GUICtrlListViewSetColumnWidth(-1, 0, 349)
GUICtrlSetBkColor(-1, $lightcyan)
GUICtrlSetTip(-1, "Per Tastatur wechseln Sie mit:"& @LF & @LF &"               Strg+s"& @LF & @LF& "    in die Seriennummernliste.")
$Group0 = GUICtrlCreateGroup(" Modus ", 384, 57, 240, 40)
$Radio1 = GUICtrlCreateRadio("E&rfassen", 400, 70, 80)
GUICtrlSetOnEvent(-1, "RadioErfassen")
$Radio2 = GUICtrlCreateRadio("Ver&gleichen", 520, 70, 80)
GUICtrlSetOnEvent(-1, "RadioVergleichen")
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group1 = GUICtrlCreateGroup(" Seriennummer ", 384, 99, 240, 57)
$Input1 = GUICtrlCreateInput("", 395, 121, 220, 21, $ES_UPPERCASE)
GUICtrlSetColor(-1, $crimson)
GUICtrlSetBkColor(-1, $lightcyan)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("&Vergleichen", 384, 168, 70, 21, 0)
GUICtrlSetOnEvent(-1, "Vergleichen")
$Group2 = GUICtrlCreateGroup(" Ergebnis ", 384, 198, 240, 167)
$Label0 = GUICtrlCreateLabel("Hauptgewinn", 465, 216, 110, 20)
GUICtrlSetColor($Label0, $rot)
GUICtrlSetStyle(-1, $WS_DISABLED)
$Label1 = GUICtrlCreateLabel("letzte 3 Ziffern richtig", 396, 254, 102, 17)
GUICtrlSetStyle(-1, $WS_DISABLED)
$Label2 = GUICtrlCreateLabel("letzte 2 Ziffern richtig", 396, 292, 102, 17)
GUICtrlSetStyle(-1, $WS_DISABLED)
$Label3 = GUICtrlCreateLabel("letzte Ziffer richtig", 396, 330, 87, 17)
GUICtrlSetStyle(-1, $WS_DISABLED)
$Input2 = GUICtrlCreateInput("", 550, 251, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
$Input3 = GUICtrlCreateInput("", 550, 289, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
$Input4 = GUICtrlCreateInput("", 550, 327, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("&Ende", 554, 168, 70, 21, 0)
GUICtrlSetOnEvent(-1, "Ende")
$Button3 = GUICtrlCreateButton("&Löschen", 469, 168, 70, 21, 0)
GUICtrlSetOnEvent(-1, "DeleteSN")

If $Fehler = 1 Then
	$lastEntry = 0
Else
	$lastEntry = StringTrimLeft($arAlleSN[$arAlleSN[0][0]][1], 2)
	_ListAllSN()
EndIf
If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then 
	GUICtrlSetState($Button3, $GUI_DISABLE)
Else
	GUICtrlSetState($Button3, $GUI_ENABLE)
EndIf

GUISetState(@SW_SHOW)
ControlFocus("", "", $Input1)
_SetTextCol()

HotKeySet("^s", "_StrgS")

While 1
	Sleep(100)
WEnd

Func _StrgS()
	If _GUICtrlListViewGetItemCount($listView1) > 0 Then
		GUICtrlSetState($ListView1, $GUI_FOCUS)
		_GUICtrlListViewSetItemSelState($listView1, 0, 1, 1)
	Else
		ControlFocus("", "", $Input1)
	EndIf
EndFunc

Func _ListAllSN()
	If IsArray($arAlleSN) Then
		For $i = 1 To $arAlleSN[0][0]
			_GUICtrlListViewInsertItem($ListView1, -1, $arAlleSN[$i][1])
		Next
	EndIf
EndFunc

Func _SetTextCol()
	; Spielart
	If GUICtrlRead($Radio00) = 1 Then
		GUICtrlSetColor($Radio00, $limegreen)
		GUICtrlSetColor($Radio01, $black)
	Else
		GUICtrlSetColor($Radio00, $black)
		GUICtrlSetColor($Radio01, $limegreen)
	EndIf
	; Modus
	If GUICtrlRead($Radio1) = 1 Then
		GUICtrlSetColor($Radio1, $limegreen)
		GUICtrlSetColor($Radio2, $black)
	Else
		GUICtrlSetColor($Radio1, $black)
		GUICtrlSetColor($Radio2, $limegreen)
	EndIf
EndFunc

Func Radio50()
	WinSetTitle($Form1, "", $title2)
	$spiel = 1
	_SetTextCol()
	ControlFocus("", "", $Input1)
EndFunc

Func Radio100()
	WinSetTitle($Form1, "", $title1)
	$spiel = 0
	_SetTextCol()
	ControlFocus("", "", $Input1)
EndFunc

Func RadioErfassen()
	_SetTextCol()
	GUICtrlSetData($Button1, "Er&fassen")
	If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then 
		GUICtrlSetState($Button3, $GUI_DISABLE)
	Else
		GUICtrlSetState($Button3, $GUI_ENABLE)
	EndIf
	GUICtrlSetStyle($Label0, $WS_DISABLED)
	GUICtrlSetFont($Label0, 9, 400)
	GUICtrlSetStyle($Label1, $WS_DISABLED)
	GUICtrlSetStyle($Label2, $WS_DISABLED)
	GUICtrlSetStyle($Label3, $WS_DISABLED)
	_GUICtrlListViewDeleteAllItems($ListView1)
	If $Fehler = 0 Then _ListAllSN()
	ControlFocus("", "", $Input1)
	GUICtrlSetData($Input2, "")
	GUICtrlSetData($Input3, "")
	GUICtrlSetData($Input4, "")
EndFunc

Func RadioVergleichen()
	_SetTextCol()
	GUICtrlSetData($Button1, "&Vergleichen")
	ControlFocus("", "", $Input1)
EndFunc

Func Vergleichen()
	If GUICtrlRead($Radio2) = 1 Then ; vergleichen
		If $Fehler = 1 Then
			MsgBox(48, 'ACHTUNG', "Es sind noch keine Seriennummern zum Vergleich hinterlegt!")
			Return
		EndIf
		If GUICtrlRead($Input1) = "" Then
			MsgBox(48, 'ACHTUNG', "Bitte eine Seriennummer eingeben!")
			Return
		EndIf			
		_vergleich()
		_GUICtrlListViewDeleteAllItems($ListView1)
		_treffer()
		$alleRichtig = 0
	Else ; erfassen
		$SN = GUICtrlRead($Input1)
		If $SN <> "" Then
			_GUICtrlListViewInsertItem($ListView1, -1, $SN)
			IniWrite(@ScriptDir & "\SN10Euro.INI", "serien", "sn" & $lastEntry +1, $SN)
			$lastEntry += 1
			$Fehler = 0
			$new = 1
			GUICtrlSetState($Button3, $GUI_ENABLE)
		Else
			MsgBox(0, 'ACHTUNG!', "Bitte eine Seriennummer für Vergleich eingeben!")
		EndIf
	EndIf
	ControlFocus("", "", $Input1)
EndFunc

Func DeleteSN()
Dim $tmp
	If $new = 1 Then $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
	$tmp = _GUICtrlListViewGetItemText($ListView1)
	If $tmp <> "" And MsgBox(292,"Löschen","Soll die Seriennummer:" & @LF & $tmp & @LF & "wirklich gelöscht werden?") = 6 Then
		For $i = 1 To $arAlleSN[0][0]
			If $arAlleSN[$i][1] = $tmp Then 
				$arAlleSN[$i][1] = ""
				ExitLoop
			EndIf
		Next
		FileDelete(@ScriptDir & "\SN10Euro.INI")
		$lastEntry = 0
		For $i = 1 To $arAlleSN[0][0]
			If $arAlleSN[$i][1] <> "" Then
				IniWrite(@ScriptDir & "\SN10Euro.INI", "serien", "sn" & $lastEntry +1, $arAlleSN[$i][1])
				$lastEntry += 1
				$Fehler = 0	
			EndIf
		Next
		_GUICtrlListViewDeleteAllItems($ListView1)
		$arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
		_ListAllSN()
		If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then GUICtrlSetState($Button3, $GUI_DISABLE)
	EndIf
	ControlFocus("", "", $Input1)	
EndFunc

Func _vergleich()
Dim $txtFull1 = " / Volltreffer = 100.000 €", $txtFull2 = " / Volltreffer = 50.000 €"
Dim $txt3R1 = " / 3 R = 10.000 €", $txt3R2 = " / 3 R = 5.000 €"
Dim $txt2R1 = " / 2 R = 1.000 €", $txt2R2 = " / 2 R = 500 €"
Dim $txt1R1 = " / 1 R = 100 €", $txt1R2 = " / 1 R = 50 €"
	$SN = GUICtrlRead($Input1)
	If $new = 1 Then $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
	For $i = 1 To $arAlleSN[0][0]
		If $arAlleSN[$i][1] = $SN Then
			$alleRichtig += 1
			If $spiel = 0 Then
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txtFull1
				$arTreffer[$n-1][1] = 1
			Else
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txtFull2
				$arTreffer[$n-1][1] = 1
			EndIf
			$arTreffer[0][0] += 1
		ElseIf StringRight($arAlleSN[$i][1], 3) = StringRight($SN, 3) Then
			$dreiRichtig += 1
			If $spiel = 0 Then
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt3R1
				$arTreffer[$n-1][1] = 2				
			Else
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt3R2
				$arTreffer[$n-1][1] = 2			
			EndIf
			$arTreffer[0][0] += 1
		ElseIf StringRight($arAlleSN[$i][1], 2) = StringRight($SN, 2) Then
			$zweiRichtig += 1
			If $spiel = 0 Then
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt2R1
				$arTreffer[$n-1][1] = 3			
			Else
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt2R2
				$arTreffer[$n-1][1] = 3			
			EndIf
			$arTreffer[0][0] += 1
		ElseIf StringRight($arAlleSN[$i][1], 1) = StringRight($SN, 1) Then
			$einRichtig += 1
			If $spiel = 0 Then
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt1R1
				$arTreffer[$n-1][1] = 4				
			Else
				$n = UBound($arTreffer,1)+1
				ReDim $arTreffer[$n][2]
				$arTreffer[$n-1][0] = $arAlleSN[$i][1] & $txt1R2
				$arTreffer[$n-1][1] = 4				
			EndIf
			$arTreffer[0][0] += 1
		EndIf
	Next
EndFunc

Func _treffer()
	_ArraySort($arTreffer, 0,1,0,2,1)
	For $i = 1 To $arTreffer[0][0]
		$item = GUICtrlCreateListViewItem($arTreffer[$i][0], $ListView1)
		Switch $arTreffer[$i][1]
			Case 1
				GUICtrlSetBkColor($item, $pink)
			Case 2
				GUICtrlSetBkColor($item, $limegreen)
			Case 3
				GUICtrlSetBkColor($item, $lemonchiffon)
			Case 4
				GUICtrlSetBkColor($item, $springgreen)
		EndSwitch
	Next
	If $alleRichtig = 1 Then 
		GUICtrlSetStyle($Label0, $GUI_SS_DEFAULT_LABEL)
		GUICtrlSetFont($Label0, 12, 430)
	EndIf
	GUICtrlSetState($Button3, $GUI_DISABLE)
	GUICtrlSetStyle($Label1, $GUI_SS_DEFAULT_LABEL)
	GUICtrlSetStyle($Label2, $GUI_SS_DEFAULT_LABEL)
	GUICtrlSetStyle($Label3, $GUI_SS_DEFAULT_LABEL)
	GUICtrlSetData($Input2, $dreiRichtig)
	GUICtrlSetData($Input3, $zweiRichtig)
	GUICtrlSetData($Input4, $einRichtig)
	ReDim $arTreffer[1][2]
	$arTreffer[0][0] = 0
	$dreiRichtig = 0
	$zweiRichtig = 0
	$einRichtig = 0
EndFunc

Func Ende()
	HotKeySet("^s")
	Exit
EndFunc