--UPDATE_MOUSEOVER_UNIT
function()
    return true
end

--DISPLAY
function()
    if UnitBuff("mouseover", "Rejuvenation (Germination)") then
        local caster = select(8, UnitBuff("mouseover", "Rejuvenation (Germination)"))
        if caster == "player" then
            local amount = select(17, UnitBuff("mouseover", "Rejuvenation (Germination)"))
            local exp = select(7, UnitBuff("mouseover", "Rejuvenation (Germination)"))
            local dur = select(6, UnitBuff("mouseover", "Rejuvenation (Germination)"))
            local remDur = exp - GetTime()
            return aura_env.hexgrad(dur - remDur, 0, dur) .. aura_env.shorten(amount) .. "\124r"
        end
    end
end

--INIT
aura_env.hexgrad = function(val, min, max)
    local function tohex(input)
        local output = string.format("%x", input * 255)
        return output
    end
    local function grad(c, min, max)
        c = (((max - c) / (max - min)) * 1)
        if c > 0.5 then
            c = 1 - (2 * (c - 0.5))
            return c, 1, 0, 1
        else
            c = c * 2
            return 1, c, 0, 1
        end
    end
    local color1, color2, color3, color4 = 0, 0, 0, 0
    color1, color2, color3, color4 = grad(val, min, max)
    color1, color2, color3, color4 = tohex(color1), tohex(color2), tohex(color3), tohex(color4)
    color1, color2, color3, color4 = tostring(color1), tostring(color2), tostring(color3), tostring(color4)
    if string.len(color1) == 1 then color1 = "0" .. color1 end
    if string.len(color2) == 1 then color2 = "0" .. color2 end
    if string.len(color3) == 1 then color3 = "0" .. color3 end
    if string.len(color4) == 1 then color4 = "0" .. color4 end
    local color = "\124c" .. color4 .. color1 .. color2 .. color3
    return color
end
aura_env.shorten = function(val)
    local function round(var, n)
        if (n) then
            var = math.floor((var * 10 ^ n) + 0.5) / (10 ^ n)
        else
            var = math.floor(var + 0.5)
        end
        return var
    end
    local n = 2
    if val < 1e3 then
        return round(val, n)
    elseif val > 1e3 and val < 1e6 then
        return round(val / 1e3, n) .. "k"
    elseif val > 1e6 and val < 1e9 then
        return round(val / 1e6, n) .. "M"
    elseif val > 1e9 then
        return round(val / 1e9, n) .. "G"
    end
end
