-- Craft Research Timer (CRT) by @aTo (EU)
-- v0.4.8

function CRT.SetLock(Newlock)
	CRT.SV.Settings.lock = Newlock
	if (CRT.UI.GRID_TLW~= nil) then
		CRT.UI.GRID_TLW:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetMovable(Newlock)
	end
end

function CRT.SetMode(NewMode)
CRT.SV.Settings.mode = NewMode
ReloadUI()
end

function CRT.Settimer_format(Newtimer_format)
CRT.SV.Settings.timer_format = Newtimer_format
end

function CRT.Gettimer_format()
    local format = CRT.SV.Settings.timer_format
    if (string.match(format, ":")) then
        format = "smart"
        CRT.SV.Settings.timer_format = format
    end
    return format
end


-------------------------ALERT Components---------------------------------------
function CRT.SetAlert(NewAlert)
	CRT.SV.Settings.ALERT.hidden = NewAlert
	if (CRT.UI.ALERT_TLW ~= nil) then
		CRT.UI.ALERT_TLW:SetHidden(not NewAlert)
	end
end

function CRT.SetPreview(NewPreview)
	CRT.SV.Settings.ALERT.preview = NewPreview
	CRT.UI.ALERT_BD:SetHidden(not NewPreview)
	if (CRT.UI.ALERT_TLW ~= nil) then
		CRT.UI.ALERT_TLW:SetMovable(NewPreview)
	end
end

function CRT.GetALERTColor()
	return CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b, CRT.SV.Settings.ALERT.Color.a
end

function CRT.SetALERTColor(r, g, b, a)
	if (CRT.UI.ALERT_WD ~= nil) then
		CRT.UI.ALERT_WD:AddMessage("New Alert Color", CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b)
	end
	CRT.SV.Settings.ALERT.Color.r = r
	CRT.SV.Settings.ALERT.Color.g = g
	CRT.SV.Settings.ALERT.Color.b = b
	CRT.SV.Settings.ALERT.Color.a = a
end

function CRT.SetALERTBS(Alertswitch)
	CRT.SV.Settings.ALERT.BS = Alertswitch
end

function CRT.SetALERTCL(Alertswitch)
	CRT.SV.Settings.ALERT.CL = Alertswitch
end
function CRT.SetALERTWO(Alertswitch)
	CRT.SV.Settings.ALERT.WO = Alertswitch
end

-------------------------GRID Components---------------------------------------
function CRT.GetGRIDBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.GRID.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT.SetGRIDBackdropAlpha(NewGRIDBackdropAlphaPercent)
	local NewGRIDBackdropAlpha = NewGRIDBackdropAlphaPercent / 100
	if (CRT.UI.GRID_BD ~= nil) then
		CRT.UI.GRID_BD:SetAlpha(NewGRIDBackdropAlpha)
	end
	CRT.SV.Settings.GRID.BackdropAlpha = NewGRIDBackdropAlpha
end

function CRT.GetGRIDScale()
	local ScalePercent = CRT.SV.Settings.GRID.Scale * 100
	return ScalePercent
end
function CRT.SetGRIDScale(NewGRIDScalePercent)
	local NewGRIDScale = NewGRIDScalePercent / 100
	if (CRT.UI.GRID_TLW~= nil) then
		CRT.UI.GRID_TLW:SetScale(NewGRIDScale)
	end
	CRT.SV.Settings.GRID.Scale = NewGRIDScale
end

function CRT.GetGRIDColor()
	return CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a
end

function CRT.SetGRIDColor(r, g, b, a)
	CRT.SV.Settings.GRID.Color.r = r
	CRT.SV.Settings.GRID.Color.g = g
	CRT.SV.Settings.GRID.Color.b = b
	CRT.SV.Settings.GRID.Color.a = a
end

-------------------------BS Components---------------------------------------

function CRT.SetTrackerBS(state)
	CRT.SV.Settings.BS.craft = state
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetHidden(not state)
	end
end

function CRT.SetBSHide0(NewBSHide0)
	CRT.SV.Settings.BS.Hide_0 = NewBSHide0
		if (CRT.UI.CRAFT_TLW[0] ~= nil and NewBSHide0 == false and CRT.SV.Settings.BS.Hide_Type ~= "Toggle keybind" and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
end


function CRT.SetBSHideMenu(NewBSHideMenu)
	CRT.SV.Settings.BS.Hide_Type = NewBSHideMenu
	if (NewBSHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end


function CRT.GetBSBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.BS.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT.SetBSBackdropAlpha(NewBSBackdropAlphaPercent)
	local NewBSBackdropAlpha = NewBSBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_BD[0]:SetAlpha(NewBSBackdropAlpha)
	end
	CRT.SV.Settings.BS.BackdropAlpha = NewBSBackdropAlpha
end

function CRT.GetBSScale()
	local ScalePercent = CRT.SV.Settings.BS.Scale * 100
	return ScalePercent
end
function CRT.SetBSScale(NewBSScalePercent)
	local NewBSScale = NewBSScalePercent / 100
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetScale(NewBSScale)
	end
	CRT.SV.Settings.BS.Scale = NewBSScale
end

function CRT.GetBSColor()
return CRT.SV.Settings.BS.Color.r, CRT.SV.Settings.BS.Color.g, CRT.SV.Settings.BS.Color.b, CRT.SV.Settings.BS.Color.a
end

function CRT.SetBSColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_WD[0][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[0][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.BS.Color.r = r
CRT.SV.Settings.BS.Color.g = g
CRT.SV.Settings.BS.Color.b = b
CRT.SV.Settings.BS.Color.a = a
end


-------------------------CL Components---------------------------------------
function CRT.SetTrackerCL(state)
	CRT.SV.Settings.CL.craft = state
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetHidden(not state)
	end
end

function CRT.SetCLHide0(NewCLHide0)
	CRT.SV.Settings.CL.Hide_0 = NewCLHide0
		if (CRT.UI.CRAFT_TLW[1] ~= nil and NewCLHide0 == false and CRT.SV.Settings.CL.Hide_Type ~= "Toggle keybind" and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
end


function CRT.SetCLHideMenu(NewCLHideMenu)
	CRT.SV.Settings.CL.Hide_Type = NewCLHideMenu
	if (NewCLHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end

function CRT.GetCLBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.CL.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT.SetCLBackdropAlpha(NewCLBackdropAlphaPercent)
	local NewCLBackdropAlpha = NewCLBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_BD[1] ~= nil) then
		CRT.UI.CRAFT_BD[1]:SetAlpha(NewCLBackdropAlpha)
	end
	CRT.SV.Settings.CL.BackdropAlpha = NewCLBackdropAlpha
end

function CRT.GetCLScale()
	local ScalePercent = CRT.SV.Settings.CL.Scale * 100
	return ScalePercent
end
function CRT.SetCLScale(NewCLScalePercent)
	local NewCLScale = NewCLScalePercent / 100
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetScale(NewCLScale)
	end
	CRT.SV.Settings.CL.Scale = NewCLScale
end

function CRT.GetCLColor()
return CRT.SV.Settings.CL.Color.r, CRT.SV.Settings.CL.Color.g, CRT.SV.Settings.CL.Color.b, CRT.SV.Settings.CL.Color.a
end

function CRT.SetCLColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_WD[1][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[1][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.CL.Color.r = r
CRT.SV.Settings.CL.Color.g = g
CRT.SV.Settings.CL.Color.b = b
CRT.SV.Settings.CL.Color.a = a
end

-------------------------Woodworking Components---------------------------------------
function CRT.SetTrackerWO(state)
	CRT.SV.Settings.WO.craft = state
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetHidden(not state)
	end
end

function CRT.SetWOHide0(NewWOHide0)
	CRT.SV.Settings.WO.Hide_0 = NewWOHide0
		if (CRT.UI.CRAFT_TLW[2] ~= nil and NewWOHide0 == false and CRT.SV.Settings.WO.Hide_0 ~= "Toggle keybind" and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
end

function CRT.SetWOHideMenu(NewWOHideMenu)
	CRT.SV.Settings.WO.Hide_Type = NewWOHideMenu
	if (NewWOHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end

function CRT.GetWOBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.WO.BackdropAlpha * 100
	return BackdropAlphaPercent
end

function CRT.SetWOBackdropAlpha(NewWOBackdropAlphaPercent)
	local NewWOBackdropAlpha = NewWOBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_BD[2] ~= nil) then
		CRT.UI.CRAFT_BD[2]:SetAlpha(NewWOBackdropAlpha)
	end
	CRT.SV.Settings.WO.BackdropAlpha = NewWOBackdropAlpha
end

function CRT.GetWOScale()
	local ScalePercent = CRT.SV.Settings.WO.Scale * 100
	return ScalePercent
end

function CRT.SetWOScale(NewWOScalePercent)
	local NewWOScale = NewWOScalePercent / 100
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetScale(NewWOScale)
	end
	CRT.SV.Settings.WO.Scale = NewWOScale
end

function CRT.GetWOColor()
return CRT.SV.Settings.WO.Color.r, CRT.SV.Settings.WO.Color.g, CRT.SV.Settings.WO.Color.b, CRT.SV.Settings.WO.Color.a
end

function CRT.SetWOColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_WD[2][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[2][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.WO.Color.r = r
CRT.SV.Settings.WO.Color.g = g
CRT.SV.Settings.WO.Color.b = b
CRT.SV.Settings.WO.Color.a = a
end

function CRT.Reset()

		CRT.SV.Settings.icon_width = CRT.svDefaults.icon_width
		CRT.SV.Settings.icon_height = CRT.svDefaults.icon_height
		CRT.SV.Settings.text_width = CRT.svDefaults.text_width
		CRT.SV.Settings.text_height = CRT.svDefaults.text_height
		CRT.SV.Settings.mode = CRT.svDefaults.mode
		CRT.SV.Settings.timer_format = CRT.svDefaults.timer_format
		-- blacksmithing
		CRT.SV.Settings.BS.offset.X = CRT.svDefaults.BS.offset.X
		CRT.SV.Settings.BS.offset.Y = CRT.svDefaults.BS.offset.Y
		CRT.SV.Settings.BS.craft = CRT.svDefaults.BS.craft
		CRT.SV.Settings.BS.Hide_0 = CRT.svDefaults.BS.Hide_0
		CRT.SV.Settings.BS.Hide_Type = CRT.svDefaults.BS.Hide_Type
		CRT.SV.Settings.BS.BackdropAlpha = CRT.svDefaults.BS.BackdropAlpha
		CRT.SV.Settings.BS.Scale = CRT.svDefaults.BS.Scale
		CRT.SV.Settings.BS.Color.r = CRT.svDefaults.BS.Color.r
		CRT.SV.Settings.BS.Color.g = CRT.svDefaults.BS.Color.g
		CRT.SV.Settings.BS.Color.b = CRT.svDefaults.BS.Color.b
		CRT.SV.Settings.BS.Color.a = CRT.svDefaults.BS.Color.a
		--clothing
		CRT.SV.Settings.CL.offset.X = CRT.svDefaults.CL.offset.X
		CRT.SV.Settings.CL.offset.Y = CRT.svDefaults.CL.offset.Y
		CRT.SV.Settings.CL.craft = CRT.svDefaults.CL.craft
		CRT.SV.Settings.CL.Hide_0 = CRT.svDefaults.CL.Hide_0
		CRT.SV.Settings.CL.Hide_Type = CRT.svDefaults.CL.Hide_Type
		CRT.SV.Settings.CL.BackdropAlpha = CRT.svDefaults.CL.BackdropAlpha
		CRT.SV.Settings.CL.Scale = CRT.svDefaults.CL.Scale
		CRT.SV.Settings.CL.Color.r = CRT.svDefaults.CL.Color.r
		CRT.SV.Settings.CL.Color.g = CRT.svDefaults.CL.Color.g
		CRT.SV.Settings.CL.Color.b = CRT.svDefaults.CL.Color.b
		CRT.SV.Settings.CL.Color.a = CRT.svDefaults.CL.Color.a
		-- woodworking
		CRT.SV.Settings.WO.offset.X = CRT.svDefaults.WO.offset.X
		CRT.SV.Settings.WO.offset.Y = CRT.svDefaults.WO.offset.Y
		CRT.SV.Settings.WO.craft = CRT.svDefaults.WO.craft
		CRT.SV.Settings.WO.Hide_0 = CRT.svDefaults.WO.Hide_0
		CRT.SV.Settings.WO.Hide_Type = CRT.svDefaults.WO.Hide_Type
		CRT.SV.Settings.WO.BackdropAlpha = CRT.svDefaults.WO.BackdropAlpha
		CRT.SV.Settings.WO.Scale = CRT.svDefaults.WO.Scale
		CRT.SV.Settings.WO.Color.r = CRT.svDefaults.WO.Color.r
		CRT.SV.Settings.WO.Color.g = CRT.svDefaults.WO.Color.g
		CRT.SV.Settings.WO.Color.b = CRT.svDefaults.WO.Color.b
		CRT.SV.Settings.WO.Color.a = CRT.svDefaults.WO.Color.a
		--Grid
		CRT.SV.Settings.GRID.hidden = CRT.svDefaults.GRID.hidden
		CRT.SV.Settings.GRID.offset.X = CRT.svDefaults.GRID.offset.X
		CRT.SV.Settings.GRID.offset.Y = CRT.svDefaults.GRID.offset.Y
		CRT.SV.Settings.GRID.BackdropAlpha = CRT.svDefaults.GRID.BackdropAlpha
		CRT.SV.Settings.GRID.Scale = CRT.svDefaults.GRID.Scale
		CRT.SV.Settings.GRID.Color.r = CRT.svDefaults.GRID.Color.r
		CRT.SV.Settings.GRID.Color.g = CRT.svDefaults.GRID.Color.g
		CRT.SV.Settings.GRID.Color.b = CRT.svDefaults.GRID.Color.b
		CRT.SV.Settings.GRID.Color.a = CRT.svDefaults.GRID.Color.a
		--Alert
		CRT.SV.Settings.ALERT.hidden = CRT.svDefaults.ALERT.hidden
		CRT.SV.Settings.ALERT.preview = CRT.svDefaults.ALERT.preview
		CRT.SV.Settings.ALERT.offset.X = CRT.svDefaults.ALERT.offset.X
		CRT.SV.Settings.ALERT.offset.Y = CRT.svDefaults.ALERT.offset.Y
		CRT.SV.Settings.ALERT.Color.r = CRT.svDefaults.ALERT.Color.r
		CRT.SV.Settings.ALERT.Color.g = CRT.svDefaults.ALERT.Color.g
		CRT.SV.Settings.ALERT.Color.b = CRT.svDefaults.ALERT.Color.b
		CRT.SV.Settings.ALERT.Color.a = CRT.svDefaults.ALERT.Color.a

	ReloadUI()

end