#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <FTPEx.au3>

$rServer = IniRead(@ScriptDir & "/Ftp.dat", "Daten", "FTP-Server: ", "")
$rUser = IniRead(@ScriptDir & "/Ftp.dat", "Daten", "  Username: ", "")
$rPass = IniRead(@ScriptDir & "/Ftp.dat", "Daten", "  Password: ", "")


$frmMain = GUICreate("FTP-Uploader v.0.2", 222, 232, 192, 124, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS))
$MenuItem1 = GUICtrlCreateMenu("Menü")
$mExit = GUICtrlCreateMenuItem("Schliessen", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenu("Optionen")
$mSettings = GUICtrlCreateMenuItem("FTP-Einstellungen", $MenuItem3)
$MenuItem5 = GUICtrlCreateMenu("About")
$mAbout = GUICtrlCreateMenuItem("About Tool", $MenuItem5)
$Group1 = GUICtrlCreateGroup("Datei suchen:", 8, 8, 209, 49)
$txtPfad = GUICtrlCreateInput("", 16, 24, 161, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
$cmdBrowse = GUICtrlCreateButton("...", 184, 24, 27, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Name der Datei:", 8, 64, 209, 73)
$txtFilename = GUICtrlCreateInput("", 16, 104, 105, 21)
$Label1 = GUICtrlCreateLabel("z.B. Bild                                   .png", 24, 80, 168, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$cmbType = GUICtrlCreateCombo("", 128, 104, 81, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, ".exe|.rar|.jpg|.bmp|.png|.gif|.txt|.au3|.doc|.mp3|.wav|.flv|.mpg|.avi|.mp4")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Progress1 = GUICtrlCreateProgress(16, 144, 190, 17)
$lblProg = GUICtrlCreateLabel("0%", 104, 168, 36, 17)
$cmdUpload = GUICtrlCreateButton("Hochladen", 72, 184, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)

$frmOptions = GUICreate("FTP-Options", 198, 109, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
$lblServer = GUICtrlCreateLabel("FTP-Server:", 8, 8, 61, 17)
$lblPass = GUICtrlCreateLabel("FTP-Pass:", 16, 56, 53, 17)
$lblUser = GUICtrlCreateLabel("FTP-User:", 16, 32, 52, 17)
$lblPort = GUICtrlCreateLabel("FTP-Port:", 16, 80, 49, 17)
$txtServer = GUICtrlCreateInput($rServer, 72, 8, 121, 21)
$txtUser = GUICtrlCreateInput($rUser, 72, 32, 121, 21)
$txtPass = GUICtrlCreateInput($rPass, 72, 56, 121, 21, $ES_PASSWORD)
$txtPort = GUICtrlCreateInput("21", 72, 80, 49, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER, $ES_READONLY))
$cmdSave = GUICtrlCreateButton("Save", 128, 80, 67, 25, $WS_GROUP)
GUISetState(@SW_HIDE)

$server = GUICtrlRead($txtServer)
$username = GUICtrlRead($txtUser)
$pass = GUICtrlRead($txtPass)



While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $mExit
			Exit
		Case $cmdBrowse
			$search = FileOpenDialog("Datei suchen...", @ScriptDir, "Alle Dateitypen (*.*)")
			GUICtrlSetData($txtPfad, $search)
		Case $mSettings
			GUISetState(@SW_HIDE, $frmMain)
			Sleep(20)
			GUISetState(@SW_SHOW, $frmOptions)
		Case $cmdSave
			If GUICtrlRead($txtServer) = "" Or GUICtrlRead($txtUser) = "" Or GUICtrlRead($txtPass) = "" Then
				MsgBox(48, "Fehler!", "Bitte trage deine FTP-Daten vollständig ein!")
			Else
				IniWrite(@ScriptDir & "/Ftp.dat", "Daten", "FTP-Server: ", GUICtrlRead($txtServer))
				IniWrite(@ScriptDir & "/Ftp.dat", "Daten", "  Username: ", GUICtrlRead($txtUser))
				IniWrite(@ScriptDir & "/Ftp.dat", "Daten", "  Password: ", GUICtrlRead($txtPass))
				GUISetState(@SW_HIDE, $frmOptions)
				Sleep(20)
				GUISetState(@SW_SHOW, $frmMain)
			EndIf
		Case $mAbout
			MsgBox(64, "Infomationen", "Vielen Dank das Sie mein FTP-Uploader nutzen." & @CRLF & @CRLF & "Coder: MysticSun" & @CRLF & "Jahr: 2010" & @CRLF & @CRLF & "Besuchen Sie: www.autoit.de" & @CRLF & "Thanks to Cartan12")
		Case $cmdUpload
			If GUICtrlRead($txtPfad) = "" Or GUICtrlRead($txtFilename) = "" Or GUICtrlRead($cmbType) = "" Or GUICtrlRead($txtServer) = "" Or GUICtrlRead($txtUser) = "" Or GUICtrlRead($txtPass) = "" Then
				MsgBox(48, "Fehler!", "Bitte kontrolliere den Pfad/Dateiname/FTP-Optionen!")
			Else
				GUICtrlSetState($cmdUpload, $GUI_DISABLE)
				GUICtrlSetData($cmdUpload,"Warten...")
				$Open = _FTP_Open('FTP')
				$Conn = _FTP_Connect($Open, $server, $username, $pass)
				_FTP_ProgressUpload($Conn, GUICtrlRead($txtPfad), "/" & GUICtrlRead($txtFilename) & GUICtrlRead($cmbType), "_UpdateProgress")
				$Ftpc = _FTP_Close($Open)
				ClipPut("http://www." & $server & "/" & GUICtrlRead($txtFilename) & GUICtrlRead($cmbType))
				MsgBox(64, "Erfolg!", "Erfolgreich übertragen!" & @CRLF & "Der Link befindet sich in der Zwischenablage!" & @CRLF & @CRLF & "MysticSun")
				GUICtrlSetState($cmdUpload, $GUI_ENABLE)
				GUICtrlSetData($cmdUpload,"Hochladen")
			EndIf


	EndSwitch
WEnd



Func _UpdateProgress($Percentage)
	GUICtrlSetData($Progress1, $Percentage)
	GUICtrlSetData($lblProg, $Percentage & "%")
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Return -1
	EndSwitch
	Return 1
EndFunc