# Module:Sports table/football

-- Style for football tables  
local pp = {}  

function pp.header(t,Args,p_sub,pos_label,group_col,VTE_text,full_table,results_header_txt)  
-- Create table header  
-- Pre stuff  
local team_width = Args['teamwidth'] or '190'  
table.insert(t,'{|\n') -- Open table  

-- Custom header options  
local draw_head_text = Args['draw_header'] or '<abbr title="Drawn">D</abbr>'  

-- Initialize  
local tt = {}  
tt.count = 0 -- Up by one after every call  
tt.tab_text = t -- Actual text  
-- Actual headers  
tt = p_sub.colhead(tt,28,pos_label) -- Position col  
-- Add group header  
if full_table and group_col then  
tt = p_sub.colhead(tt,28,'<abbr title="Group">Grp</abbr>') -- Group col  
end  
tt = p_sub.colhead(tt,team_width,'Team'..VTE_text) -- Team col  
tt = p_sub.colhead(tt,28,'<abbr title="Played">Pld</abbr>') -- Matches played col  
if full_table then  
tt = p_sub.colhead(tt,28,'<abbr title="Won">W</abbr>') -- Win col  
tt = p_sub.colhead(tt,28,draw_head_text) -- Draw col  
tt = p_sub.colhead(tt,28,'<abbr title="Lost">L</abbr>') -- Loss col  
tt = p_sub.colhead(tt,28,'<abbr title="Goals for">GF</abbr>') -- Goal for col  
tt = p_sub.colhead(tt,28,'<abbr title="Goals against">GA</abbr>') -- Goal against col  
tt = p_sub.colhead(tt,28,'<abbr title="Goal difference">GD</abbr>') -- Goal difference col  
end  
tt = p_sub.colhead(tt,28,'<abbr title="Points">Pts</abbr>') -- Points col  
if full_table then  
tt.count = tt.count+1  
table.insert(tt.tab_text,results_header_txt)  
end  

return tt  
end  

function pp.row(,t,Args,p_sub,notes_exist,hth_id_list,full_table,rand_val,team_list,team_code_ii,ii_start,ii_end,ii_fw,bg_col,N_teams,ii,ii_show)  
-- Build the inner parts of individual rows  

-- Get custom/default options for in table  
local win_points = tonumber(Args['winpoints']) or 3  
local draw_points = tonumber(Args['drawpoints']) or 1  
local loss_points = tonumber(Args['losspoints']) or 0  

-- Get some input  
local wins = tonumber(Args['win_'..team_code_ii]) or 0  
local draws = tonumber(Args['draw_'..team_code_ii]) or 0  
local losses = tonumber(Args['loss_'..team_code_ii]) or 0  
local gfor = tonumber(Args['gf_'..team_code_ii]) or 0  
local gaig = tonumber(Args['ga_'..team_code_ii]) or 0  
local s_pts = tonumber(Args['adjust_points_'..team_code_ii]) or tonumber(Args['startpoints_'..team_code_ii]) or 0  
local hth_local = Args['hth_'..team_code_ii] or nil  
-- Then calculate some values  
local matches = wins + draws + losses  
local gdiff = gfor - gaig  
local points = win_points*wins + draw_points*draws + loss_points*losses + s_pts  

-- Some local vars  
local hth_string  
local tt_return = p_sub.hth(,Args,full_table,hth_id_list,hth_local,notes_exist,team_list,team_code_ii,ii_start,ii_end,rand_val)  
hth_string = tt_return.str  
hth_id_list = tt_return.list  
notes_exist = tt_return.notes_exist  

-- Row building  
table.insert(t,'| |'..matches..'\n') -- Played  
if full_table then  
table.insert(t,'| |'..wins..'\n') -- Won  
table.insert(t,'| |'..draws..'\n') -- Drawn  
table.insert(t,'| |'..losses..'\n') -- Lost  
table.insert(t,'| |'..gfor..'\n') -- GF  
table.insert(t,'| |'..gaig..'\n') -- GA  
-- For goal difference insert + or &minus; as needed  
table.insert(t,'| |')  
if gdiff>0 then  
table.insert(t,'+'..gdiff)  
elseif gdiff == 0 then  
table.insert(t,0)  
else  
table.insert(t,'&minus;'..-gdiff)  
end  
table.insert(t,'\n')  
end  
-- Add &minus; for negative point totals  
table.insert(t,'| | ')  
if points<0 then  
table.insert(t,'&minus;'..-points..hth_string)  
else  
table.insert(t,points..hth_string)  
end  
table.insert(t,'\n')  

return {t=t, notes_exist=notes_exist, hth_id_list=hth_id_list}  
end  

function pp.status(Args)  
-- Declare status options  
-- ------------------------------------------------------------  
-- NOTE: If you add to status_code, also add to status_called and status_letters!!  
-- Or functionality will be compromised  
-- ------------------------------------------------------------  
local status_code, status_called = {}  
status_code = { A='Advances to a further round', C='Champion', D='Disqualified',  
E='Eliminated', H='Host', O='Play-off winner', P='Promoted', Q='Qualified to the phase indicated',  
R='Relegated', T='Qualified, but not yet to the particular phase indicated',  
X='?', Y='?', Z='?'}  
status_called = { A=false, C=false, D=false, E=false, H=false, O=false, P=false,  
Q=false, R=false, T=false, X=false, Y=false, Z=false}  
local status_letters = 'ACDEHOPQRTXYZ'  

-- Read in custom status options  
if Args['status_text_X'] then status_code.X = Args['status_text_X'] end  
if Args['status_text_Y'] then status_code.Y = Args['status_text_Y'] end  
if Args['status_text_Z'] then status_code.Z = Args['status_text_Z'] end  

return {code=status_code, called=status_called, letters=status_letters}  
end  

return pp