Opt('MustDeclareVars', 1)

#include <FF.au3>

If Not FileExists(@ScriptDir & "\XPV.ini") Then
	IniWrite(@ScriptDir & "\XPV.ini", "Login", "Name", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Login", "Passwort", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Registrieren", "Name", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Registrieren", "Email", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Registrieren", "Passwort", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Klick","Beispiel","")
	IniWrite(@ScriptDir & "\XPV.ini", "Read", "Beispiel", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Write", "Beispiel", "")
	IniWrite(@ScriptDir & "\XPV.ini", "Select", "Beispiel", "Den Wert der Optionsvalue mit # ersetzen z.b. //select[@id='universe']/option[@value='#']")
	IniWrite(@ScriptDir & "\XPV.ini", "Check", "Beispiel", "")
EndIf

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVcheck
; Description ...: Aktiviert/Deaktiviert ein Element
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVchek($sXPVKey[, $fXPVwert = True])
; Parameters ....: $sXPVKey - Name des Schlüssels in der ini
;				   $fXPVwert - Optional: (Default = True) : Checkbox aktivieren/deaktivieren
; Return values .: Success - Returns : Ausgelesener Wert
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVKey nicht angegeben
;			       |2 - $fXPVwert nicht Boolean
;                  |3 - Schlüssel in der Ini nicht vorhanden
; Author ........: chip
;
; ;==========================================================================================
Func _XPVcheck($sXPVKey, $fXPVwert = True)
	Local $sXPVxpath
	Local $sXPVread

	If $sXPVKey = "" Then
		SetError(1)
		Return 0
	EndIf

	If IsBool($fXPVwert) = 0 Then
		SetError(2)
		Return 0
	EndIf

	_FFConnect()
	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Check", $sXPVKey, "")
	If $sXPVxpath = "" Then
		SetError(3)
		Return 0
	EndIf

	Return _FFXPath($sXPVxpath)
EndFunc   ;==>_XPVcheck

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVselect
; Description ...: Wählt ein Element in einem Selectfeld
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVread($sXPVKey)
; Parameters ....: $sXPVKey - Name des Schlüssels in der ini
;				   $sXPVWert - Value des Elemntes das selectiert werden soll
; Return values .: Success - Returns 1
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVKey nicht angegeben
; 				   |2 - $sXPVwert nicht angegeben
;                  |3 - Schlüssel in der Ini nicht vorhanden
; Author ........: chip
;
; ;==========================================================================================
Func _XPVselect($sXPVKey, $sXPVwert)
	Local $sXPVxpath
	Local $sXPVread

	If $sXPVKey = "" Then
		SetError(1)
		Return 0
	EndIf

	If $sXPVwert = "" Then
		SetError(2)
		Return 0
	EndIf

	_FFConnect()
	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Select", $sXPVKey, "")
	If $sXPVxpath = "" Then
		SetError(3)
		Return 0
	EndIf

	_FFXPath(StringReplace($sXPVxpath, "#", $sXPVwert), "", 9)
	_FFObj("xpath.selected=true")
EndFunc   ;==>_XPVselect

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVwrite
; Description ...: Schreibt einen Wert in ein Element
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVwrite($sXPVKey)
; Parameters ....: $sXPVKey - Name des Schlüssels in der ini
;				   $sXPVWert - Der Wert der eingetragen werden soll
; Return values .: Success - Returns 1
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVKey nicht angegeben
; 				   |2 - $sXPVwert nicht angegeben
;                  |3 - Schlüssel in der Ini nicht vorhanden
; Author ........: chip
;
; ;==========================================================================================
Func _XPVwrite($sXPVKey, $sXPVwert)
	Local $sXPVxpath
	Local $sXPVread

	If $sXPVKey = "" Then
		SetError(1)
		Return 0
	EndIf

	If $sXPVwert = "" Then
		SetError(2)
		Return 0
	EndIf

	_FFConnect()
	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Write", $sXPVKey, "")
	If $sXPVxpath = "" Then
		SetError(3)
		Return 0
	EndIf

	_FFSetValue($sXPVwert, _FFXPath($sXPVxpath, "", 9))
EndFunc   ;==>_XPVwrite

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVread
; Description ...: Liest ein Element
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVread($sXPVKey)
; Parameters ....: $sXPVKey - Name des Schlüssels in der ini
; Return values .: Success - Returns : Ausgelesener Wert
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVKey nicht angegeben
;                  |2 - Schlüssel in der Ini nicht vorhanden
; Author ........: chip
;
; ;==========================================================================================
Func _XPVread($sXPVKey)
	Local $sXPVxpath
	Local $sXPVread

	If $sXPVKey = "" Then
		SetError(1)
		Return 0
	EndIf

	_FFConnect()
	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Read", $sXPVKey, "")
	If $sXPVxpath = "" Then
		SetError(2)
		Return 0
	EndIf

	Return _FFXPath($sXPVxpath)
EndFunc   ;==>_XPVread

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVklick
; Description ...: Führt einen Klick auf ein Element aus
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVklick($sXPVKey)
; Parameters ....: $sXPVKey - Name des Schlüssels in der ini
; Return values .: Success - Returns 1
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVKey nicht angegeben
;                  |2 - Schlüssel in der Ini nicht vorhanden
; Author ........: chip
;
; ;==========================================================================================
Func _XPVklick($sXPVKey)
	Local $sXPVxpath

	If $sXPVKey = "" Then
		SetError(1)
		Return 0
	EndIf

	_FFConnect()
	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Klick", $sXPVKey, "")
	If $sXPVxpath = "" Then
		SetError(2)
		Return 0
	EndIf
	_FFClick(_FFXPath($sXPVxpath, "", 9))
EndFunc   ;==>_XPVklick

; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVlogin
; Description ...: Füllt das Loginformular aus und schickt es ab
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVlogin($sXPVname = "", $sXPVpass = ""[, $sXPVserver = ""[, $fXPVsubmit = True]])
; Parameters ....: $sXPVname - Name
;                  $XPVpass - Passwort
;				   $sXPVserver - Optional: (Default = "") : Server
;				   $fXPVsubmit - Optional: (Default = True) : Login abschicken
; Return values .: Success - Returns 1
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVName nicht angegeben
;                  |2 - $sXPVpass nicht angegeben
;				   |3 - $fXPVsubmit nicht Boolean
;				   |4 - Schlüssel Name in der ini nicht gesetzt
;				   |5 - Schlüssel Passwort in der ini nicht gesetzt
;				   |6 - Schlüssel Welt nicht in der ini gesetzt
; Author ........: chip
;
; ;==========================================================================================
Func _XPVlogin($sXPVname = "", $sXPVpass = "", $sXPVserver = "", $fXPVsubmit = True)
	Local $sXPVxpath

	If $sXPVname = "" Then
		SetError(1)
		Return 0
	EndIf

	If $sXPVpass = "" Then
		SetError(2)
		Return 0
	EndIf

	If IsBool($fXPVsubmit) = 0 Then
		SetError(3)
		Return 0
	EndIf

	_FFConnect()


	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Login", "Name", "")
	If $sXPVxpath = "" Then
		SetError(4)
		Return 0
	EndIf
	_FFSetValue($sXPVname, _FFXPath($sXPVxpath, "", 9))

	$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Login", "Passwort", "")
	If $sXPVxpath = "" Then
		SetError(5)
		Return 0
	EndIf
	_FFSetValue($sXPVpass, _FFXPath($sXPVxpath, "", 9))

	If $sXPVserver <> "" Then
		$sXPVxpath = IniRead(@ScriptDir & "\XPV.ini", "Login", "Server", "")
		If $sXPVxpath = "" Then
			SetError(6)
			Return 0
		EndIf
		_FFXPath(StringReplace($sXPVxpath, "#", $sXPVserver), "", 9)
		_FFObj("xpath.selected=true")
	EndIf

	If $fXPVsubmit = True Then
		_FFFormSubmit(0, "index", "click")
	EndIf
EndFunc   ;==>_XPVlogin


; #FUNCTION# ;===============================================================================
;
; Name...........: _XPVreg
; Description ...: Füllt das Registrierungsformular aus und schickt es ab
; AutoIt Version : V3.3.4.0
; Syntax.........: _XPVreg($sXPVname = "", $sXPVmail = "", $sXPVpass = ""[, $sXPVserver = ""[, $fXPVemailw = 0[, $fXPVpassw = 0[, $fXPVagb = 1[, $fXPVsubmit = 1]]]]])
; Parameters ....: $sXPVname - Name
;        		   $sXPVemail - Emailadresse
;				   $XPVpass - Passwort
;				   $sXPVserver - Optional: (Default = "") : Server
;				   $fXPVmailw - Optional: (Default = False) : Emailwiederholung
;				   $XPVpass - Optional: (Default = False) : Passwortwiederholung
;				   $fXPVagb - Optional: (Default = True) : AGB bestätigen
;				   $fXPVsubmit - Optional: (Default = True) : Registrierung abschicken
; Return values .: Success - Returns 1
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - $sXPVName nicht angegeben
;                  |2 - $sXPVmail nicht angegeben
;                  |3 - $sXPVpass nicht angegeben
;				   |4 - $fXPVemailw nicht Boolean
;				   |5 - $fXPVpassw nicht Boolean
;				   |6 - $fXPVagb nicht Boolean
;				   |7 - $fXPVsubmit nicht Boolean
; Author ........: chip
;
; ;==========================================================================================
Func _XPVreg($sXPVname = "", $sXPVmail = "", $sXPVpass = "", $sXPVserver = "", $fXPVemailw = False, $fXPVpassw = False, $fXPVagb = True, $fXPVsubmit = True)

	If $sXPVname = "" Then
		SetError(1)
		Return 0
	EndIf

	If $sXPVmail = "" Then
		SetError(2)
		Return 0
	EndIf

	If $sXPVpass = "" Then
		SetError(3)
		Return 0
	EndIf

	If IsBool($fXPVemailw) = 0 Then
		SetError(4)
		Return 0
	EndIf

	If IsBool($fXPVpassw) = 0 Then
		SetError(5)
		Return 0
	EndIf

	If IsBool($fXPVagb) = 0 Then
		SetError(6)
		Return 0
	EndIf

	If IsBool($fXPVsubmit) = 0 Then
		SetError(7)
		Return 0
	EndIf

	_FFConnect()
	_FFSetValue($sXPVname, _FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "Name", ""), "", 9))
	_FFSetValue($sXPVmail, _FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "EMail", ""), "", 9))


	If $fXPVemailw = True Then
		_FFSetValue($sXPVmail, _FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "EMail2", ""), "", 9))
	EndIf

	_FFSetValue($sXPVpass, _FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "Passwort", ""), "", 9))

	If $fXPVpassw = True Then
		_FFSetValue($sXPVpass, _FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "Passwort2", ""), "", 9))
	EndIf

	If $sXPVserver <> "" Then
		_FFXPath(StringReplace(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "Server", ""), "#", $sXPVserver), "", 9)
		_FFObj("xpath.selected=true")
	EndIf

	If $fXPVagb = True Then
		_FFXPath(IniRead(@ScriptDir & "\XPV.ini", "Registrieren", "AGB", ""), "", 9)
		_FFObj("xpath.checked=true")
	EndIf

	If $fXPVsubmit = True Then
		_FFFormSubmit(0, "index", "click")
	EndIf

	Return 1
EndFunc   ;==>_XPVreg
