Mô đun:Conservation status

local p = {}
-- function main() - entry point for template
function p.main(frame)
local system = mw.text.trim(frame:getParent().args1) -- needs trim() for unnamed parameters
	local status = mw.text.trim(frame:getParent().args2) 
	local refs = mw.text.trim(frame:getParent().args3 or "" ) 

--TODO add handling of extinct parameter

return '! colspan = 2 | Tình trạng bảo tồn' -- header row
.. '\n
.. '\n| colspan = 2 | ' 
.. p._main(frame, system, status, refs) -- status content 
.. 


end
-- function status() - entry point for direct invoke testing (assumes table structure and adds cell content)
function p.status(frame) 
	local system = mw.text.trim(frame.args1)
	local status = mw.text.trim(frame.args2)
	local refs = mw.text.trim(frame.args3 or "" )
	--TODO if system and status then return
	return p._main(frame, system, status, refs)
end
function p._main(frame, system, status, refs)

local output = "ERROR"
system = string.upper(system)
status = string.upper(status)
local systemText = ""

--TODO check for system; if none give needs handling with long list of possible statuses to match current system

if system == "IUCN3.1" or system == "IUCN" then
output = p.IUCN31(frame, system, status)
systemText = "IUCN 3.1"
elseif system == "IUCN2.3" then
output = p.IUCN23(frame, system, status)
systemText = "IUCN 2.3"
elseif system == "CNCFLORA" then
--output = p.CNCFlora(frame, system, status)
output = p.UsesIUCN31(frame, system, status)    -- uses IUCN3.1 system and criteria (need to block catgories)
systemText = "CNCFlora"
elseif system == "TPWCA" then
output = p.UsesIUCN31(frame, system, status)    -- uses IUCN3.1 system and criteria (need to block catgories)
systemText = "TPWCA"
elseif system == "SANBI" or system == "RLSAP" then
output = p.SANBI(frame, system, status)    
systemText = "SANBI Red List"
elseif system == "NATURESERVE" or system == "TNC" then
output = p.NatureServe(frame, system, status)
systemText = "NatureServe"
elseif system == "EPBC" then
output = p.EPBC(frame, system, status)
systemText = "EPBC Act"
elseif system == "ESA" then
output = p.ESA(frame, system, status)
systemText = "ESA"
	elseif system == "COSEWIC" then
output = p.COSEWIC(frame, system, status)
systemText = "COSEWIC"
	elseif system == "DECF" then
output = p.DECF(frame, system, status)
systemText = "DEC"
	elseif system == "NSWBCA" then
output = p.NSWBCA(frame, system, status)
		systemText = "NSWBCA"
	elseif system == "QLDNCA" then
output = p.QLDNCA(frame, system, status)
systemText = "NCA"
	elseif system == "CITES" then
output = p.CITES(frame, system, status)
systemText = "CITES"
	elseif system == "NZTCS" then
output = p.NZTCS(frame, system, status)
systemText = "NZ TCS"
else
output = p.SystemNotRecognised(frame, system, status)
systemText = "" .. system .. ""  -- should this be linked?
end
if output ~= "ERROR" then
	--=  template code
	        (){}
**
local statusText = frame:getParent().args'status_text'
--local systemText = " IUCN 3.1"
if statusText then 
if statusText == "" then statusText = "#Tình trạng bảo tồn" end
	   systemText = "See text"
end
output = output ..  " (" .. systemText .. ")" .. refs .. "" -- ""

return output
end
end
-- OTHER SYSTEMS
Territory Parks and Wildlife Conservation Act 2000 (TPWCA)
function  p.SystemNotRecognised(frame, system, status)
	local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status iucn3.1 EX.svg") .. extinct 
elseif status == "CR" then
	output = "Critically Endangered" 
elseif status == "EN" then	
	output = "Endangered" 
elseif status == "NT" then	
	output = "Near Threatened" 
else
	output = status
end
	return output .. p.addCategory("Taxoboxes with an unrecognised status system")
end
--***************************************** IUCN 3.1 *********************************function p.IUCN31(frame, system, status)
	
	-- | EX = alt=Extinct  
	-- | EW = alt=Extinct in the Wild 
	-- | CR = alt=Critically Endangered 
	-- | EN = alt=Endangered 
	-- | VU = alt=Vulnerable 
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status iucn3.1 EX.svg") .. extinct .. p.addCategory("IUCN Red List extinct species")
elseif status == "EW" then
	output = p.addImage("Status iucn3.1 EW.svg") .. "Extinct in the Wild" .. p.addCategory("IUCN Red List extinct in the wild species")
elseif status == "CR" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically Endangered" .. p.addCategory("IUCN Red List critically endangered species")
elseif status == "EN" then
	output = p.addImage("Status iucn3.1 EN.svg") .. "Endangered" .. p.addCategory("IUCN Red List endangered species")
elseif status == "VU" then
	output = p.addImage("Status iucn3.1 VU.svg") .. "Vulnerable" .. p.addCategory("IUCN Red List vulnerable species")
-- | NT = alt=Near Threatened 
-- | LC = alt=Least Concern 
-- | DD = alt=Data Deficient 
-- | NE = Not evaluated
-- | NR = Not recognized
-- | PE = alt=Critically endangered, possibly extinct 
-- | PEW = alt=Critically endangered, possibly extinct in the wild 
elseif status == "NT" then
	output = p.addImage("Status iucn3.1 NT.svg") .. "Near Threatened" .. p.addCategory("IUCN Red List near threatened species")
elseif status == "LC" then
	output = p.addImage("Status iucn3.1 LC.svg") .. "Least Concern" .. p.addCategory("IUCN Red List least concern species")
elseif status == "DD" then
	output = p.addImage("Status iucn3.1 blank.svg") .. "Data Deficient" .. p.addCategory("IUCN Red List data deficient species")
elseif status == "NE" then
	output = "Not evaluated" 
elseif status == "NR" then
	output =  "Not recognized" 
elseif status == "PE" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically endangered, possibly extinct" .. p.addCategory("IUCN Red List critically endangered species")
elseif status == "PEW" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically endangered, possibly extinct in the wild" .. p.addCategory("IUCN Red List critically endangered species")
else 
	-- | Invalid status
	output = "Invalid status" .. p.addCategory("Tình trạng bảo tồn không hợp lệ")
end  

-- | Invalid status
--}} (){} (" .. systemText .. thirdParam .. ")"
return output 
end
-- ********************************* IUCN 2.3 *********************************************function p.IUCN23(frame, system, status)
	
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Tuyệt chủng"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status iucn2.3 EX.svg") .. extinct .. p.addCategory("Loài tuyệt chủng theo Sách đỏ IUCN")
elseif status == "EW" then
	output = p.addImage("Status iucn2.3 EW.svg") .. "Tuyệt chủng trong tự nhiên" .. p.addCategory("Tuyệt chủng trong tự nhiên theo Sách đỏ IUCN")
elseif status == "CR" then
	output = p.addImage("Status iucn2.3 CR.svg") .. "Cực kỳ nguy cấp" .. p.addCategory("Loài cực kỳ nguy cấp theo Sách đỏ IUCN")
elseif status == "EN" then
	output = p.addImage("Status iucn2.3 EN.svg") .. "Endangered" .. p.addCategory("IUCN Red List endangered species")
elseif status == "VU" then
	output = p.addImage("Status iucn2.3 VU.svg") .. "Sắp nguy cấp" .. p.addCategory("Loài sắp nguy cấp theo Sách đỏ IUCN")
elseif status == "LR" then
	output = p.addImage("Status iucn2.3 blank.svg") .. "Lower risk" .. p.addCategory("Tình trạng bảo tồn không hợp lệ")
elseif status == "CD" or status == "LR/CD" then
output = p.addImage("Status iucn2.3 CD.svg") .. "Phụ thuộc bảo tồn" .. p.addCategory("Loài phụ thuộc bảo tồn theo Sách đỏ IUCN")
elseif status == "NT" or status == "LR/NT" then
	output = p.addImage("Status iucn2.3 NT.svg") .. "Loài sắp bị đe dọa" .. p.addCategory("Loài sắp bị đe dọa theo Sách đỏ IUCN")
elseif status == "LC" or status == "LR/LC" then
	output = p.addImage("Status iucn2.3 LC.svg") .. "Loài ít quan tâm" .. p.addCategory("Loài ít quan tâm theo Sách đỏ IUCN")
elseif status == "DD" then
	output = p.addImage("Status iucn2.3 blank.svg") .. "Loài thiếu dữ liệu" .. p.addCategory("Loài thiếu dữ liệu theo Sách đỏ IUCN")
elseif status == "NE" then
	output = "Not evaluated" 
elseif status == "NR" then
	output =  "Not recognized" 
elseif status == "PE" then
	output = p.addImage("Status iucn2.3 CR.svg") .. "Critically endangered, possibly extinct" .. p.addCategory("IUCN Red List critically endangered species")
elseif status == "PEW" then
	output = p.addImage("Status iucn2.3 CR.svg") .. "Critically endangered, possibly extinct in the wild" .. p.addCategory("IUCN Red List critically endangered species")
else     	-- | Invalid status
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  

return output 
end
--******************************************* CNCFlora**************************************
-- Note: this is not needed if using IUCN 3.1 system and criteria; just use that function with no catgories
-- alternatively rename this function as p.UsesIUCN31()
--function p.CNCFlora(frame, system, status)
function p.UsesIUCN31(frame, system, status)
	
local output = system .. ' ' .. status
if status == "EX" then
	output = p.addImage("Status iucn3.1 EX.svg") .. "Extinct" --.. p.addCategory("IUCN Red List extinct species")
elseif status == "EW" then
	output = p.addImage("Status iucn3.1 EW.svg") .. "Extinct in the Wild" --.. p.addCategory("IUCN Red List extinct in the wild species")
elseif status == "CR" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically Endangered" --.. p.addCategory("IUCN Red List critically endangered species")
elseif status == "EN" then
	output = p.addImage("Status iucn3.1 EN.svg") .. "Endangered" --.. p.addCategory("IUCN Red List endangered species")
elseif status == "VU" then
	output = p.addImage("Status iucn3.1 VU.svg") .. "Vulnerable" --.. p.addCategory("IUCN Red List vulnerable species")
elseif status == "NT" then
	output = p.addImage("Status iucn3.1 NT.svg") .. "Near Threatened" --.. p.addCategory("IUCN Red List near threatened species")
elseif status == "LC" then
	output = p.addImage("Status iucn3.1 LC.svg") .. "Least Concern" --.. p.addCategory("IUCN Red List least concern species")
elseif status == "DD" then
	output = p.addImage("Status iucn3.1 blank.svg") .. "Data Deficient" --.. p.addCategory("IUCN Red List data deficient species")
elseif status == "NE" then
	output = "Not evaluated" 
elseif status == "NR" then
	output =  "Not recognized" 
elseif status == "PE" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically endangered, possibly extinct" --.. p.addCategory("IUCN Red List critically endangered species")
elseif status == "PEW" then
	output = p.addImage("Status iucn3.1 CR.svg") .. "Critically endangered, possibly extinct in the wild" --.. p.addCategory("IUCN Red List critically endangered species")
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  

return output 
end
-- *************** Natureserve/TNC *******************************function p.NatureServe(frame, system, status)
local output = system .. ' ' .. status
if status == "GX" then
	local extinct = "Presumed Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status TNC GX.svg") .. extinct .. p.addCategory("NatureServe presumed extinct species")
elseif status == "GH" then
	output = p.addImage("Status TNC GH.svg") .. "Possibly Extinct" .. p.addCategory("NatureServe possibly extinct species")
elseif status == "G1" then
	output = p.addImage("Status TNC G1.svg") .. "Critically Imperiled" .. p.addCategory("NatureServe critically imperiled species")
elseif status == "G2" then
	output = p.addImage("Status TNC G2.svg") .. "Imperiled" .. p.addCategory("NatureServe imperiled species")
elseif status == "G3" then
	output = p.addImage("Status TNC G3.svg") .. "Vulnerable" .. p.addCategory("NatureServe vulnerable species")
elseif status == "G4" then
	output = p.addImage("Status TNC G4.svg") .. "Apparently Secure" .. p.addCategory("NatureServe apparently secure species")
elseif status == "G5" then
	output = p.addImage("Status TNC G5.svg") .. "Secure" .. p.addCategory("NatureServe secure species")
elseif status == "GU" then
	output = p.addImage("Status TNC blank.svg") .. "Unrankable"
elseif status == "GNR" then
	output = p.addImage("Status TNC blank.svg") .. "Unranked"
elseif status == "TX" then
	local extinct = "Presumed Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status TNC TX.svg") .. extinct .. p.addCategory("NatureServe presumed extinct species")
elseif status == "TH" then
	output = p.addImage("Status TNC TH.svg") .. "Possibly Extinct" .. p.addCategory("NatureServe possibly extinct species")
elseif status == "T1" then
	output = p.addImage("Status TNC T1.svg") .. "Critically Imperiled" .. p.addCategory("NatureServe critically imperiled species")
elseif status == "T2" then
	output = p.addImage("Status TNC T2.svg") .. "Imperiled" .. p.addCategory("NatureServe imperiled species")
elseif status == "T3" then
	output = p.addImage("Status TNC T3.svg") .. "Vulnerable" .. p.addCategory("NatureServe vulnerable species")
elseif status == "T4" then
	output = p.addImage("Status TNC T4.svg") .. "Apparently Secure" .. p.addCategory("NatureServe apparently secure species")
elseif status == "T5" then
	output = p.addImage("Status TNC T5.svg") .. "Secure" .. p.addCategory("NatureServe secure species")
elseif status == "TU" then
	output = p.addImage("Status TNC blank.svg") .. "Unrankable"
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  
return output 
end
-- ********* EPBC: Environment Protection and Biodiversity Conservation Act 1999 (Australia) ***********function p.SANBI(frame, system, status)
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status SANBI EX.svg") .. extinct --.. p.addCategory("SANBI Red List extinct biota")
elseif status == "EW" then
	output = p.addImage("Status SANBI EW.svg") .. "Extinct in the Wild" --.. p.addCategory("SANBI Red List extinct in the wild biota")
elseif status == "RE" then
	output = p.addImage("Status SANBI RE.svg") .. "Regionally Extinct" --.. p.addCategory("SANBI Red List regionally extinct biota")
elseif status == "CR" then
	output = p.addImage("Status SANBI CR.svg") .. "Critically endangered" --.. p.addCategory("SANBI Red List critically endangered biota")
elseif status == "EN" then
	output = p.addImage("Status SANBI EN.svg") .. "Endangered" --.. p.addCategory("SANBI Red List endangered biota")
elseif status == "VU" then
	output = p.addImage("Status SANBI VU.svg") .. "Vulnerable" --.. p.addCategory("SANBI Red List vulnerable biota")
elseif status == "NT"  then
	output = p.addImage("Status SANBI NT.svg") .. "Near Threatened" --.. p.addCategory("SANBI Red List near threatened biota")
elseif status == "LC" then
	output = p.addImage("Status SANBI LC.svg") .. "Least Concern" --.. p.addCategory("SANBI Red List least concern biota")
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  

return output 
end
function p.EPBC(frame, system, status)
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status EPBC EX.svg") .. extinct .. p.addCategory("EPBC Act extinct biota")
elseif status == "EW" then
	output = p.addImage("Status EPBC EW.svg") .. "Extinct in the Wild" .. p.addCategory("EPBC Act extinct in the wild biota")
elseif status == "CR" then
	output = p.addImage("Status EPBC CR.svg") .. "Critically endangered" .. p.addCategory("EPBC Act critically endangered biota")
elseif status == "EN" then
	output = p.addImage("Status EPBC EN.svg") .. "Endangered" .. p.addCategory("EPBC Act endangered biota")
elseif status == "VU" then
	output = p.addImage("Status EPBC VU.svg") .. "Vulnerable" .. p.addCategory("EPBC Act vulnerable biota")
elseif status == "CD" then
	output = p.addImage("Status EPBC CD.svg") .. "Conservation Dependent" .. p.addCategory("EPBC Act conservation dependent biota")
elseif status == "DL"  or status == "DELISTED" then
	output = p.addImage("Status EPBC DL.svg") .. "Delisted" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  

return output 
end
-- *************** ESA *******************************function p.ESA(frame, system, status)
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status ESA EX.svg") .. extinct 
elseif status == "LE" or status == "E" then
	output = p.addImage("Status ESA LE.svg") .. "Endangered"  .. p.addCategory("ESA endangered species")
elseif status == "LT" or status == "T" then
	output = p.addImage("Status ESA EX.svg") .. "Threatened"  .. p.addCategory("ESA threatened species")
elseif status == "DL"  or status == "DELISTED" then
	output = p.addImage("Status ESA DL.svg") .. "Delisted" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end        
return output 
end
-- ********** COSEWIC: Committee on the Status of Endangered Wildlife in Canada *************function p.COSEWIC(frame, system, status)
local output = system .. ' ' .. status
if status == "X" then
	local extinct = "Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status COSEWIC X.svg") .. extinct 
elseif status == "XT" then
	    output = p.addImage("Status COSEWIC XT.svg") .. "Extirpated (Canada)"
elseif status == "E" then
	output = p.addImage("Status COSEWIC E.svg") .. "Endangered" 
elseif  status == "T" then
	output = p.addImage("Status COSEWIC T.svg") .. "Threatened" 
elseif  status == "SC" then
	output = p.addImage("Status COSEWIC SC.svg") .. "Special Concern" 
elseif  status == "DD" then
	output = p.addImage("Status_COSEWIC_blank.svg") .. "Data Deficient" 
elseif  status == "NAR" then
	output = p.addImage("Status COSEWIC NAR.svg") .. "Not at risk" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end     
return output 
end
-- *************** DECF *******************************function p.DECF(frame, system, status)
local output = system .. ' ' .. status
if status == "X" then
	local extinct = "Declared Rare — Presumed Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status DECF X.svg") .. extinct 
elseif status == "R" then
	output = p.addImage("Status DECF R.svg") .. "Declared rare" 
elseif status == "P1"  then
	output = p.addImage("Status DECF P1.svg") .. "Priority One — Poorly Known Taxa" 
elseif status == "P2"  then
	output = p.addImage("Status DECF P2.svg") .. "Priority Two — Poorly Known Taxa" 
elseif status == "P3"  then
	output = p.addImage("Status DECF P3.svg") .. "Priority Three — Poorly Known Taxa" 
elseif status == "P4"  then
	output = p.addImage("Status DECF P4.svg") .. "Priority Four — Rare Taxa" 
elseif status == "DL"  or status == "DELISTED" then
	output = p.addImage("Status DECF DL.svg") .. "Delisted" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end        
return output 
end
-- *************** QLDNCA (Queensland Nature Conservation Act *******************************-- https://www.data.qld.gov.au/dataset/conservation-status-of-queensland-wildlife/resource/d20c485d-b5dc-4c07-8304-df6a21783d4b 
function p.QLDNCA(frame, system, status)
local output = system .. ' ' .. status
if status == "EX"  then
	output = "Extinct" .. p.addCategory("Nature Conservation Act extinct biota")
elseif status == "EW" or status == "PE"   then  -- PE is the code used but keep EW for compatibility
	output = "Extinct in the Wild" .. p.addCategory("Nature Conservation Act extinct in the wild biota")
elseif status == "CR" then
	output = "Critically Endangered" .. p.addCategory("Nature Conservation Act critically endangered biota")
elseif status == "EN" or status == "E"  then
	output = "Endangered" .. p.addCategory("Nature Conservation Act endangered biota")
elseif status == "VU" or status == "V" then
	output = "Vulnerable " .. p.addCategory("Nature Conservation Act vulnerable biota")
elseif status == "R" then
	output = "Rare" .. p.addCategory("Nature Conservation Act rare biota")
elseif status == "NT" then
	output = "Near Threatened" .. p.addCategory("Nature Conservation Act near threatened biota")
elseif status == "SL" then
	output = "Special Least Concern" .. p.addCategory("Nature Conservation Act special least concern biota")
elseif status == "LC" or status == "C" then
	output = "Least Concern" .. p.addCategory("Nature Conservation Act least concern biota")
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end        

return output 
end
-- *************** NSWBCA *******************************function p.NSWBCA(frame, system, status)
	local output = system .. ' ' .. status
	   if status == "EX"  then
	output = "Extinct" 
elseif status == "EW"  then
	output = "Extinct in the Wild" 
elseif status == "CR" then
	output = "Critically Endangered" 
elseif status == "EN" then
	output = "Endangered" 
elseif status == "VU" then
	output = "Vulnerable " 
--   elseif status == "R" then
--    	output = "Rare" 
--   elseif status == "NT" then
--    	output = "Near Threatened" 
elseif status == "LC" then
	output = "Least Concern" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end  
	return output
end
-- *************** CITES *******************************function p.CITES(frame, system, status)
local output = system .. ' ' .. status
if status == "CITES_A1" then
	output = "CITES Appendix I" 
elseif status == "CITES_A2" then
	output = "CITES Appendix II" 
elseif status == "CITES_A3" then
	output = "CITES Appendix III" 
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end 
return output 
end
-- *************** NZTCS *******************************function p.NZTCS(frame, system, status)
local output = system .. ' ' .. status
if status == "EX" then
	local extinct = "Declared Rare — Presumed Extinct"
	if frame:getParent().args'extinct' then extinct = " (" .. frame:getParent().args'extinct' .. ")" end
	output = p.addImage("Status NZTCS EX.svg") .. extinct 
-- Threatened categories (NC,NE,NV)
elseif status == "NC" then
	output = p.addImage("Status NZTCS NC.svg") .. "Nationally Critical" 
elseif status == "NE"  then
	output = p.addImage("Status NZTCS NE.svg") .. "Nationally endangered" 
elseif status == "NV"  then
	output = p.addImage("Status NZTCS NV.svg") .. "Nationally vulnerable" 
--  Chronically Threatened and At Risk categories (version 2002): SD,GD,SP,RR
elseif status == "SD"  then
	output = p.addImage("Status NZTCS SD.svg") .. "Serious Decline" 
elseif status == "GD"  then
	output = p.addImage("Status NZTCS GD.svg") .. "Gradual Decline" 
elseif status == "SP"  then
	output = p.addImage("Status NZTCS SP.svg") .. "Sparse" 
elseif status == "RR"  then
	output = p.addImage("Status NZTCS RR.svg") .. "Range Restricted" 
-- At Risk categories (2008 version): 
elseif status == "D" or status == "d" then
	output = p.addImage("Status NZTCS D.svg") .. "Declining" 
elseif status == "R" or status == "r" then
	output = p.addImage("Status NZTCS R.svg") .. "Recovering" 
elseif status == "REL" or status == "Rel" or status == "rel" then
	output = p.addImage("Status NZTCS REL.svg") .. "Relict" 
elseif status == "NU" or status == "nu" then
	output = p.addImage("Status NZTCS NU.svg") .. "Naturally Uncommon" 
-- otherwise invalid conservation status
else 
	output = "Invalid status" .. p.addCategory("Invalid conservation status")
end        

return output 
end
-- *************** functions  for image and category output *******function p.addImage(file)
if file ~= "" then
	return "class=skin-invert-image"
end
return ""
end
function p.addCategory(category)
	local ns = mw.title.getCurrentTitle().namespace
-- ns = 0 -- to test category put on page
	if category ~= "" and ns == 0 then
		return ""
end
return ""
end
return p