<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://archaelund.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AOverlay</id>
	<title>Module:Overlay - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://archaelund.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AOverlay"/>
	<link rel="alternate" type="text/html" href="http://archaelund.com/wiki/index.php?title=Module:Overlay&amp;action=history"/>
	<updated>2026-04-17T03:36:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://archaelund.com/wiki/index.php?title=Module:Overlay&amp;diff=163&amp;oldid=prev</id>
		<title>MikeB at 11:09, 26 April 2020</title>
		<link rel="alternate" type="text/html" href="http://archaelund.com/wiki/index.php?title=Module:Overlay&amp;diff=163&amp;oldid=prev"/>
		<updated>2020-04-26T11:09:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:09, 26 April 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot;&gt;Line 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if c ~= previous_backgroundcolor then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if c ~= previous_backgroundcolor then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			-- color changed, so look up the best font color&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			-- color changed, so look up the best font color&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local greatercontrast = require(&amp;#039;Module:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Color contrast&lt;/del&gt;&amp;#039;)._greatercontrast&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local greatercontrast = require(&amp;#039;Module:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ColorContrast&lt;/ins&gt;&amp;#039;)._greatercontrast&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			fontcolor = greatercontrast{c, &amp;#039;white&amp;#039;, &amp;#039;black&amp;#039;, bias = 1.3}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			fontcolor = greatercontrast{c, &amp;#039;white&amp;#039;, &amp;#039;black&amp;#039;, bias = 1.3}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			-- update the previous value for the next check&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			-- update the previous value for the next check&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MikeB</name></author>
	</entry>
	<entry>
		<id>http://archaelund.com/wiki/index.php?title=Module:Overlay&amp;diff=157&amp;oldid=prev</id>
		<title>MikeB: Created page with &quot;local Overlay = {} -- this module implements Template:Overlay  local markercolor = mw.loadData(&#039;Module:Overlay/colors&#039;)  local mArguments = require(&#039;Module:Arguments&#039;)  --...&quot;</title>
		<link rel="alternate" type="text/html" href="http://archaelund.com/wiki/index.php?title=Module:Overlay&amp;diff=157&amp;oldid=prev"/>
		<updated>2020-04-26T10:52:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local Overlay = {} -- this module implements &lt;a href=&quot;/wiki/index.php?title=Template:Overlay&quot; title=&quot;Template:Overlay&quot;&gt;Template:Overlay&lt;/a&gt;  local markercolor = mw.loadData(&amp;#039;Module:Overlay/colors&amp;#039;)  local mArguments = require(&amp;#039;Module:Arguments&amp;#039;)  --...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Overlay = {}&lt;br /&gt;
-- this module implements [[Template:Overlay]]&lt;br /&gt;
&lt;br /&gt;
local markercolor = mw.loadData(&amp;#039;Module:Overlay/colors&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- used to cache the calculated font color to avoid repeat calculations&lt;br /&gt;
local previous_backgroundcolor = &amp;#039;&amp;#039;&lt;br /&gt;
local fontcolor = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function buildicon(n, form, lk, c, t)&lt;br /&gt;
	local res&lt;br /&gt;
	c = markercolor[c] or c&lt;br /&gt;
	if form == &amp;#039;text&amp;#039; then&lt;br /&gt;
		return tostring(&lt;br /&gt;
				mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;font-weight&amp;#039;, &amp;#039;bold&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;color&amp;#039;, c)&lt;br /&gt;
					:wikitext(n)&lt;br /&gt;
				)&lt;br /&gt;
	elseif form == &amp;#039;color&amp;#039; or form == &amp;#039;colour&amp;#039; then&lt;br /&gt;
		return tostring(&lt;br /&gt;
				mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;background-color&amp;#039;, c)&lt;br /&gt;
					:wikitext(&amp;#039;&amp;amp;#160;&amp;amp;#160;&amp;#039;)&lt;br /&gt;
				)&lt;br /&gt;
	elseif form == &amp;#039;marker&amp;#039; then&lt;br /&gt;
		return tostring(&lt;br /&gt;
				mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
					:wikitext(&amp;#039;[[File:Overlay Marker.png|16px]]&amp;#039;)&lt;br /&gt;
				)&lt;br /&gt;
	else&lt;br /&gt;
		-- check if the color is difference from the previous color&lt;br /&gt;
		if c ~= previous_backgroundcolor then&lt;br /&gt;
			-- color changed, so look up the best font color&lt;br /&gt;
			local greatercontrast = require(&amp;#039;Module:Color contrast&amp;#039;)._greatercontrast&lt;br /&gt;
			fontcolor = greatercontrast{c, &amp;#039;white&amp;#039;, &amp;#039;black&amp;#039;, bias = 1.3}&lt;br /&gt;
			-- update the previous value for the next check&lt;br /&gt;
			previous_backgroundcolor = c&lt;br /&gt;
		end&lt;br /&gt;
		-- build the inner span for the icon&lt;br /&gt;
		local span = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, fontcolor)&lt;br /&gt;
			:css(&amp;#039;font-size&amp;#039;, &amp;#039;88%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;font-weight&amp;#039;, &amp;#039;bold&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;title&amp;#039;, t)&lt;br /&gt;
			:wikitext(n)&lt;br /&gt;
		-- build the outer div&lt;br /&gt;
		local div = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;display&amp;#039;, &amp;#039;inline-block&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;height&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, ((tonumber(n) or 0) &amp;lt; 10) and &amp;#039;0px 4px&amp;#039; or &amp;#039;0px 2px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;vertical-align&amp;#039;, &amp;#039;middle&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;-moz-border-radius&amp;#039;, &amp;#039;3px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;-webkit-border-radius&amp;#039;, &amp;#039;3px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-radius&amp;#039;, &amp;#039;3px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;background-color&amp;#039;, c)&lt;br /&gt;
&lt;br /&gt;
		-- link the inner span if requested and insert in the div&lt;br /&gt;
		if lk ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			div:wikitext(&amp;#039;[[:&amp;#039; .. lk .. &amp;#039;|&amp;#039; .. tostring(span) .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			div:wikitext(tostring(span))&lt;br /&gt;
		end&lt;br /&gt;
		-- convert to a string&lt;br /&gt;
		return tostring(div)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildlegend(data, cols, border, caption)&lt;br /&gt;
	-- create the outer table to hold the columns&lt;br /&gt;
	local root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;border&amp;#039;, (border ~= &amp;#039;no&amp;#039;) and &amp;#039;1px #ccc solid&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
	-- create the outer row which will contain the columns&lt;br /&gt;
	local outerrow = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	local percol = math.ceil((#data) / cols)&lt;br /&gt;
	local k = 0&lt;br /&gt;
	for j=1,cols do&lt;br /&gt;
		-- create the outer cell to hold this column&lt;br /&gt;
		local colcell = outerrow:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, (math.floor(10/cols)/10) .. &amp;#039;%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;vertical-align&amp;#039;, &amp;#039;top&amp;#039;)&lt;br /&gt;
		-- create the inner table to hold the entries in the column&lt;br /&gt;
		local coltable = colcell:tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;font-size&amp;#039;, &amp;#039;85%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;line-height&amp;#039;, &amp;#039;95%&amp;#039;)&lt;br /&gt;
		-- add the entries to the column&lt;br /&gt;
		for l = 1,percol do&lt;br /&gt;
			k = k + 1&lt;br /&gt;
			if k &amp;lt;= #data then&lt;br /&gt;
				local rdata = data[k]&lt;br /&gt;
				local tr = coltable:tag(&amp;#039;tr&amp;#039;):css(&amp;#039;vertical-align&amp;#039;,&amp;#039;top&amp;#039;)&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;width&amp;#039;, &amp;#039;12px&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;text-align&amp;#039;, &amp;#039;right&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;padding-bottom&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
					:wikitext(rdata[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;padding-bottom&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
					:wikitext(rdata[2] or &amp;#039;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return caption .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildlegenditem(im, lk, t)&lt;br /&gt;
	local res = {im, &amp;#039;&amp;#039;}&lt;br /&gt;
	if t ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if lk ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			res[2] = &amp;#039;[[:&amp;#039; .. lk .. &amp;#039;|&amp;#039; .. t .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			res[2] = t&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		res[2] = &amp;#039;[[:&amp;#039; .. lk .. &amp;#039;|&amp;#039; .. lk .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return res &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Overlay.Icon(frame)&lt;br /&gt;
	local args = mArguments.getArgs(frame)&lt;br /&gt;
	return tostring(&lt;br /&gt;
		mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;display&amp;#039;, &amp;#039;inline-block&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;line-height&amp;#039;, &amp;#039;95%&amp;#039;)&lt;br /&gt;
			:wikitext(buildicon(args[&amp;#039;1&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
								args[&amp;#039;Form&amp;#039;] or &amp;#039;icon&amp;#039;,&lt;br /&gt;
								args[&amp;#039;Link&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
								args[&amp;#039;2&amp;#039;] or &amp;#039;red&amp;#039;,&lt;br /&gt;
								args[&amp;#039;Tip&amp;#039;] or &amp;#039;&amp;#039;))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Overlay.Main(frame)&lt;br /&gt;
	local args = mArguments.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local image = args[&amp;#039;Image&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local title = args[&amp;#039;Title&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local width = tonumber(args[&amp;#039;Width&amp;#039;] or &amp;#039;500&amp;#039;) or 500&lt;br /&gt;
	local height = tonumber(args[&amp;#039;Height&amp;#039;] or &amp;#039;500&amp;#039;) or 500&lt;br /&gt;
	local columns = tonumber(args[&amp;#039;Columns&amp;#039;] or &amp;#039;3&amp;#039;) or 3&lt;br /&gt;
	local grid = ((args[&amp;#039;Grid&amp;#039;] or &amp;#039;&amp;#039;):lower() == &amp;#039;yes&amp;#039;) and &amp;#039;yes&amp;#039; or &amp;#039;no&amp;#039;&lt;br /&gt;
	local windrose = ((args[&amp;#039;Windrose&amp;#039;] or &amp;#039;&amp;#039;):lower() == &amp;#039;yes&amp;#039;) and &amp;#039;yes&amp;#039; or &amp;#039;no&amp;#039;&lt;br /&gt;
	local legendbox = ((args[&amp;#039;Legendbox&amp;#039;] or &amp;#039;&amp;#039;):lower() == &amp;#039;no&amp;#039;) and &amp;#039;no&amp;#039; or &amp;#039;yes&amp;#039;&lt;br /&gt;
	local overlay = (image == &amp;#039;&amp;#039;) and &amp;#039;no&amp;#039; or (((args[&amp;#039;Overlay&amp;#039;] or &amp;#039;&amp;#039;):lower() == &amp;#039;no&amp;#039;) and &amp;#039;no&amp;#039; or &amp;#039;yes&amp;#039;)&lt;br /&gt;
	local float = args[&amp;#039;Float&amp;#039;] or &amp;#039;center&amp;#039;&lt;br /&gt;
	local border = ((args[&amp;#039;Border&amp;#039;] or &amp;#039;&amp;#039;):lower() == &amp;#039;no&amp;#039;) and &amp;#039;no&amp;#039; or &amp;#039;yes&amp;#039;&lt;br /&gt;
	local padding = args[&amp;#039;Padding&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- create the root table&lt;br /&gt;
	local root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	if float == &amp;#039;center&amp;#039; or float == &amp;#039;centre&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;margin-left&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;margin-right&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
	elseif float == &amp;#039;right&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;float&amp;#039;, &amp;#039;right&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, &amp;#039;right&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;margin-left&amp;#039;, &amp;#039;1em&amp;#039;)&lt;br /&gt;
	elseif float == &amp;#039;left&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;float&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;margin-right&amp;#039;, &amp;#039;1em&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		root:css(&amp;#039;float&amp;#039;, float)&lt;br /&gt;
	end&lt;br /&gt;
	if border == &amp;#039;yes&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;border&amp;#039;, &amp;#039;1px #ccc solid&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create a list of all the overlay numbers&lt;br /&gt;
	local itemnums = {}&lt;br /&gt;
	for k, v in pairs( args ) do&lt;br /&gt;
		local i = tonumber(tostring(k):match( &amp;#039;^%s*Overlay([%d]+)%s*$&amp;#039; ) or &amp;#039;-1&amp;#039;)&lt;br /&gt;
		if i &amp;gt; -1 then&lt;br /&gt;
			table.insert(itemnums, i)&lt;br /&gt;
		else&lt;br /&gt;
			i = tonumber(tostring(k):match( &amp;#039;^%s*Overlay([%d]+)tip%s*$&amp;#039; ) or &amp;#039;-1&amp;#039;)&lt;br /&gt;
			if i &amp;gt; -1 then&lt;br /&gt;
				table.insert(itemnums, i)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- sort to process in order&lt;br /&gt;
	table.sort( itemnums )&lt;br /&gt;
	&lt;br /&gt;
	-- remove duplicates&lt;br /&gt;
	for k = 2,#itemnums do&lt;br /&gt;
		if itemnums[k] == itemnums[k-1] then&lt;br /&gt;
			table.remove(itemnums, k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build the overlay markers and text&lt;br /&gt;
	itemdata = {}&lt;br /&gt;
	local colori = args[&amp;#039;Color&amp;#039;] or args[&amp;#039;Colour&amp;#039;] or &amp;#039;red&amp;#039;&lt;br /&gt;
	local formi = &amp;#039;&amp;#039;	&lt;br /&gt;
	for k = 1,#itemnums do&lt;br /&gt;
		local i = itemnums[k]&lt;br /&gt;
		formi = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Form&amp;#039;] or formi&lt;br /&gt;
		colori = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Color&amp;#039;] or args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Colour&amp;#039;] or colori&lt;br /&gt;
		local linki = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Link&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
		local tipi = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Tip&amp;#039;] or args[&amp;#039;Overlay&amp;#039; .. i] or &amp;#039;&amp;#039;&lt;br /&gt;
		local overlayi = args[&amp;#039;Overlay&amp;#039; .. i] or args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Tip&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
		if (overlayi ~= &amp;#039;&amp;#039; or tipi ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
			local imagei = buildicon(i, formi, linki, colori, tipi)&lt;br /&gt;
			itemdata[k] = buildlegenditem(imagei, args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Link&amp;#039;] or &amp;#039;&amp;#039;, overlayi)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create the overlay image&lt;br /&gt;
	if image ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		local cell = root:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		cell:attr(&amp;#039;align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
		if( padding ~= &amp;#039;&amp;#039; ) then&lt;br /&gt;
			cell:css(&amp;#039;padding&amp;#039;, padding)&lt;br /&gt;
		end&lt;br /&gt;
		if( columns &amp;gt; 1 and legendbox == &amp;#039;yes&amp;#039; ) then&lt;br /&gt;
			cell:attr(&amp;#039;colspan&amp;#039;, columns)&lt;br /&gt;
		end&lt;br /&gt;
		local imagediv = cell:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
		imagediv:css(&amp;#039;position&amp;#039;,&amp;#039;relative&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;left&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;top&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, ((grid == &amp;#039;yes&amp;#039;) and 940 or width) .. &amp;#039;px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;height&amp;#039;, ((grid == &amp;#039;yes&amp;#039;) and 940 or height) .. &amp;#039;px&amp;#039;)&lt;br /&gt;
		if grid == &amp;#039;yes&amp;#039; then&lt;br /&gt;
			imagediv:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;left&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;top&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;z-index&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;[[File:Overlay Grid.png|940px]]&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if windrose == &amp;#039;yes&amp;#039; then&lt;br /&gt;
			imagediv:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;right&amp;#039;, &amp;#039;20px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;bottom&amp;#039;, &amp;#039;20px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;z-index&amp;#039;, &amp;#039;1&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;[[File:Windrose.png|128px]]&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imagediv:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;left&amp;#039;, &amp;#039;10px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;top&amp;#039;, &amp;#039;10px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;z-index&amp;#039;, &amp;#039;1&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;lightgrey&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;font-size&amp;#039;, &amp;#039;large&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;font-weight&amp;#039;, &amp;#039;bold&amp;#039;)&lt;br /&gt;
			:wikitext(title)&lt;br /&gt;
		imagediv:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;left&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;top&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;z-index&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, width .. &amp;#039;px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;height&amp;#039;, height .. &amp;#039;px&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;[[File:&amp;#039; .. image .. &amp;#039;|&amp;#039; .. width .. &amp;#039;x&amp;#039; .. height .. &amp;#039;px]]&amp;#039;)&lt;br /&gt;
		if overlay == &amp;#039;yes&amp;#039; then&lt;br /&gt;
			for k = 1,#itemnums do&lt;br /&gt;
				local i = itemnums[k]&lt;br /&gt;
				local imagei = (itemdata[k])[1]&lt;br /&gt;
				for j = 0,12 do&lt;br /&gt;
					local overlayileftj = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Left&amp;#039; .. ((j == 0) and &amp;#039;&amp;#039; or j)] or &amp;#039;&amp;#039;&lt;br /&gt;
					local overlayitopj = args[&amp;#039;Overlay&amp;#039; .. i .. &amp;#039;Top&amp;#039; .. ((j == 0) and &amp;#039;&amp;#039; or j)] or &amp;#039;&amp;#039;&lt;br /&gt;
					if overlayileftj ~= &amp;#039;&amp;#039; then&lt;br /&gt;
						imagediv:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;left&amp;#039;, overlayileftj .. &amp;#039;px&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;top&amp;#039;, overlayitopj .. &amp;#039;px&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;line-height&amp;#039;, &amp;#039;95%&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;z-index&amp;#039;, &amp;#039;1&amp;#039;)&lt;br /&gt;
							:wikitext(imagei)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Split the legend items into sub-legends&lt;br /&gt;
	legend = {{}, {}, {}, {}, {}}&lt;br /&gt;
	local jmax = itemnums[#itemnums]&lt;br /&gt;
	for i=1,5 do&lt;br /&gt;
		if args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;Start&amp;#039;] then&lt;br /&gt;
			-- default is all items&lt;br /&gt;
			j1 = 0&lt;br /&gt;
			j2 = jmax&lt;br /&gt;
			-- set start item number to (legendistart) or (legend(i-1)end + 1)&lt;br /&gt;
			if args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;Start&amp;#039;] then&lt;br /&gt;
				j1 = tonumber(args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;Start&amp;#039;]) or j1&lt;br /&gt;
			elseif args[&amp;#039;Legend&amp;#039; .. (i-1) .. &amp;#039;End&amp;#039;] then&lt;br /&gt;
				j1 = (tonumber(args[&amp;#039;Legend&amp;#039; .. (i-1) .. &amp;#039;End&amp;#039;]) or j1) + 1&lt;br /&gt;
			end&lt;br /&gt;
			-- set end item number to (legendiend) or (legend(i+1)start - 1)&lt;br /&gt;
			if args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;End&amp;#039;] then&lt;br /&gt;
				j2 = tonumber(args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;End&amp;#039;]) or j2&lt;br /&gt;
			elseif args[&amp;#039;Legend&amp;#039; .. (i+1) .. &amp;#039;Start&amp;#039;] then&lt;br /&gt;
				j2 = (tonumber(args[&amp;#039;Legend&amp;#039; .. (i+1) .. &amp;#039;Start&amp;#039;]) or j2) - 1&lt;br /&gt;
			end&lt;br /&gt;
			-- get the items within the range, marking them as they are used&lt;br /&gt;
			for k=1,#itemnums do&lt;br /&gt;
				j = itemnums[k]&lt;br /&gt;
				if (j &amp;gt;= 0 and j &amp;gt;= j1 and j &amp;lt;= j2) then&lt;br /&gt;
					table.insert(legend[i], itemdata[k])&lt;br /&gt;
					itemnums[k] = -1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add any left over items to the first legend&lt;br /&gt;
	for k = 1,#itemnums do&lt;br /&gt;
		if itemnums[k] &amp;gt;= 0 then&lt;br /&gt;
			table.insert(legend[1], itemdata[k])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the legend&lt;br /&gt;
	if columns &amp;gt; 0 then&lt;br /&gt;
		for i = 1,5 do&lt;br /&gt;
			local locallegend = legend[i]&lt;br /&gt;
			if (locallegend and #locallegend &amp;gt; 0) then&lt;br /&gt;
				local cell = root:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				cell:wikitext(buildlegend(locallegend, columns, border, args[&amp;#039;Legend&amp;#039; .. i .. &amp;#039;Title&amp;#039;] or &amp;#039;&amp;#039;))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Overlay&lt;/div&gt;</summary>
		<author><name>MikeB</name></author>
	</entry>
</feed>