local DAS = DailyAutoShare

local function GenerateTooltipText(control)

	local key = control:GetName()

	if 	    string.match(key, "Invite")	then return GetString((DAS.GetAutoInvite() and DAS_SI_INVITE_TRUE) or DAS_SI_INVITE_FALSE)
	elseif string.match(key, "Accept")	then return GetString((DAS.GetAutoAcceptShared() and DAS_SI_ACCEPT_TRUE) or DAS_SI_ACCEPT_FALSE)
	elseif string.match(key, "Share") 	then return GetString((DAS.GetAutoShare() and DAS_SI_SHARE_TRUE) or DAS_SI_SHARE_FALSE)
	elseif string.match(key, "Spam") 	then return GetString(DAS_SI_SPAM)
	elseif string.match(key, "Donate") 	then return GetString(DAS_SI_DONATE)
	elseif string.match(key, "Refresh") then return GetString(DAS_SI_REFRESH)
	end

end


local function SetTooltipText(control)
	DailyAutoShare_Tooltip:ClearLines()
	local tooltipText = GenerateTooltipText(control)
    if not tooltipText then return end
	DailyAutoShare_Tooltip:AddLine(tooltipText)
	DailyAutoShare_Tooltip:SetHidden(false)

	return tooltipText
end
function DAS.SetTooltipText(control)
	SetTooltipText(control)
end


local function setTooltipOffset(control)
	local offsetY = control:GetTop() - control:GetParent():GetTop()
	local isTooltipRight = DAS.GetSettings().tooltipRight
	local myAnchorPos 		= (isTooltipRight and TOPLEFT) or TOPRIGHT
	local parentAnchorPos 	= (isTooltipRight and TOPRIGHT) or TOPLEFT

	DailyAutoShare_Tooltip:ClearAnchors()
	DailyAutoShare_Tooltip:SetAnchor(myAnchorPos, control:GetParent(), parentAnchorPos, 0, offsetY)
end

function DAS.CreateControlTooltip(control)

	SetTooltipText(control)
    setTooltipOffset(DasHeader)

end

function DAS.CreateTooltip(control)
	setTooltipOffset(control)
	SetTooltipText(control, isButton)
end

local questStateColors = {
    [DAS_STATUS_ACTIVE]     = ZO_HIGHLIGHT_TEXT:UnpackRGBA(),
    [DAS_STATUS_OPEN]       = ZO_NORMAL_TEXT:UnpackRGBA(),
    [DAS_STATUS_COMPLETE]   = ZO_DISABLED_TEXT:UnpackRGBA(),
}

local dotDotDot = "%.%.%."

local questStates = {
    [DAS_STATUS_COMPLETE]   = " completed today",
    [DAS_STATUS_ACTIVE]     = " is acive",
    [DAS_STATUS_OPEN]       = " still open",
}

local prequestString    = GetString(DAS_SI_PREQUEST)
local completedString   = GetString(DAS_SI_COMPLETED)
local openString        = GetString(DAS_SI_OPEN)
local questCompleted    = DAS.questCompleted


local function getPrequestTooltipData(questName)
    local prequestData = DAS.prequests[questName]
    if not prequestData then return end
    local prequestStatus = (questCompleted(prequestData.prequestId) and completedString) or openString
    return zo_strformat(prequestString, prequestData.prequestName, prequestStatus)
end

local bingoCodeIs = GetString(DAS_BINGO_CODE_IS)
function DAS.CreateLabelTooltip(control)

	setTooltipOffset(control)
	local tooltipText = ""

    local questName = control.dataTitle or control.dataQuestName

    if nil == questName then return end
    if nil ~= questName:find(dotDotDot) then
        tooltipText = GetString(DAS_TOGGLE_SUBLIST)
    else
        local bingoString = control.dataBingoString or ""
        local questState = control.dataQuestState
        if questState == DAS_STATUS_COMPLETE then
            tooltipText = bingoString .. questStates[questState]
        elseif DAS_STATUS_ACTIVE == questState or DAS_STATUS_OPEN == questState then
            tooltipText = (questName .. questStates[questState] .. bingoCodeIs .. bingoString)
        else
            DailyAutoShare_Tooltip:SetHidden(true)
            return
        end
    end

	DailyAutoShare_Tooltip:AddLine(tooltipText)
	DailyAutoShare_Tooltip:AddLine(getPrequestTooltipData(questName))
	DailyAutoShare_Tooltip:SetHidden(false)

 end

function DAS.HideTooltip(control)
	DailyAutoShare_Tooltip:ClearLines()
	 DailyAutoShare_Tooltip:SetHidden(true)
end