local p = {} --p stands for package
local c = require("Module:Common")
local str = require("Modul:String")

function p.Faktenbox(frame)
	local args = c.shallowcopy(frame:getParent().args)

	args["PLZ"] = p.get_plz(frame, args)

	local tpl_bild = p.bild(frame, args)
	local tab_bild=''
	if tpl_bild:gsub("%s+", "") ~= '' then
		tab_bild = '<tab name=Bild>' .. 
		tpl_bild .. '</tab>'
	end
	
	local tpl_karte = p.karte(frame, args)
	local tab_karte=''
	if tpl_karte:gsub("%s+", "") ~= '' then
		tab_karte = '<tab name=Karte>' .. 
		tpl_karte .. '</tab>'
	end
	
	-- The tab "Daten" is visible everytime
	local tpl_daten = p.daten(frame, args)
	local tab_daten = '<tab name=Daten>' .. 
	tpl_daten .. '</tab>'
	
	local t ='<div class=factbox><tabs>' .. 
	   tab_bild .. 
	   tab_karte ..
	   tab_daten .. 
	   '</tabs></div>'

	-- Use preprocess to render the factbox and all contens at once
	return frame:preprocess(t)
end

function p.bild(frame, args)
    return frame:expandTemplate{title='Bildertab', args=args}
end

function p.daten(frame, args)
    return frame:expandTemplate{title='Gebäude/Daten', args=args}
end

function p.karte(frame, args)
	return frame:expandTemplate{title='Kartentab', args=args}
end

function p.get_plz(frame, args)
	local hausnr = ""
	
	-- Ned schön, funktioniert aber. Andere Lösung wäre fein!
	if not c.isEmpty(args["Hausnummer"]) then 
		-- Hausnummer ohne Buchstaben extrahieren, um damit PLZ zu ermitteln
		hausnr = tonumber(string.match("0" .. args["Hausnummer"], "%d+"))
	end
	local streets = str.split(args['Straße'], ";")
	return frame:expandTemplate{title = 'StraßeHausnummer2PLZ', args={
		['Straße'] = str.strip(streets[1]), ['HausnummerOhneBuchstaben'] = hausnr}
	}
end

return p