/*
 * Nameday   ver  2.0.1  2003-11-02
 * Copyright (c) 2002-2003 by Michal Nazarewicz (mina86@tlen.pl)
 *
 * This script is free software; It is ditributed under terms of
 * GNU Lesser General Public License. Copy of the license can be found
 * at www.gnu.org/licenses/licenses.html#LGPL
 *
 * Visit www.projektcode.prv.pl for more..
 */


//
// Tuday's date :)
//
var nameday_date = new Date(),
	nameday_day = nameday_date.getDate(),
	nameday_month = nameday_date.getMonth()+1;



//
// Object representing names
//
function NamedayNames(names) {
	if (names instanceof Array) {
		this.names = names;
	} else {
		this.names = names.split('|');
	}
}

NamedayNames.prototype = {
	join: function(sep, last_sep, limit) {
		// Init args
		switch (arguments.length) {
			case  0: sep = null;
			case  1: last_sep = null;
			case  2: limit = null;
			case  3: break;
			default: return false;
		}


		// Get names
		var names = this.getNames(limit);


		// Join
		if (sep==null) {
			sep = ', ';
		}
		if (last_sep==null) {
			return names.join(sep);
		} else {
			var str = '';
			for (var i = 0; i<names.length; i++) {
				if (i==names.length-1) {
					str += last_sep;
				} else if (i) {
					str += sep;
				}
				str += names[i];
			}
			return str;
		}
	},


	//
	// Returns names as formated string
	//
	toString: function(before, after, sep, last_sep, limit) {
		// Init args
		switch (arguments.length) {
			case  0: before = null;
			case  1: after = null;
			case  2: sep = null;
			case  3: last_sep = null;
			case  4: limit = null;
			case  5: break;
			default: return false;
		}


		// Join names
		var str = this.join(sep, last_sep, limit);
		if (!str) {
			return false;
		}


		// Return
		return (before==null?'':before) + str + (after==null?'':after);
	},


	//
	// Returns names in array (maximum number of names in array is limit
	// or there's no maximum number if limit==0 || limit==null)
	//
	getNames: function(limit) {
		// Check args;
		if (arguments.length>1) {
			return false;
		}

		// All requested
		if (arguments.length==0 || limit==null || limit<1 ||
			limit>=this.names.length) {
			return this.names;

		// Limit requested
		} else {
			var arr = new Array(limit);
			for (var i = 0; i<limit; i++) {
				arr[i] = names[i];
			}
			return arr;
		}
	},


	//
	// Get name at index
	//
	get: function(index) {
		return this.names[index];
	},


	//
	// Get number of names
	//
	count: function() {
		return this.names.length;
	}
};



//
// Object representing set of names for each day of year
//
function NamedaySet(array) {
	this.array = array;
}

NamedaySet.prototype = {
	//
	// Returns NamedayNames object with names of people who have nameday
	// today or in the dth of m  If d or m is null or omitted, todays day
	// and/or month is taken.
	// Note: Months are indexed from 1 !!
	//
	getNames: function(d, m) {
		switch (arguments.length) {
			case  0: d = null;
			case  1: m = null;
			case  2: break;
			default: return false;
		}

		if (d==null) {
			d = nameday_day;
		}
		if (m==null) {
			m = nameday_month;
		}

		return new NamedayNames(this.array[m-1][d-1]);
	}
};




//
// Main object
//
function Nameday() {
	this.sets = new Array();
}


Nameday.prototype = {
	//
	// Returns specyfied set
	//
	getSet: function(lang) {
		if (arguments.length!=1) {
			return false;
		}
		return this.sets['' + lang];
	},


	//
	// Adds set
	//
	addSet: function(lang, set) {
		if (arguments.length!=2) {
			return false;
		}
		if (set instanceof NamedaySet) {
			this.sets['' + lang] = set;
			return true;
		} else {
			this.sets['' + lang] = new NamedaySet(set);
			return true;
		}
	}
};

var nameday = new Nameday();



/*
 * Nameday Polish Extension  ver  1.4.2  2003-11-19
 * Copyright (c) 2002-2003 by Michal Nazarewicz (mina86@tlen.pl)
 *
 * This script is free software; It is ditributed under terms of
 * GNU Lesser General Public License. Copy of the license can be found
 * at www.gnu.org/licenses/licenses.html#LGPL
 */


//
// Converts names
//
NamedayNames.prototype.pl_convert = function(method) {
	if (arguments.length!=1) {
		return false;
	}
	if (method==0) {
		return new NamedayNames(this.names);
	}
	if (method!=1) {
		return false;
	}

	var ret = new Array(), name = '';
	for (var i = 0; i<this.names.length; i++) {
		name = this.names[i];

		var len = name.length,
			last3 = name.substring(len-3),
			last2 = name.substring(len-2),
			vowel3 = "aeioóuy".indexOf(name.charAt(len-4))!=-1,
			vowel2 = "aeioóuy".indexOf(name.charAt(len-3))!=-1;

		if (last3=="ego") {
			if (name.substring(len-4, 1)=='l') {
				name = name.substring(0, len-3);
			} else {
				name = name.substring(0, len-3) + "y";
			}
		} else if (last3=="ńca") {
			name = name.substring(0, len-3) + "niec";
		} else if (last3=="tra") {
			name = name.substring(0,len-3) + (vowel3?"tr":"ter");
		} else if (last2=="ka" && !vowel2) {
			name =  name.substring(0,len-2) + "ek";
		} else if (last2=="ła" && !vowel2) {
			name = name.substring(0, len-2) + "ła";
		} else {
			name = name.substring(0, len-1) +
				(last2.substring(2,1)=='a'?'':'a');
		}

		ret[i] = name;
	}
	return new NamedayNames(ret);
};


//
// For backward compatibility
//
function WypiszImieniny(before, after, sep, last_sep, method) {
	switch (arguments.length) {
		case 0: before = null;
		case 1: after = null;
		case 2: sep = null;
		case 3: last_sep = null;
		case 3: method = null;
	}


	var names = PobierzImieniny(sep, last_sep, method);
	if (!names) {
		return false;
	}


	document.write("" + before + names + after);
	return true;
}

function PobierzImieniny(sep, last_sep, method) {
	switch (arguments.length) {
		case 0: sep = null;
		case 1: last_sep = null;
		case 2: method = null;
	}
	if (method==null) {
		method = 0;
	}

	var names;
	if (!(names = nameday.getSet('pl')) || !(names = names.getNames()) ||
		!(names = names.pl_convert(method))) {
		return false;
	}

	return names.toString('','',sep, last_sep);
}



/*
 * Nameday Polish Names Database  v 2.1
 * Database taken from infoludek.pl/~slawek/imieniny.html
 * +some corrections
 */


nameday.addSet('pl', new Array(
	new Array(
		"Mieszka|Mieczysława|Marii",
		"Izydora|Bazylego|Grzegorza",
		"Arlety|Genowefy|Danuty",
		"Tytusa|Anieli|Eugeniusza",
		"Hanny|Szymona|Edwarda",
		"Kacpra|Melchiora|Baltazara",
		"Juliana|Lucjana|Rajmunda",
		"Seweryna|M?cisława|Juliusza",
		"Marceliny|Marianny|Juliana",
		"Wilhelma|Dobrosława|Danuty",
		"Honoraty|Teodozjusza|Matyldy",
		"Grety|Arkadiusza|Rajmunda",
		"Bogumiły|Weroniki|Hilarego",
		"Feliksa|Domosława|Niny",
		"Pawła|Arnolda|Izydora",
		"Marcelego|Włodzimierza|Waldemara",
		"Antoniego|Ro?cisława|Jana",
		"Piotra|Małgorzaty",
		"Henryka|Mariusza|Marty",
		"Fabiana|Sebastiana",
		"Agnieszki|Jarosława",
		"Anastazego|Wincentego",
		"Ildefonsa|Rajmunda",
		"Felicji|Franciszka|Rafała",
		"Pawła|Miłosza|Elwiry",
		"Tymoteusza|Michała|Tytusa",
		"Przybysława|Anieli|Jerzego",
		"Walerego|Radomira|Tomasza",
		"Zdzisława|Franciszka|Józefa",
		"Macieja|Martyny|Teofila",
		"Marceli|Ludwiki|Jana"
	),

	new Array(
		"Brygidy|Ignacego|Seweryna",
		"Marii|Miłosława",
		"Błażeja|Oskara",
		"Andrzeja|Weroniki|Joanny",
		"Agaty|Adelajdy",
		"Doroty|Bogdana|Pawła",
		"Ryszarda|Teodora|Romana",
		"Hieronima|Sebastiana|Ireny",
		"Apolonii|Eryki|Cyryla",
		"Elwiry|Jacka|Scholastyki",
		"Lucjana|Olgierda",
		"Eulalii|Radosława|Modesta",
		"Grzegorza|Katarzyny",
		"Cyryla|Metodego|Walentego",
		"Jowity|Faustyna|Zygfryda",
		"Danuty|Julianny|Daniela",
		"Aleksego|Zbigniewa|Lukasza",
		"Szymona|Konstancji|Flawiana",
		"Arnolda|Konrada|Marcelego",
		"Leona|Ludomira|Zenobiusza",
		"Eleonory|Fortunata|Roberta",
		"Marty|Małgorzaty|Piotra",
		"Romany|Damiana|Polikarpa",
		"Macieja|Bogusza|Sergiusza",
		"Wiktora|Cezarego",
		"Mirosława|Aleksandra",
		"Gabriela|Anastazji",
		"Romana|Ludomira|Lecha",
		"Lecha|Lutosława"
	),

	new Array(
		"Antoniny|Radosława|Dawida",
		"Heleny|Halszki|Pawła",
		"Maryny|Kunegundy|Tycjana",
		"Lucji|Kazimierza|Eugeniusza",
		"Adriana|Fryderyka|Teofila",
		"Róży|Jordana|Agnieszki",
		"Tomasza|Perpetuy|Felicyty",
		"Beaty|Wincentego|Jana",
		"Franciszki|Brunona",
		"Cypriana|Marcela|Aleksandra",
		"Ludosława|Konstantyna|Benedykta",
		"Grzegorza|Justyna|Alojzego",
		"Bożeny|Krystyny",
		"Leona|Matyldy|Łazarza",
		"Longina|Klemensa|Ludwiki",
		"Izabeli|Oktawii|Hilarego",
		"Patryka|Zbigniewa|Gertrudy",
		"Cyryla|Edwarda|Boguchwały",
		"Józefa|Bogdana",
		"Klaudii|Eufemii|Maurycego",
		"Lubomira|Benedykta",
		"Katarzyny|Bogusława",
		"Pelagii|Oktawiana|Feliksa",
		"Marka|Gabriela|Katarzyny",
		"Marioli|Wieczysława|Ireneusza",
		"Larysy|Emanyela|Teodora",
		"Lidii|Ernesta",
		"Anieli|Sykstusa|Jana",
		"Wiktoryna|Helmuta|Eustachego",
		"Anieli|Kwiryna|Leonarda",
		"Beniamina|Dobromierza|Leonarda"
	),

	new Array(
		"Teodory|Grażyny|Ireny",
		"Władysława|Franciszka|Teodozji",
		"Ryszarda|Pankracego|Ingi",
		"Izydora|Wacława",
		"Ireny|Wincentego",
		"Izoldy|Celestyna|Wilhelma",
		"Rufina|Celestyna|Jana",
		"Cezaryny|Dionizego|Julii",
		"Marii|Dymitra|Heliodora",
		"Michała|Makarego",
		"Filipa|Leona",
		"Juliusza|Lubosława|Zenona",
		"Przemysława|Hermenegildy|Marcina",
		"Bereniki|Waleriana|Justyny",
		"Ludwiny|Wacławy|Anastazji",
		"Kseni|Cecylii|Bernardety",
		"Rudolfa|Roberta",
		"Bogusławy|Apoloniusza",
		"Adolfa|Tymona|Leona",
		"Czesława|Agnieszki|Mariana",
		"Anzelma|Bartosza|Feliksa",
		"Kai|Leonii|Sotera",
		"Jerzego|Wojciecha",
		"Horacego|Feliksa|Grzegorza",
		"Marka|Jarosława|Wasyla",
		"Marzeny|Klaudiusza|Marii",
		"Zyty|Teofila|Felicji",
		"Piotra|Walerii|Witalisa",
		"Rity|Katarzyny|Bogusława",
		"Mariana|Donaty|Tamary"
	),

	new Array(
		"Józefa|Jeremiasza|Filipa",
		"Zygmunta|Atanazego|Anatola",
		"Marii|Antoniny",
		"Moniki|Floriana|Władysława",
		"Ireny|Waldemara",
		"Judyty|Jakuba|Filipa",
		"Gizeli|Ludmiły|Benedykta",
		"Stanisława|Lizy|Wiktora",
		"Bożydara|Grzegorza|Karoliny",
		"Izydora|Antoniny|Symeona",
		"Igi|Miry|Władysławy",
		"Pankracego|Dominika|Achillesa",
		"Serwacego|Roberta|Glorii",
		"Bonifacego|Dobiesława|Macieja",
		"Zofii|Nadziei|Izydora",
		"Andrzeja|Jedrzeja|Szymona",
		"Paschalisa|Sławomira|Weroniki",
		"Eryka|Feliksa|Jana",
		"Iwa|Piotra|Celestyna",
		"Bazylego|Bernardyna|Aleksandra",
		"Wiktora|Kryspina|Tymoteusza",
		"Heleny|Wiesławy|Ryty",
		"Iwony|Dezyderego|Kryspina",
		"Joanny|Zuzanny",
		"Grzegorza|Urbana|Magdaleny",
		"Filipa|Pauliny",
		"Augustyna|Juliana|Magdaleny",
		"Jaromira|Justa|Justyny",
		"Magdaleny|Bogumiły|Urszuli",
		"Ferdynanda|Karola|Jana",
		"Anieli|Petroneli"
	),

	new Array(
		"Justyna|Anieli|Konrada",
		"Marianny|Marcelina|Piotra",
		"Leszka|Tamary|Karola",
		"Kwiryny|Franciszka",
		"Waltera|Bonifacego|Walerii",
		"Norberta|Laurentego|Bogumiła",
		"Roberta|Wiesława",
		"Medarda|Maksyma|Seweryna",
		"Pelagii|Dominika|Efrema",
		"Bogumiła|Małgorzaty|Diany",
		"Barnaby|Radomiła|Feliksa",
		"Janiny|Onufrego|Leona",
		"Lucjana|Antoniego",
		"Bazylego|Elwiry|Michała",
		"Wita|Jolanty",
		"Aliny|Benona|Anety",
		"Laury|Marcjana|Alberta",
		"Marka|Elżbiety",
		"Gerwazego|Protazego",
		"Diny|Bogny|Florentyny",
		"Alicji|Alojzego",
		"Pauliny|Tomasza|Jana",
		"Wandy|Zenona",
		"Jana|Danuty",
		"Lucji|Wilhelma|Doroty",
		"Jana|Pawła",
		"Maryli|Władysława|Cyryla",
		"Leona|Ireneusza",
		"Piotra|Pawła",
		"Emilii|Lucyny"
	),

	new Array(
		"Haliny|Mariana|Marcina",
		"Jagody|Urbana|Marii",
		"Jacka|Anatola|Tomasza",
		"Odona|Malwiny|Elżbiety",
		"Marii|Antoniego",
		"Gotarda|Dominiki|Lucji",
		"Cyryla|Estery|Metodego",
		"Edgara|Elżbiety|Eugeniusza",
		"Lukrecji|Weroniki|Zenona",
		"Sylwany|Witalisa|Antoniego",
		"Olgi|Kaliny|Benedykta",
		"Jana|Brunona|Bonifacego",
		"Henryka|Kingi|Andrzeja",
		"Ulryka|Bonawentury|Kamila",
		"Henryka|Włodzimierza|Dawida",
		"Mariki|Benity|Eustachego",
		"Anety|Bogdana|Jadwigi",
		"Erwina|Kamila|Szymona",
		"Wincentego|Wodzisława|Marcina",
		"Czesława|Hieronima|Małgorzaty",
		"Daniela|Dalidy|Wawrzyńca",
		"Marii|Magdaleny",
		"Stwosza|Bogny|Brygidy",
		"Kingi|Krystyny",
		"Walentyny|Krzysztofa|Jakuba",
		"Anny|Mirosławy|Grażyny",
		"Lilii|Julii|Natalii",
		"Aidy|Marceli|Wiktora",
		"Olafa|Marty|Ludmiły",
		"Julity|Piotra|Aldony",
		"Ignacego|Lubomira|Heleny"
	),

	new Array(
		"Nadii|Justyna|Juliana",
		"Kariny|Gustawa|Euzebiusza",
		"Lidii|Augusta|Nikodema",
		"Dominika|Protazego|Jana",
		"Oswalda|Marii|Mariana",
		"Sławy|Jakuba|Oktawiana",
		"Kajetana|Doroty|Sykstusa",
		"Cypriana|Emiliana|Dominika",
		"Romana|Ryszarda|Edyty",
		"Borysa|Filomeny|Wawrzyńca",
		"Klary|Zuzanny|Lecha",
		"Innocentego|Lecha|Euzebii",
		"Diany|Hipolita|Poncjana",
		"Alfreda|Euzebiusza|Maksymiliana",
		"Napoleona|Stelii",
		"Rocha|Stefana|Joachima",
		"Żanny|Mirona|Jacka",
		"Ilony|Bronisława|Heleny",
		"Bolesława|Juliana",
		"Bernarda|Samuela|Sobiesława",
		"Joanny|Kazimiery|Piusa",
		"Cezarego|Tymoteusza",
		"Apolinarego|Filipa",
		"Jerzego|Bartosza|Haliny",
		"Luizy|Ludwika|Józefa",
		"Marii|Aleksandra",
		"Cezarego|Józefa|Moniki",
		"Patrycji|Wyszomira|Augustyna",
		"Beaty|Jana|Sabiny|Racibora",
		"Róży|Szczęsnego|Feliksa",
		"Bogdana|Ramony|Rajmunda"
	),

	new Array(
		"Idziego|Bronisława",
		"Juliana|Stefana|Wilhelma",
		"Grzegorza|Izabeli|Szymona",
		"Idy|Julianny|Rozalii|Róży",
		"Doroty|Teodora|Wawrzyńca",
		"Beaty|Eugeniusza",
		"Domosławy|Melchiora|Reginy",
		"Marii|Adrianny|Serafiny",
		"?cibora|Sergiusza|Piotra",
		"Lukasza|Aldony|M?cisława",
		"Jacka|Prota|Dagny|Hiacynta",
		"Gwidona|Radzimira|Marii",
		"Eugenii|Aureliusza|Jana",
		"Roksany|Bernarda|Cypriana",
		"Albina|Nikodema|Marii",
		"Edyty|Korneliusza|Cypriana",
		"Franciszka|Roberta|Justyna",
		"Irmy|Stanisława|Ireny",
		"Januarego|Konstancji|Teodora",
		"Filipiny|Eustachego|Euzebii",
		"Jonasza|Mateusza|Hipolita",
		"Tomasza|Maurycego|Joachima",
		"Tekli|Bogusława|Linusa",
		"Gerarda|Ruperta|Tomiry",
		"Aurelii|Władysława|Kleofasa",
		"Wawrzyńca|Kosmy|Damiana",
		"Wincentego|Mirabeli|Justyny",
		"Wacława|Tymona|Marka",
		"Michała|Gabriela|Rafała",
		"Wery|Honoriusza|Hieronima"
	),

	new Array(
		"Danuty|Remigiusza|Teresy",
		"Teofila|Dionizego|Sławomira",
		"Teresy|Heliodora|Jana",
		"Rozalii|Edwina|Franciszka",
		"Placyda|Apolinarego",
		"Artura|Brunona",
		"Marii|Marka|Mirelli",
		"Pelagii|Brygidy|Walerii",
		"Amolda|Dionizego|Wincentego",
		"Pauliny|Danieli|Leona",
		"Aldony|Aleksandra|Dobromiry",
		"Eustachego|Maksymiliana|Edwina",
		"Geralda|Edwarda|Honorata",
		"Liwii|Kaliksta|Bernarda",
		"Jadwigi|Teresy|Florentyny",
		"Gawła|Ambrożego",
		"Wiktora|Marity|Ignacego",
		"Juliana|Łukasza",
		"Ziemowita|Jana|Pawła",
		"Ireny|Kleopatry|Jana",
		"Urszuli|Hilarego|Jakuba",
		"Halki|Filipa|Salomei",
		"Marleny|Seweryna|Igi",
		"Rafała|Marcina|Antoniego",
		"Darii|Wilhelminy|Bonifacego",
		"Lucjana|Ewarysta|Damiana",
		"Iwony|Sabiny",
		"Szymona|Tadeusza",
		"Euzebii|Wioletty|Felicjana",
		"Zenobii|Przemysława|Edmunda",
		"Urbana|Saturnina|Krzysztofa"
	),

	new Array(
		"WSZYSTKICH ?WIĘTYCH",
		"Bohdany|Bożydara",
		"Sylwii|Marcina|Huberta",
		"Karola|Olgierda",
		"Elżbiety|Sławomira|Dominika",
		"Feliksa|Leonarda|Ziemowita",
		"Antoniego|Żytomira|Ernesta",
		"Seweryna|Bogdana|Klaudiusza",
		"Aleksandra|Ludwika|Teodora",
		"Leny|Ludomira|Leona",
		"Marcina|Batłomieja|Teodora",
		"Renaty|Witolda|Jozafata",
		"Mateusza|Izaaka|Stanisława",
		"Rogera|Serafina|Wawrzyńca",
		"Alberta|Leopolda",
		"Gertrudy|Edmunda|Marii",
		"Salomei|Grzegorza|Elżbiety",
		"Romana|Klaudyny|Karoliny",
		"Seweryny|Maksyma|Salomei",
		"Anatola|Sedzimira|Rafała",
		"Alberta|Janusza|Konrada",
		"Cecylii|Wszemiły|Stefana",
		"Adelii|Klemensa|Felicyty",
		"Flory|Emmy|Chryzogona",
		"Erazma|Katarzyny",
		"Delfiny|Sylwestra|Konrada",
		"Waleriana|Wirgiliusza|Maksyma",
		"Lesława|Zdzisława|Stefana",
		"Błażeja|Saturnina",
		"Andrzeja|Maury|Konstantego"
	),

	new Array(
		"Natalii|Eligiusza|Edmunda",
		"Balbiny|Bibianny|Pauliny",
		"Franciszka|Ksawerego|Kasjana",
		"Barbary|Krystiana|Jana",
		"Sabiny|Krystyny|Edyty",
		"Mikołaja|Jaremy|Emiliana",
		"Marcina|Ambrożego|Teodora",
		"Marii|?wiatozara|Makarego",
		"Wiesława Leokadii Joanny",
		"Julii|Danieli|Bogdana",
		"Damazego|Waldemara|Daniela",
		"Dagmary|Aleksandra|Ady",
		"Lucji|Otylii",
		"Alfreda|Izydora|Jana",
		"Niny|Celiny|Waleriana",
		"Albiny|Zdzisławy|Alicji",
		"Olimpii|Lazarza|Floriana",
		"Gracjana|Bogusława|Laurencji",
		"Gabrieli|Dariusza|Eleonory",
		"Bogumiły|Dominika",
		"Tomisława|Seweryna|Piotra",
		"Zenona|Honoraty|Franciszki",
		"Wiktorii|Sławomiry|Jana",
		"Adama|Ewy|Eweliny",
		"Anastazji|Eugenii",
		"Dionizego|Szczepana",
		"Jana|Żanety|Maksyma",
		"Teofilii|Godzisława|Cezarego",
		"Dawida|Tomasza|Dominika",
		"Rainera|Eugeniusza|Irmy",
		"Sylwestra|Melanii|Mariusza"
	)
));
