function drawMenu(menu)
	local font = love.graphics.getFont()
	love.graphics.setFont(locale_font)

	-- reset scale
	love.graphics.setScale()

	if menu == "pause" then
		drawMenuPauseScreen()
	elseif menu == "dialog" then
		drawMenuDialog()
	end

	for _, element in pairs(UIElement) do
		element:draw()
	end

	love.graphics.setFont(font)
end

function drawMenuPauseScreen()
	-- Parameters
	local pauseWidth = 640
	local pauseHeight = 480
	local pauseX = (game.width/2)-(pauseWidth/2)
	local pauseY = (game.height/2)-(pauseHeight/2)
	local mouse_x, mouse_y = love.mouse.getPosition()
	-- Base items
	love.graphics.setColor(0,0,0,0.3)
	love.graphics.rectangle("fill", 0, 0, game.width, game.height)
	love.graphics.setColor(1,1,1,1)
	love.graphics.rectangle("fill", pauseX, pauseY, pauseWidth, pauseHeight)
end

function drawMenuDialog()
end

function stepMenu(menu)
	-- first get mouse
	local mouse_x, mouse_y = love.mouse.getPosition()
	for _, element in pairs(UIElement) do
		if element.type == "Button" then
			element:checkMouse(mouse_x, mouse_y)
		elseif element.type == "Dialog" then
			element:checkConfirm()
		end
	end
	if menu == 0 then
	elseif menu == "pause" then
		stepMenuPauseScreen()
	elseif menu == "dialog" then
		stepMenuDialog()
	end
end

function stepMenuPauseScreen()
	if pause_resume:getVariable() == true then
		pause_resume = nil
		pause_options = nil
		pause_exit = nil
		exitMenu()
	elseif pause_exit:getVariable() == true then
		love.event.quit()
	end
end

function stepMenuDialog()
	if dialog_container.value >= dialog_container.target_value then
		dialog_container = nil
		exitMenu()
	end
end

function clearMenu()
	for _, element in pairs(UIElement) do
		element = nil
	end
	UIElement = {}
end

function exitMenu(to)
	clearMenu()
	local to = to or "no"
	menu_type = to
end

function initMenu(menu,parameter)
	-- main menu
	if menu == "pause" then
		initMenuPauseScreen()
	elseif menu == "dialog" then
		if parameter == nil then
			parameter = dialog_sequence.Example
		end
		initMenuDialog(parameter)
	end
end

function initMenuDialog(parameter)
	dialog_container = InterfaceDialog:new()
	dialog_container:loadSequence(parameter)
end

function initMenuPauseScreen()
	local button_standard = {width = 200, height = 30, separation = 10}
	-- elements
	pause_resume = InterfaceButton:new(
		game.width/2,
		game.height/2-button_standard.height-button_standard.separation,
		button_standard.width,
		button_standard.height,
		{false,true},
		1,
		{
			text = locale.ui.pause_screen_resume,
			color = {0,0,0.5},
			color2 = {1,1,1}
		}
	)
	pause_options = InterfaceButton:new(
		game.width/2,
		game.height/2,
		button_standard.width,
		button_standard.height,
		{false,true},
		1,
		{
			text = locale.ui.pause_screen_options,
			color = {0,0,0.5},
			color2 = {1,1,1}
		}
	)
	pause_exit = InterfaceButton:new(
		game.width/2,
		game.height/2+button_standard.height+button_standard.separation,
		button_standard.width,
		button_standard.height,
		{false,true},
		1,
		{
			text = locale.ui.pause_screen_exit,
			color = {0,0,0.5},
			color2 = {1,1,1}
		}
	)
end
