--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| 	Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]

local PANEL = {}

function PANEL:Init()
	local scrW, scrH = ScrW(), ScrH()

	self:SetSize(scrW * 0.3, scrH * 0.4)
	self.text = vgui.Create("DTextEntry", self)
	self.text:Dock(FILL)
	self.text:DockMargin(0, 0, 0, SScaleMin(4 / 3))
	self.text:SetMultiline(true)
	self.text:SetEditable(false)
	self.text:SetTextColor(Color(200, 200, 200, 255))
	self.text:SetCursorColor(Color(200, 200, 200, 255))
	self.text:SetFont("MenuFontNoClamp")
	self.text:SetText("")
	self.text.Paint = function(panel, w, h)
		surface.SetDrawColor(Color(0, 0, 0, 100))
		surface.DrawRect(0, 0, w, h)

		surface.SetDrawColor(Color(111, 111, 136, (255 / 100 * 30)))
		surface.DrawOutlinedRect(0, 0, w, h)

		panel:DrawTextEntryText( panel:GetTextColor(), panel:GetHighlightColor(), panel:GetCursorColor() )
	end

	self.text.OnChange = function()
		self.save:SetDisabled(false)
	end

	local maxLen = ix.config.Get("maxDescriptionLength", 512)

	self.text.AllowInput = function()
		local text = self.text:GetValue()
		if (string.utf8len(text) > maxLen) then
		  return true
		end
	end

	self.save = vgui.Create("DButton", self)
	self.save:SetText("Sauvegarder")
	self.save:SetFont("MenuFontNoClamp")
	self.save:SetTextColor(color_white)
	self.save:SetTall(SScaleMin(30 / 3))
	self.save:Dock(BOTTOM)
	self.save:SetDisabled(true)
	self.save.DoClick = function(btn)
		local curTime = CurTime()

		if (!btn.nextClick or btn.nextClick <= curTime) then
			  surface.PlaySound("helix/ui/press.wav")
		  self.save:SetDisabled(true)

		  netstream.Start("ixChangeDescription", self.characterId, self.text:GetValue())

		  btn.nextClick = curTime + 0.5
		end
	end

	self:Center()
	DFrameFixer(self)
end

function PANEL:SetDescription(desc)
	self.text:SetText(desc)
	self:FixLabelTitle()
end

function PANEL:FixLabelTitle()
	self.lblTitle:SetFont("MenuFontNoClamp")
	self.lblTitle:SizeToContents()
end

function PANEL:SetEditable(edit)
  self.text:SetEditable(edit)
end

vgui.Register("ixExtendedDescription", PANEL, "DFrame")
