local p = {}
local error = require("Module:Error")

local data = {
    --- {color, text, category, cat-key}
    [""] = {"AAAAAA", "新申請", "在審核機械人作業申請", "A"},
    ["+"] = {"007DFF", "已批准", "已批准機械人作業申請", ""},
    ["app"] = {"007DFF", "已批准", "已批准機械人作業申請", ""},
    ["approved"] = {"007DFF", "已批准", "已批准機械人作業申請", ""},
    ["批准"] = {"007DFF", "已批准", "已批准機械人作業申請", ""},
    ["rfr"] = {"007DFF", "等待[[Special:用户列表/bureaucrat|行政員]]授權", "已批准機械人作業申請", ""},
    ["待授權"] = {"007DFF", "等待[[Special:用户列表/bureaucrat|行政員]]授權", "已批准機械人作業申請", ""},
    ["待授权"] = {"007DFF", "等待[[Special:用户列表/bureaucrat|行政員]]授權", "已批准機械人作業申請", ""},
    ["-"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["den"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["deny"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["denied"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["拒絕"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["拒绝"] = {"D11D13", "拒絕申請", "已拒絕機械人作業申請", ""},
    ["wit"] = {"D11D13", "撤回申請", "已撤回機械人作業申請", ""},
    ["withdraw"] = {"D11D13", "撤回申請", "已撤回機械人作業申請", ""},
    ["撤回"] = {"D11D13", "撤回申請", "已撤回機械人作業申請", ""},
    ["exp"] = {"D11D13", "已過期", "已過期機械人作業申請", ""},
    ["expire"] = {"D11D13", "已過期", "已過期機械人作業申請", ""},
    ["expired"] = {"D11D13", "已過期", "已過期機械人作業申請", ""},
    ["過期"] = {"D11D13", "已過期", "已過期機械人作業申請", ""},
    ["过期"] = {"D11D13", "已過期", "已過期機械人作業申請", ""},
    ["rev"] = {"D11D13", "撤銷許可", "已吊銷機械人作業許可", ""},
    ["revoke"] = {"D11D13", "撤銷許可", "已吊銷機械人作業許可", ""},
    ["revoked"] = {"D11D13", "撤銷許可", "已吊銷機械人作業許可", ""},
    ["撤銷"] = {"D11D13", "撤銷許可", "已吊銷機械人作業許可", ""},
    ["撤销"] = {"D11D13", "撤銷許可", "已吊銷機械人作業許可", ""},
    ["?"] = {"FFCC00", "討論中", "在審核機械人作業申請", "C"},
    ["dis"] = {"FFCC00", "討論中", "在審核機械人作業申請", "C"},
    ["discuss"] = {"FFCC00", "討論中", "在審核機械人作業申請", "C"},
    ["討論"] = {"FFCC00", "討論中", "在審核機械人作業申請", "C"},
    ["讨论"] = {"FFCC00", "討論中", "在審核機械人作業申請", "C"},
    ["tric"] = {"FFCC00", "測試已完成", "在審核機械人作業申請", "D"},
    ["trial complete"] = {"FFCC00", "測試已完成", "在審核機械人作業申請", "D"},
    ["測試完成"] = {"FFCC00", "測試已完成", "在審核機械人作業申請", "D"},
    ["测试完成"] = {"FFCC00", "測試已完成", "在審核機械人作業申請", "D"},
    ["tri"] = {"00AF89", "測試中", "在審核機械人作業申請", "B"},
    ["trial"] = {"00AF89", "測試中", "在審核機械人作業申請", "B"},
    ["測試"] = {"00AF89", "測試中", "在審核機械人作業申請", "B"},
    ["测试"] = {"00AF89", "測試中", "在審核機械人作業申請", "B"},
}
function p._getcolor( key, default )
    if data[key] == nil then
        if default then
            return default
        else
            return key
        end
	end
	return data[key][1]
end

function p._gettext( key )
	if data[key] == nil then
		return "新申請"
	end
	return data[key][2]
end

function p._getcategorykey(key)
    if data[key] == nil then
        return ""
    end
    if data[key][4] == nil or data[key][4] == "" then
        return mw.getCurrentFrame():callParserFunction('#titleparts', {mw.title.getCurrentTitle().fullText, 1, 3})
    end
    return data[key][4]
end

function p._getcategory(key)
    if key == "no" then
        return ""
    end

    if data[key] == nil then
        return error.error({message = "匿名參數1錯誤,請查看使用方法:[[Template:StatusBRFA]]"})
    end

    local title = mw.title.getCurrentTitle()
    if title:isSubpageOf(mw.title.new("Wikipedia:机器人/申请")) == false then
        return ""
    end
    if title:isSubpageOf(mw.title.new("Wikipedia:机器人/申请/存档")) == true then
        return ""
    end
    if title.fullText == "Wikipedia:机器人/申请/topic list" then
        return ""
    end
    if title.fullText == "Wikipedia:机器人/申请/header" then
        return ""
    end

    local result = ""
    if data[key][3] ~= "" then
        result = "[[Category:" .. data[key][3]
        local catkey = p._getcategorykey(key)
        if catkey then
            result = result .. "|" .. catkey
        end
        result = result .. "]]"
    end
    
    if key == "rfr" or key == "待授權" or key == "待授权" then
    	result = result .. "[[Category:行政员积压工作]]"
    end

    return result
end

function p.main( frame )
    local args = frame:getParent().args
    local arg1 = args[1] or ""
    local color1 = p._getcolor(args["color1"]) or p._getcolor(args["color"]) or p._getcolor(arg1, "AAAAAA")
    local color2 = p._getcolor(args["color2"]) or p._getcolor(args["color"]) or p._getcolor(arg1, "AAAAAA")
    local text = args[2] or p._gettext(arg1)
    local sign = args["sign"] or ""
    local cat = ""
    if args["cat"] then
        cat = p._getcategory(args["cat"])
    else
        cat = p._getcategory(arg1)
    end

    return "<div>'''狀態''':"
        .. "<span style=\"background:#" .. color1 .. "\">&emsp;</span>"
        .. "<span style=\"background:#" .. color2 .. "\">&emsp;</span>"
        .. " <b>" .. text .. "</b>" .. sign .. "</div>" .. cat
end

return p