local html_create = mw.html.create
local tostring = tostring

local export = {}

local function make_box(tag, rows, image, header, text)
	tag = tag:addClass("noprint")
		:tag("table")
			:tag("tr")
				:tag("td")
	if rows > 1 then
		tag:attr("rowspan", rows)
	end
	tag = tag:wikitext(image)
		:done()
	if header then
		tag = tag:node(header)
			:done()
			:tag("tr")
	end
	return tostring(tag:tag("td")
		:wikitext(text)
		:allDone()) ..
		mw.getCurrentFrame():extensionTag("templatestyles", nil, {src = "Module:message box/styles.css"})
end

function export.maintenance(color, image, title, text)
	local div = html_create("div")
		:addClass("maintenance-box")
		:addClass("maintenance-box-" .. color)
	local header = html_create("th")
		:css("text-align", "left")
		:wikitext(title)
	return make_box(div, 2, image, header, text)
end

function export.request(image, text)
	local div = html_create("div")
		:addClass("request-box")
	return make_box(div, 1, image, nil, text)
end

return export