/*
 * 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(
"Mieczysława|Mieszka|Masława",
"Izydora|Makarego|Sylwestra",
"Danuty|Genowefy|Arletty",
"Anieli|Tytusa|Eugeniusza",
"Hanny|Edwarda|Telesfora",
"Kaspra|Melchiora|Baltazara",
"Lucjana|Juliana|Walentego",
"Seweryna|Erharda|M&para;cisława",
"Marceliny|Marcjanny|Julianny",
"Dobrosława|Wilhelma|Agatona",
"Honoraty|Matyldy|Feliksa",
"Arkadiusza|Czesławy|Grety",
"Bogumiła|Weroniki|Leoncjusza",
"Feliksa|Hilarego|Odona",
"Domosława|Makarego|D&plusmn;brówki",
"Marcelego|Włodzimierza|Walerego",
"Antoniego|Jana|Sabiniana",
"Małgorzaty|Piotra|Liberty",
"Henryka|Mariusza|Erwina",
"Fabiana|Sebastiana|Dobroniegi",
"Agnieszki|Jarosławy|Epifaniego",
"Anastazego|Wincentego|Gaudentego",
"Ildefonsa|Rajmunda|Klemensa",
"Felicji|Tymoteusza|Rafała",
"Tatiany|Miłosza|Pawła",
"Pauli|Polikarpa|Pauliny",
"Angeliki|Przybysława|Ilony",
"Walerego|Radomira|Tomasza",
"Franciszka|Zdzisława|Walerego",
"Macieja|Martyny|Teofila",
"Ludwika|Marceliny|Cyrusa"
),

new Array(
"Brygidy|Ignacego|Renaty",
"Marii|Miłosława|Joanny",
"Błażeja|Telimeny|Oskara",
"Andrzeja|Weroniki|Gilberta",
"Agaty|Adelajdy|Justyniana",
"Bohdana|Doroty|Pawła",
"Romualda|Ryszarda|Sulisława",
"Piotra|Żakliny|Gniewomira",
"Apolonii|Rajnolda|Mariana",
"Elwiry|Jacentego|Scholastyki",
"Dezyderego|Marii|Lucjana",
"Eulalii|Nory|Modesta",
"Grzegorza|Katarzyny|Kastora",
"Walentego|Cyryla|Metodego",
"Faustyna|Jowity|Georginy",
"Danuty|Julianny|Daniela",
"Donata|Łukasza|Zbigniewa",
"Konstancji|Maksyma|Wiaczesława",
"Arnolda|Konrada|Mansweta",
"Leona|Ludomiła|Lubomira",
"Eleonory|Kiejstuta|Fortunata",
"Małgorzaty|Marty|Piotra",
"Damiana|Romany|Florentyna",
"Macieja|Bogusza|Ja&para;miny",
"Cezarego|Wiktora|Konstancjusza",
"Aleksandra|Mirosława|Dionizego",
"Gabriela|Anastazji|Honoryny",
"Romana|Makarego|Lutomira",
"Romana|Oswalda|Cyryla"
),

new Array(
"Antoniego|Radosława|Albina",
"Heleny|Henryka|Halszki",
"Maryny|Kunegundy|Pakosława",
"Kazimierza|Łucji|Witosława",
"Adriana|Fryderyka|Oliwii",
"Jordana|Róży|Kolety",
"Pawła|Tomasza|Felicyty",
"Beaty|Wincentego|Jana",
"Franciszki|Katarzyny|M&para;cisława",
"Cypriana|Makarego|Marcelego",
"Benedykta|Konstantego|Ludosława",
"Bernarda|Grzegorza|Józefiny",
"Krystyny|Bożeny|Rodryga",
"Leona|Matyldy|Jakuba",
"Longina|Klemensa|Ludwiki",
"Herberta|Izabeli|Henryki",
"Patryka|Zbigniewa|Gertrudy",
"Cyryla|Edwarda|Boguchwała",
"Józefa|Bogdana|Laili",
"Klaudii|Eufemii|Cyriaki",
"Benedykta|Lubomiry|Mikołaja",
"Katarzyny|Bogusława|Kazimierza",
"Oktawiana|Pelagii|Zbisława",
"Gabriela|Marka|Gabora",
"Marioli|Dyzmy|Wieńczysława",
"Emanuela|Larysy|Teodora",
"Ernesta|Lidii|Ruperta",
"Anieli|Renaty|Kastora",
"Wiktoryna|Helmuta|Ostapa",
"Amelii|Kwiryna|Dobromira",
"Beniamina|Kornelego|Balbiny"
),

new Array(
"Grażyny|Hugona|Teodory",
"Franciszka|Władysława|Urbana",
"Ryszarda|Antoniego|Pankracego",
"Izydora|Wacława|Platona",
"Ireny|Wincentego|Julianny",
"Izoldy|Celestyny|Ady",
"Hermana|Rufina|Donata",
"Dionizego|Cezaryny|Radosława",
"Mai|Dymitra|Dobrosławy",
"Małgorzaty|Michała|Makarego",
"Filipa|Leona|Jaromira",
"Juliusza|Ludosława|Zenona",
"Przemysława|Hermenegildy|Marcina",
"Bereniki|Waleriana|Jadwigi",
"Anastazji|Wacława|Leonida",
"Bernadetty|Cecyliana|Kseni",
"Roberta|Rudolfa|Stefana",
"Apoloniusza|Bogusławy|Go&para;cisława",
"Adolfa|Tymona|Pafnucego",
"Agnieszki|Czesława|Amalii",
"Anzelma|Bartosza|Konrada",
"Leona|Kai|Heliodora",
"Jerzego|Wojciecha|Adalberta",
"Aleksandra|Horacego|Grzegorza",
"Jarosława|Marka|Elwiry",
"Marzeny|Klaudiusza|Marceliny",
"Teofila|Zyty|Żywisława",
"Pawła|Walerii|Ludwika",
"Piotra|Rity|Angeliny",
"Katarzyny|Mariana|Lilii"
),

new Array(
"Józefa|Jeremiego|Lubomira",
"Zygmunta|Atanazego|Anatola",
"Marii|Aleksandra|Stanisława",
"Floriana|Moniki|Grzegorza",
"Ireny|Waldemara|Piusa",
"Judyty|Juranda|Benedykty",
"Gustawy|Ludmiły|Sawy",
"Stanisława|Lizy|Dezyderii",
"Grzegorza|Bożydara|Karoliny",
"Antoniego|Antonina|Izydora",
"Igi|Miry|Lwa",
"Pankracego|Dominika|Domiceli",
"Serwacego|Ofelii|Roberty",
"Bonifacego|Macieja|Dobiesława",
"Zofii|Nadziei|Berty",
"Andrzeja|Jędrzeja|Adama",
"Sławomira|Paschalisa|Weroniki",
"Eryka|Aleksandry|Feliksa",
"Iwa|Piotra|Celestyna",
"Bazylego|Bernardyna|Bronimira",
"Kryspina|Wiktora|Jana",
"Heleny|Wiesławy|Romy",
"Iwony|Emilii|Dezyderiusza",
"Joanny|Marii|Zuzanny",
"Grzegorza|Magdy|Marii Magdaleny",
"Filipa|Pauliny|Eweliny",
"Jana|Juliusza|Radowita",
"Augustyna|Jaromira|Wilhelma",
"Marii Magdaleny|Teodozji|Maksyma",
"Feliksa|Ferdynanda|Zdzisława",
"Anieli|Marietty|Petroneli"
),

new Array(
"Jakuba|Hortensji|Gracjany",
"Erazma|Marianny|Marzanny",
"Klotyldy|Leszka|Tamary",
"Franciszka|Karola|Go&para;cimiła",
"Waltera|Bonifacego|Dobromira",
"Dominiki|Norberta|Laurentego",
"Roberta|Wiesława|Ariadny",
"Medarda|Maksyma|Wilhelma",
"Felicjana|Pelagii|Sławoja",
"Bogumiła|Małgorzaty|Edgara",
"Barnaby|Radomiła|Feliksa",
"Janiny|Onufrego|Leona",
"Antoniego|Lucjana|Gracji",
"Elizy|Bazylego|Waleriana",
"Jolanty|Wita|Wioli",
"Aliny|Justyny|Benona",
"Laury|Alberta|Marcjana",
"Elżbiety|Marka|Amandy",
"Gerwazego|Protazego|Borzysława",
"Bogny|Florentyny|Bożeny",
"Alicji|Alojzego|Rudolfa",
"Pauliny|Flawiusza|Agenora",
"Wandy|Zenona|Prospera",
"Jana|Danuty|Janiny",
"Łucji|Wilhelma|Albrechta",
"Jana|Pawła|Miromira",
"Władysława|Maryli|Władysławy",
"Ireneusza|Leona|Benigny",
"Piotra|Pawła|Benity",
"Emilii|Lucyny|Marcjala"
),

new Array(
"Haliny|Mariana|Klarysy",
"Jagody|Urbana|Martyniana",
"Anatola|Jacka|Ottona",
"Malwiny|Izabeli|Aureliana",
"Karoliny|Antoniego|Filomeny",
"Dominiki|Gotarda|Agrypiny",
"Estery|Metodego|Kiry",
"Edgara|Elżbiety|Eugeniusza",
"Lukrecji|Weroniki|Anatolii",
"Amelii|Filipa|Witalisa",
"Olgi|Kaliny|Benedykta",
"Jana|Pameli|Weroniki",
"Irwina|Margarety|Sary",
"Marcelina|Ulryka|Bonawentury",
"Włodzimierza|Henryka|Egona",
"Mariki|Benity|Dzierżysława",
"Anety|Aleksego|Julietty",
"Erwina|Kamila|Wespazjana",
"Alfreda|Wincentego|Wodzisława",
"Czesława|Hieronima|Eliasza",
"Daniela|Dalidy|Benedykta",
"Magdaleny|Bolesławy|Marii",
"Bogny|Sławosza|Żelisława",
"Kingi|Krystyny|Antoniego",
"Krzysztofa|Walentyny|Jakuba",
"Anny|Mirosławy|Grażyny",
"Natalii|Aureliusza|Jerzego",
"Aidy|Innocentego|Marceli",
"Marty|Olafa|Beatrycze",
"Julity|Ludmiły|Ro&para;cisława",
"Ignacego|Ernesty|Lubomira"
),

new Array(
"Justyna|Nadii|Piotra",
"Alfonsa|Kariny|Gustawa",
"Lidii|Augusta|Nikodema",
"Dominika|Protazego|Jana",
"Marii|Oswalda|Stanisławy",
"Jakuba|Sławy|Sykstusa",
"Doroty|Kajetana|Donata",
"Cyriaka|Emiliana|Sylwiusza",
"Romualda|Romana|Ireny",
"Borysa|Filomeny|Wawrzyńca",
"Ligii|Zuzanny|Lukrecji",
"Klary|Lecha|Hilarii",
"Diany|Hipolita|Kasjusza",
"Euzebiusza|Maksymiliana|Alfreda",
"Marii|Napoleona|Stelii",
"Joachima|Rocha|Domarada",
"Jacka|Anity|Mirona",
"Heleny|Bronisława|Ilony",
"Bolesława|Juliana|Jana",
"Bernarda|Sobiesława|Samuela",
"Joanny|Kazimiery|Wiktorii",
"Cezarego|Zygfryda|Marii",
"Apolinarego|Filipa|Róży",
"Bartłomieja|Malwiny|Jerzego",
"Ludwika|Luizy|Patrycji",
"Marii|Natalii|Sandry",
"Józefa|Moniki|Cezarego",
"Patrycji|Adeliny|Wyszomira",
"Jana|Sabiny|Racibora",
"Szczęsnego|Róży|Gaudencji",
"Rajmunda|Ramony|Pauliny"
),

new Array(
"Bronisławy|Idziego|Bronisza",
"Stefana|Juliana|Aksela",
"Izabeli|Szymona|Erazmy",
"Liliany|Rozalii|Idy",
"Doroty|Wawrzyńca|Herkulesa",
"Beaty|Eugeniusza|Zachariasza",
"Melchiora|Reginy|Ryszardy",
"Marii|Adrianny|Klementyny",
"Sergiusza|Piotra|&brvbar;cibora",
"Łukasza|Mikołaja|Pulcherii",
"Jacka|Dagny|Prota",
"Marii|Gwidona|Radzimira",
"Eugenii|Aureliusza|Lubora",
"Bernarda|Roksany|Cypriana",
"Albina|Nikodema|Marii",
"Edyty|Kornela|Kamili",
"Franciszka|Hildegardy|Roberta",
"Stefanii|Irmy|Stanisława",
"Januarego|Konstancji|Teodora",
"Eustachego|Filipiny|Faustyny",
"Jonasza|Mateusza|Hipolita",
"Maurycego|Tomasza|Joachima",
"Bogusława|Tekli|Liberta",
"Gerarda|Teodora|Hermana",
"Aurelii|Kleofasa|Władysława",
"Justyny|Cypriana|Euzebiusza",
"Damiana|Amadeusza|Mirabelli",
"Luby|Wacława|Salomona",
"Michała|Michaliny|Gabriela",
"Honoriusza|Wery|Hieronima"
),

new Array(
"Danuty|Remigiusza|Romana",
"Teofila|Dionizego|Trofima",
"Teresy|Józefy|Heliodora",
"Rozalii|Franciszka|Edwina",
"Igora|Apolinarego|Placyda",
"Artura|Brunona|Fryderyki",
"Marii|Marka|Amalii",
"Pelagii|Brygidy|Demetriusza",
"Arnolda|Dionizego|Sybilii",
"Franciszka|Pauliny|Daniela",
"Aldony|Emila|Dobromiły",
"Eustachego|Maksymiliana|Serafina",
"Edwarda|Geralda|Teofila",
"Alana|Kaliksta|Fortunaty",
"Jadwigi|Teresy|Zoriana",
"Gawła|Florentyny|Grzegorza",
"Małgorzaty|Ryszarda|Gabrieli",
"Juliana|Łukasza|Bratumiła",
"Piotra|Pawła|Ziemowita",
"Ireny|Kleopatry|Witalisa",
"Urszuli|Hilarego|Celiny",
"Halki|Kordiana|Kordelii",
"Marleny|Seweryna|Odylii",
"Marcina|Rafała|Arety",
"Darii|Wilhelminy|Sambora",
"Ewarysta|Łucjana|Dymitriusza",
"Iwony|Sabiny|Wincentego",
"Szymona|Tadeusza|Judy",
"Euzebii|Wiloletty|Narcyza",
"Zenobii|Przemysława|Edmunda",
"Alfonsa|Urbana|Krzysztofa"
),

new Array(
"Seweryna|Wiktoryny|Warcisława",
"Bohdany|Tobiasza|Bohdana",
"Huberta|Sylwii|Chwalisława",
"Karola|Olgierda|Emeryka",
"Elżbiety|Sławomira|Zachariasza",
"Feliksa|Leonarda|Melaniusza",
"Antoniego|Ernesta|Achillesa",
"Seweryna|Gotfryda|Hadriana",
"Teodora|Ursyna|Genowefy",
"Leny|Ludomira|Leona",
"Bartłomieja|Marcina|Prota",
"Renaty|Witolda|Czcibora",
"Stanisława|Mikołaja|Krystyna",
"Rogera|Serafina|Agaty",
"Alberta|Leopolda|Odalii",
"Edmunda|Marii|Gertrudy",
"Grzegorza|Salomei|Elżbiety",
"Klaudyny|Romana|Filipiny",
"Elżbiety|Seweryny|Salomei",
"Anatola|Rafała|Edmunda",
"Janusza|Marii|Konrada",
"Cecylii|Marka|Maura",
"Adeli|Klemensa|Orestesa",
"Emmy|Flory|Jana",
"Erazma|Katarzyny|Beaty",
"Delfiny|Lechosława|Konrada",
"Waleriana|Wirgiliusza|Ody",
"Zdzisława|Lesława|Go&para;cierada",
"Błażeja|Saturnina|Fryderyka",
"Andrzeja|Justyny|Konstantego"
),

new Array(
"Natalii|Blanki|Eligiusza",
"Balbiny|Pauliny|Rafała",
"Franciszka|Ksawerego|Lucjusza",
"Barbary|Krystiana|Berny",
"Saby|Kryspiny|Wilmy",
"Mikołaja|Jaremy|Leontyny",
"Marcina|Ambrożego|Agatona",
"Marii|Wirginii|Zenona",
"Leokadii|Wiesławy|Nataszy",
"Danieli|Julii|Eulalii",
"Damazego|Waldemara|Artura",
"Aleksandra|Adelajdy|Dagmary",
"Łucji|Otylii|Włodzisławy",
"Alfreda|Izydora|Alfredy",
"Niny|Celiny|Krystiany",
"Albiny|Zdzisławy|Adelajdy",
"Olimpii|Łazarza|Jolanty",
"Gracjana|Bogusława|Laurencji",
"Gabrieli|Dariusza|Urbana",
"Bogumiły|Dominika|Zefiryna",
"Tomasza|Piotra|Tomisława",
"Honoraty|Zenona|Franciszki",
"Sławomiry|Wiktorii|Iwona",
"Adama|Ewy|Zenobiusza",
"Anastazji|Piotra|Eugenii",
"Szczepana|Dionizego|",
"Jana|Żanety|Fabioli",
"Teofili|Godzisława|Antoniego",
"Dawida|Tomasza|Gosława",
"Eugeniusza|Rainera|Sewera",
"Sylwestra|Melanii|Hermesa"
	)
));
