function MenuDraw(menu)
  local font = love.graphics.getFont()
  love.graphics.setFont(LocaleFont)
  -- Set scale to 1
  love.graphics.scale(0.5,0.5)

  if menu == "pause" then
    MenuDrawPauseScreen()
  elseif menu == "dialog" then
    MenuDrawDialog()
  end

  for _, element in pairs(UIElement) do
    element:Draw()
  end
  -- Reset scale
  love.graphics.scale(2,2)
  love.graphics.setFont(font)
end

function MenuDrawPauseScreen()
  -- 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 MenuDrawDialog()
end

function MenuStep(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
    MenuStepPauseScreen()
  elseif menu == "dialog" then
    MenuStepDialog()
  end
end

function MenuStepPauseScreen()
  if PauseResume:getVariable() == true then
    PauseResume = nil
    PauseOptions = nil
    PauseExit = nil
    MenuExit()
  elseif PauseExit:getVariable() == true then
    love.event.quit()
  end
end

function MenuStepDialog()
  if DialogContainer.value >= DialogContainer.target_value then
    DialogContainer = nil
    MenuExit()
  end
end

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

function MenuExit(to)
  MenuClear()
  local to = to or "no"
  menu_type = to
end

function MenuInit(menu,parameter)
  -- main menu
  if menu == "pause" then
    MenuInitPauseScreen()
  elseif menu == "dialog" then
    if parameter == nil then
      parameter = DialogSequence.Example
    end
    MenuInitDialog(parameter)
  end
end

function MenuInitDialog(parameter)
  DialogContainer = interfaceDialog:New()
  DialogContainer:loadSequence(parameter)
end

function MenuInitPauseScreen()
  local buttonStandard = {width = 200, height = 30, separation = 10}
  -- elements
  PauseResume = interfaceButton:New(
    game.width/2,
    game.height/2-buttonStandard.height-buttonStandard.separation,
    buttonStandard.width,
    buttonStandard.height,
    {false,true},
    1,
    {
      text = Locale.ui.pause_screen_resume,
      color = {0,0,0.5},
      color2 = {1,1,1}
    }
  )
  PauseOptions = interfaceButton:New(
    game.width/2,
    game.height/2,
    buttonStandard.width,
    buttonStandard.height,
    {false,true},
    1,
    {
      text = Locale.ui.pause_screen_options,
      color = {0,0,0.5},
      color2 = {1,1,1}
    }
  )
  PauseExit = interfaceButton:New(
    game.width/2,
    game.height/2+buttonStandard.height+buttonStandard.separation,
    buttonStandard.width,
    buttonStandard.height,
    {false,true},
    1,
    {
      text = Locale.ui.pause_screen_exit,
      color = {0,0,0.5},
      color2 = {1,1,1}
    }
  )
end
