export = {}

local Lf = {} --τοπικές συναρτήσεις
local Ld = {} --τοπικές μεταβλητές, μπορούν να έχουν τα ίδια ονόματα με τις συναρτήσεις
--local lc = {} σε όλες τις συναρτήσεις για τοπικές μεταβλητές μέσα σε αυτές
Lf['συναρτήσεις'] = require "Module:Ημερολόγια/Συναρτήσεις"

Lf['σφάλμα'] = function(errstring)
    return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο Module:Ημερολόγια]]'
end

--Προεπισκόπιση σελίδας με αυτό το πρότυπο: Χρήστης:Xoristzatziki/test2
export['τεστάκια'] = function(frame)
	local lc = {}
    lc['args2'] = frame.args
    lc['args'] = frame:getParent().args
    lc['pagename'] = mw.title.getCurrentTitle().text
    lc['output']  = ''
    for k, v in pairs(lc['args2']) do
    	lc['output'] = lc['output'] .. k .. v
	end
	
    --lc['ημέρα έτους 366'] = Lf['συναρτήσεις']['ημέρα έτους 366'](2, 3)
    --return "Hello World" .. pagename .. type(args2 ) .. type(args)
    --return frame:preprocess(Lf['συναρτήσεις']['μήνες στη σειρά']() )
    --return frame:preprocess(Lf['συναρτήσεις']['μήνες στη σειρά 5'](1) )
    --return frame:preprocess(Lf['συναρτήσεις']['ημέρες στη σειρά'](2) )
    --return frame:preprocess(Lf['συναρτήσεις']['πίνακας μήνα'](2) )
	--return frame:preprocess(Lf['κεφαλίδα μήνα'](2) )
	--return frame:preprocess(Lf['κεφαλίδα ημερομηνίας'](2,2) )
	return frame:preprocess(Lf['κεφαλίδα μήνα'](2) )
	--return frame:preprocess(Lf['συναρτήσεις']['γραμμή ορισμού'](lc['ημέρα έτους 366']))
end

--για τις σελίδες των μηνών
export['κεφαλίδα μήνα'] = function(frame)
	local lc = {} --frame:getParent().args
	lc['σελίδα'] = mw.title.getCurrentTitle()
	lc = Lf['έλεγχος τίτλου σελίδας μήνα'](lc)
	if (lc['σφάλμα'] or '') ~= '' then
		return lc['σφάλμα']
	end
	--έχουμε πλέον lc['μήνας'] αριθμός
	return frame:preprocess(Lf['κεφαλίδα μήνα'](lc['μήνας'] ))
end

--επιστρέφει τον πίνακα που πήρε
Lf['έλεγχος τίτλου σελίδας μήνα'] = function(lc)
	if lc['σελίδα']['namespace'] ~= 0 then
		lc['σφάλμα'] = Lf['σφάλμα']('Η συνάρτηση μπορεί να χρησιμοποιηθεί μόνο στον κύριο ονοματοχώρο.')
		return lc
	end
	lc['τίτλος σελίδας'] = mw.text.trim(lc['σελίδα']['text'])
	for i = 1, 12 do
    	if Ld['μήνες'][i]['όνομα'] == lc['τίτλος σελίδας'] then 
    		lc['μήνας'] = i
    		break
		end
	end
	if (lc['μήνας'] or '') == '' then
		lc['σφάλμα'] = Lf['σφάλμα']('Δεν βρέθηκε το όνομα του μήνα στον πίνακα.')
		return lc
	end
	return lc
end

--επιστρέφει κείμενο wiki
Lf['κεφαλίδα μήνα'] = function(monhtnum)
	return Lf['συναρτήσεις']['μήνες στη σειρά']() .. "\n" .. Lf['συναρτήσεις']['ημέρες στη σειρά'](monhtnum) .. "\n----\n" .. Lf['συναρτήσεις']['πίνακας μήνα'](monhtnum)
end

--για τις κεφαλίδες ημερομηνιών που δεν περιέχουν έτος.
--[1 Ιανουαρίου], [30 Μαρτίου] κλπ.
export['κεφαλίδα ημερομηνίας'] = function(frame)
	local lc = {} --frame:getParent().args
	lc['σελίδα'] = mw.title.getCurrentTitle()
	lc = Lf['έλεγχος τίτλου σελίδας ημερομηνίας'](lc)
	if (lc['σφάλμα'] or '') ~= '' then
		return lc['σφάλμα']
	end
	--έχουμε πλέον
	--lc['ημέρα του μήνα'] αριθμός, lc['μήνας'] αριθμός
	return frame:preprocess(Lf['κεφαλίδα ημερομηνίας'](lc['ημέρα του μήνα'], lc['μήνας'] ))
end

--επιστρέφει τον πίνακα που πήρε
Lf['έλεγχος τίτλου σελίδας ημερομηνίας'] = function(lc)
	if lc['σελίδα']['namespace'] ~= 0 then
		lc['σφάλμα'] = Lf['σφάλμα']('Η συνάρτηση μπορεί να χρησιμοποιηθεί μόνο στον κύριο ονοματοχώρο.')
		return lc
	end
	lc['τίτλος σελίδας'] = mw.text.trim(lc['σελίδα']['text'])
	lc['tmptbl'] = mw.text.split(lc['τίτλος σελίδας'], ' ')
	if (#lc['tmptbl'] or 0) ~= 2 then
		lc['σφάλμα'] = Lf['σφάλμα']('Ο τίτλος δεν περιέχει μόνο ένα κένο.')
		return lc
	end
	lc['ημέρα του μήνα'] = tonumber(lc['tmptbl'][1])
	for i = 1, 12 do
    	if Ld['μήνες'][i]['γεν'] == lc['tmptbl'][2] then 
    		lc['μήνας'] = i
    		break
		end
	end
	if (lc['μήνας'] or '') == '' then
		lc['σφάλμα'] = Lf['σφάλμα']('Δεν βρέθηκε το όνομα του μήνα στον πίνακα.')
		return lc
	end
	if Ld['μήνες'][lc['μήνας']]['ημ'] < lc['ημέρα του μήνα'] then
		lc['σφάλμα'] = Lf['σφάλμα']('Η ημέρα είναι μεγαλύτερη από τις ημέρες του μήνα.')
		return lc
	end
	return lc
end

--επιστρέφει κείμενο wiki
Lf['κεφαλίδα ημερομηνίας'] = function(daynum, monhtnum)
	local lc = {}
	lc['ημέρα έτους 366'] = Lf['συναρτήσεις']['ημέρα έτους 366'](daynum, monhtnum)
	lc['κεφαλίδα'] = Lf['συναρτήσεις']['μήνες στη σειρά 5'](monhtnum)
	lc['κεφαλίδα'] = lc['κεφαλίδα'] .. "\n" .. Lf['συναρτήσεις']['ημέρες στη σειρά 34'](lc['ημέρα έτους 366']) .. "\n" .. "\n----\n" 
	lc['κεφαλίδα'] = lc['κεφαλίδα'] ..  Lf['συναρτήσεις']['γραμμή ορισμού'](lc['ημέρα έτους 366'])
	lc['κεφαλίδα'] = lc['κεφαλίδα'] .. '\n' .. Lf['συναρτήσεις']['πίνακας μήνα'](monhtnum)
	return lc['κεφαλίδα']
end

export['κεφαλίδα έτους'] = function(frame)
	local lc = {}
	lc['σελίδα'] = mw.title.getCurrentTitle()
	lc = Lf['έλεγχος τίτλου σελίδας έτους'](lc)
	if (lc['σφάλμα'] or '') ~= '' then
		return lc['σφάλμα']
	end
	--έχουμε πλέον
	--lc['ημέρα του μήνα'] αριθμός, lc['μήνας'] αριθμός
	return frame:preprocess(Lf['κεφαλίδα ημερομηνίας'](lc['ημέρα του μήνα'], lc['μήνας'] ))

end

--επιστρέφει τον πίνακα που πήρε
Lf['έλεγχος τίτλου σελίδας έτους'] = function(lc)
	lc['σφάλμα'] = Lf['σφάλμα']('Δεν έχει υλοποιηθεί ακόμα')
	return lc
end

--επιστρέφει κείμενο wiki
Lf['κεφαλίδα έτους'] = function(etos)
	local lc = {}
	lc['σφάλμα'] = Lf['σφάλμα']('Δεν έχει υλοποιηθεί ακόμα')
	return	lc['σφάλμα']
end

return export