# Module:Clade/gallery

local p = {}  

-- display a gallery of cladograms using floating div elements  

function p.gallery  

local params = mw.getCurrentFrame:getParent.args  

local outerBorders = false  
if params['caption'] or params['footer'] then outerBorders = true end  

-- the gallery container  
local gallery = mw.html.create('div'):addClass('clade-gallery'):css('float',params['align'])  

-- main caption for gallery if there is one  

if params['main-caption'] then  
gallery:tag('div'):wikitext(params['main-caption']):addClass('main-caption')  
end  

-- a gallery of floating divs with content  

local shading = ''  
if params['shading'] then shading = 'wikitable' end -- class for shading  

local vertical = '' -- defaults to horizontal  
if params['vertical'] then vertical = 'vertical' end -- class for vertical display  

local styleAll = params['style'] or '' -- style for all elements  

local mainBorders = ''  
local elementBorders = ''  
if not params['main-borders'] or params['main-borders'] == "no" then mainBorders = 'no-' end  
if params['borders'] == "no" then elementBorders = 'no-' end  

-- the gallery contents  
local content = gallery:tag('div'):addClass('main-content')  
:addClass(mainBorders)  
--:css('height',params['height'])  
local i=0  
while i<15 do  
i=i+1  
local caption = params['caption'..i] --or ''  
local header = params['header'..i] --or ''  
local footer = params['footer'..i] --or ''  
local style = params['style'..i] or styleAll  
local width = params['width'..i] or params['width']  

-- for each gallery element containing a cladogram  
if params['cladogram'..i] then  
local cladogramTable = content:tag('table')  
:addClass(elementBorders)  
:addClass(shading):addClass('gallery-element')  
:addClass(vertical)  
:css('width',width)  
:css('height',params['height'])  
:cssText(style)  
if caption then  
cladogramTable:tag('caption'):wikitext(caption):addClass('caption')  
end  
if header then  
local row = cladogramTable:tag('tr'):addClass('header')  
row:tag('th'):wikitext(header)  
end  
-- if params['cladogram'..i] already checked  
local row = cladogramTable:tag('tr')  
row:tag('td') :wikitext("\n" .. params['cladogram'..i])  
:addClass('cladogram')  
--:css("padding", "")  
-- :css('width',params['cladogram-width'])  
--:css('height',params['cladogram-height'])  
:css('height',params['height'])  

if footer then  
local row = cladogramTable:tag('tr')  
row:tag('td'):wikitext(footer):addClass('footer'):addClass(shading)  
end  

--[[DIV VERSION - different browsers behave differently  
-- the div containing each element in the gallery  
local div = content:tag('div'):addClass('gallery-element'):addClass(direction)  
:css('width',params['width'])  
:css('height',params['height'])  

-- the caption, header, content and footer for each element  
if caption then div:tag('div'):wikitext(caption):addClass('caption'):addClass(shading) end  

if header then div:tag('div'):wikitext(header):addClass('header'):addClass(shading) end  

div:tag('div'):wikitext(params['cladogram'..i]):addClass('cladogram'):addClass(shading)  
:css('width',params['cladogram-width'])  
:css('height',params['cladogram-height'])  

if footer then div:tag('div'):wikitext(footer):addClass('footer'):addClass(shading) end  
END DIV VERSION--]]  
else  
--break -- either break or comment out to allow gaps in sequence  
end  
end  

-- main footer  
if params['main-footer'] then  
gallery:tag('div'):wikitext(params['main-footer']):addClass('main-footer'):addClass(noborder)  
end  
-- TemplateStyles file  
local src = "Template:Clade gallery/styles.css"  

return p.templateStyle( , src ) .. tostring(gallery)  
end  
function p.templateStyle( , src )  
return :extensionTag( 'templatestyles', '', { src = src } );  
end  

-- this must be at end  
return p