; by Jautois 2008

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $iCurPars[4]

$hWindow = GUICreate("Serial-Generator-Checker - Jautois v1.0", 355, 114)
GUISetIcon("shell32.dll", -45)
$pInputSerial = GUICtrlCreateInput("", 8, 48, 305, 21)
$pButtonCheck = GUICtrlCreateButton("Check", 8, 72, 153, 33, 0)
GUICtrlCreateLabel("Seeder", 8, 16, 38, 17)
$pInputParam1 = GUICtrlCreateInput("", 53, 13, 33, 21)
$pInputParam2 = GUICtrlCreateInput("", 101, 13, 33, 21)
$pInputParam3 = GUICtrlCreateInput("", 149, 13, 33, 21)
$IconCheckW = GUICtrlCreateIcon("shell32.dll", -132, 320, 48, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
GUICtrlSetState(-1, $GUI_HIDE)
$IconCheckR = GUICtrlCreateIcon("shell32.dll", -145, 320, 48, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlCreateLabel("-", 92, 15, 7, 17)
GUICtrlCreateLabel("-", 140, 15, 7, 17)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $pButtonCheck
			$iCurPars[1] = GUICtrlRead($pInputParam1)
			$iCurPars[2] = GUICtrlRead($pInputParam2)
			$iCurPars[3] = GUICtrlRead($pInputParam3)

			$bCheck = _CheckSerial(GUICtrlRead($pInputSerial), $iCurPars[1], $iCurPars[2], $iCurPars[3])
			If $bCheck = False Then
				GUICtrlSetState($IconCheckR, $GUI_HIDE)
				GUICtrlSetState($IconCheckW, $GUI_SHOW)
			Else
				GUICtrlSetState($IconCheckW, $GUI_HIDE)
				GUICtrlSetState($IconCheckR, $GUI_SHOW)
			EndIf
	EndSwitch
WEnd

Func _CheckSerial($sSerial = "", $iFive = 0, $iSeven = 0, $iNine = 0)
	Local $iDataF, $iDataN, $iDataS

	If $iFive <= 2 Or $iSeven <= 2 Or $iNine <= 2 Then
		Return False
	Else
		$sSD = StringSplit($sSerial, "-")
		If $sSD[0] = 3 Then
			$iDataF = $sSD[1]
			$iDataS = $sSD[2]
			$iDataN = $sSD[3]

			If $iDataF <= 2 Or $iDataS <= 2 Or $iDataN <= 2 Then
				Return False
			EndIf
			If Mod($iDataF, $iFive) == 0 And Mod($iDataS, $iSeven) == 0 And Mod($iDataN, $iNine) == 0 Then
				Return True
			Else
				Return False
			EndIf
		EndIf
	EndIf
EndFunc   ;==>_CheckSerial
