/*
 * 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;
		} else {
			this.sets['' + lang] = new NamedaySet(set);
		}
	}
};

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"
	)

));
