#include <GuiListView.au3>
#include <IE.au3>
#include <Inet.au3>
#include <String.au3>
#include <GuiTab.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Local $Array_Cinema[10][100]
Local $frmWait
Local $TabSheet[10], $LabelA[10], $LabelT[10], $LabelL[10], $lblAdresse[10], $ListView[10]

$MainForm = GUICreate("Cinema Programm", 840, 370, 193, 115)
$Label1 = GUICtrlCreateLabel("Stadt:", 8, 8, 55, 17)
$txtCity = GUICtrlCreateInput("", 8, 25, 185, 21)
$cmdGo = GUICtrlCreateButton("Go", 194, 25, 27, 21, $WS_GROUP)
$lbl_2 = GUICtrlCreateLabel("Tag:: ", 220, 8, 40, 17)
$radio_Heute = GUICtrlCreateRadio("Heute", 250, 8, 50, 17)
$radio_Morgen = GUICtrlCreateRadio("", 350, 8, 80, 17)
$radio_UeberMorgen = GUICtrlCreateRadio("", 450, 8, 80, 17)
$radio_UeberUeberMorgen = GUICtrlCreateRadio("", 550, 8, 80, 17)
$hTab = GUICtrlCreateTab(8, 56, 825, 313)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
For $i = 0 To 9
	$TabSheet[$i] = GUICtrlCreateTabItem(" ")
	$LabelA[$i] = GUICtrlCreateLabel("Adresse:", 16, 96, 45, 17)
	$lblAdresse[$i] = GUICtrlCreateLabel("", 64, 96, 378, 17)
	$LabelT[$i] = GUICtrlCreateLabel("Tel.:", 16, 112, 25, 17)
	$LabelL[$i] = GUICtrlCreateLabel("", 64, 112, 378, 17)
	$ListView[$i] = GUICtrlCreateListView("", 16, 136, 810, 222)
	_GUICtrlListView_AddColumn($ListView[$i], "Titel", 200, 2)
	_GUICtrlListView_AddColumn($ListView[$i], "Laufzeit", 75, 2)
	_GUICtrlListView_AddColumn($ListView[$i], "FSK", 200, 2)
	_GUICtrlListView_AddColumn($ListView[$i], "Genre", 150, 2)
	_GUICtrlListView_AddColumn($ListView[$i], "Start Zeit", 180, 2)
Next
GUICtrlCreateTabItem("")
GUICtrlSetState($radio_Heute, $GUI_CHECKED)
GUISetState(@SW_SHOW)

GUICtrlSetState($radio_Heute, $GUI_CHECKED)

While 1
	$nMsg = GUIGetMsg()
	Select
		Case $nMsg = $GUI_EVENT_CLOSE
			Exit
		Case $nMsg = $cmdGo
			getSource()
		Case $nMsg = $radio_Heute And BitAND(GUICtrlRead($radio_Heute), $GUI_CHECKED) = $GUI_CHECKED
			getSource()
		Case $nMsg = $radio_Morgen And BitAND(GUICtrlRead($radio_Morgen), $GUI_CHECKED) = $GUI_CHECKED
			getSource()
		Case $nMsg = $radio_UeberMorgen And BitAND(GUICtrlRead($radio_UeberMorgen), $GUI_CHECKED) = $GUI_CHECKED
			getSource()
		Case $nMsg = $radio_UeberUeberMorgen And BitAND(GUICtrlRead($radio_UeberUeberMorgen), $GUI_CHECKED) = $GUI_CHECKED
			getSource()
	EndSelect
WEnd

Func _Wait()
	GUISetState(@SW_DISABLE, $MainForm)
	$frmWait = GUICreate("", 161, 34, 510, 391, BitOR($WS_MINIMIZEBOX, $WS_DLGFRAME, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS))
	$Label1 = GUICtrlCreateLabel("Bitte warten...", 0, 0, 160, 33)
	GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
	GUICtrlSetColor(-1, 0xFFFFE1)
	GUICtrlSetBkColor(-1, 0xA6CAF0)
	GUISetState()
EndFunc   ;==>_Wait
Func getSource()
	_Wait()
	Dim $CityName = GUICtrlRead($txtCity),$i = 0 ,$j = 0, $url,$oIE,$temp_array,$Array_Movie,$html,$ii = 0
	If GUICtrlRead($txtCity) = '' Then
		MsgBox(0, 'Warnung', 'Bitte geben Sie einen Stadtnamen oder ein Plz. ein!')
	Else
		For $i = 0 To 9
			_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView[$i]))
		Next
		If GUICtrlRead($radio_Morgen) = $GUI_CHECKED Then
			$url = 'http://www.google.de/movies?hl=de&near=' & $CityName & '&date=1'
		ElseIf GUICtrlRead($radio_UeberMorgen) = $GUI_CHECKED Then
			$url = 'http://www.google.de/movies?hl=de&near=' & $CityName & '&date=2'
		ElseIf GUICtrlRead($radio_UeberUeberMorgen) = $GUI_CHECKED Then
			$url = 'http://www.google.de/movies?hl=de&near=' & $CityName & '&date=3'
		Else
			$url = 'http://www.google.de/movies?hl=de&near=' & $CityName & '&date=0'
		EndIf
		$oIE = _IECreate($url, 0, 0)
		$sHTML = _IEBodyReadHTML($oIE)
		$html = _INetGetSource($oIE)
		_IEQuit($oIE)
		For $i = 0 To UBound($Array_Cinema, 1) - 1
			For $ii = 0 To UBound($Array_Cinema, 2) - 1
				$Array_Cinema[$i][$ii] = ""
			Next
		Next
		$aArray1 = StringSplit($sHTML, @CRLF, 1)
		$ii = -1
		For $i = 0 To UBound($aArray1) - 1
			Switch $aArray1[$i]
				Case "<DIV class=theater>"
					$j = 0
					$i += 2
					$ii += 1
					$temp_array = _StringBetween($aArray1[$i], "<SPAN dir=ltr>", "</SPAN>")
					If @error = 0 Then $Array_Cinema[$ii][$j] = $temp_array[0]
					$i += 1
					$j += 1
					$temp_array = _StringBetween($aArray1[$i], "<DIV class=info>", "<A class=")
					If @error = 0 Then $Array_Cinema[$ii][$j] = $temp_array[0]
				Case "<DIV class=movie>"
					$i += 1
					$j += 1
					$temp_array = _StringBetween($aArray1[$i], "<SPAN dir=ltr>", "</SPAN>")
					If @error = 0 Then $Array_Cinema[$ii][$j] = $temp_array[0]
					$j += 1
					$temp_array = _StringBetween($aArray1[$i], "</NOBR>", "</SPAN>")
					If @error = 0 Then $Array_Cinema[$ii][$j] = $temp_array[0]
					$i += 1
					$j += 1
					$temp_array = _StringBetween($aArray1[$i], "<DIV class=times>", "</DIV>")
					If @error = 0 Then $Array_Cinema[$ii][$j] = $temp_array[0]
				Case StringInStr($aArray1[$i], 'date=1">')
					$temp_array = _StringBetween($aArray1[$i], 'date=1">', "</A></DIV>")
					If @error = 0 Then GUICtrlSetData($radio_Morgen, $temp_array[0])
				Case StringInStr($aArray1[$i], 'date=2">')
					$temp_array = _StringBetween($aArray1[$i], 'date=2">', "</A></DIV>")
					If @error = 0 Then GUICtrlSetData($radio_UeberMorgen, $temp_array[0])
				Case StringInStr($aArray1[$i], 'date=3">')
					$temp_array = _StringBetween($aArray1[$i], 'date=3">', "</A></DIV>")
					If @error = 0 Then GUICtrlSetData($radio_UeberUeberMorgen, $temp_array[0])
			EndSwitch
		Next
		Find_Cinema()
	EndIf
	GUIDelete($frmWait)
	GUISetState(@SW_ENABLE, $MainForm)
EndFunc   ;==>getSource
Func Find_Cinema()
	Dim $i_ListView = 0,$Tab_Count = 0,$String_Seperated,$Temp,$TempArray, $j = 0
	For $i = 0 To 9
		_GUICtrlListView_BeginUpdate(GUICtrlGetHandle($ListView[$i]))
	Next
	For $i = 0 To UBound($Array_Cinema, 1) - 1
		$j = 0
		$i_ListView = 0
		_GUICtrlTab_SetItem($hTab, $Tab_Count, $Array_Cinema[$i][$j])
		$j += 1
		$String_Seperated = StringSplit($Array_Cinema[$i][$j], " - ", 1)
		GUICtrlSetData($lblAdresse[$Tab_Count], $String_Seperated[1])
		If $String_Seperated[0] = 2 Then
			GUICtrlSetData($LabelL[$Tab_Count], $String_Seperated[2])
		EndIf
		For $j = 2 To UBound($Array_Cinema, 2) - 1
			If $Array_Cinema[$i][$j] <> "" Then
				_GUICtrlListView_AddItem($ListView[$Tab_Count], $Array_Cinema[$i][$j])
				$j += 1
				$Temp = StringTrimLeft($Array_Cinema[$i][$j], 10)
				If $Temp <> "" Then
					$TempArray = StringSplit($Temp, "- ", 1)
					If $TempArray[0] = 1 Then
						$TempArray[1] = StringTrimRight($TempArray[1], 3)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[1], 1)
					ElseIf $TempArray[0] = 2 Then
						$TempArray[1] = StringTrimRight($TempArray[1], 3)
						$TempArray[2] = StringTrimRight($TempArray[2], 3)
						$TempArray[2] = StringTrimLeft($TempArray[2], 5)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[1], 1)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[2], 2)
					ElseIf $TempArray[0] = 3 Then
						$TempArray[1] = StringTrimRight($TempArray[1], 3)
						$TempArray[2] = StringTrimRight($TempArray[2], 3)
						$TempArray[2] = StringTrimLeft($TempArray[2], 5)
						$TempArray[3] = StringTrimRight($TempArray[3], 1)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[1], 1)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[2], 2)
						_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $TempArray[3], 3)
					EndIf
				EndIf
				$j += 1
				$Temp = StringReplace($Array_Cinema[$i][$j], "&nbsp;", ";", 0)
				_GUICtrlListView_AddSubItem($ListView[$Tab_Count], $i_ListView, $Temp, 4)
				$i_ListView += 1
			EndIf
		Next
		$Tab_Count += 1
	Next
	For $i = 0 To 9
		_GUICtrlListView_EndUpdate(GUICtrlGetHandle($ListView[$i]))
	Next
EndFunc   ;==>Find_Cinema