require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs

local p = {}

-- esempio chiamata di funzione {{#invoke:Sandbox/M.casanova/DatiMappa|scala|w|h|x1|y1|x2|y2|...}}
function p.scala(frame)
	local t = getArgs(frame)
	local amn, amx, bmn, bmx = 200, -200, 200, -200
	local dimx = tonumber(t[1])
	local dimy = tonumber(t[2])
	local xval
	for i,v in ipairs(t) do
		if t>2 then
			xval = tonumber(t[i])
			if (i % 2 == 0) then
				if (amn > xval) then amn = xval end
				if (amx < xval) then amx = xval end
			else
				if (bmn > xval) then bmn = xval end
				if (bmx < xval) then bmx = xval end
			end
		end
	end
	local dx = (bmx - bmn)
	local dy = (amx - amn)
	local scala = 10
    if (dx == 0) then
    	if (dy == 0) then
    		-- default
    	else
    		scala = math.floor(math.log(180/dy)/math.log(2))
    	end
	else
		if (dy == 0) then
    		scala = math.floor(math.log(360/dx)/math.log(2))
    	else
    		scala = math.min( math.floor(math.log(360/dx)/math.log(2)), math.floor(math.log(180/dy)/math.log(2)) )
    	end
    end
	return scala
end

-- esempio chiamata di funzione {{#invoke:Sandbox/M.casanova/DatiMappa|medio|...}}
function p.medio(frame)
	local t = getArgs(frame)
	local mn, mx = 200, -200
	local xval
	for i,v in ipairs(t) do
		xval = tonumber(t[i])
		if (mn > xval) then mn = xval end
		if (mx < xval) then mx = xval end
	end
    return (mn+mx)/2
end

return p