/*
 * 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",
		"Izydora|Makarego",
		"Danuty|Genowefy",
		"Anieli|Eugeniusza",
		"Edwarda|Szymona",
		"Kacpra|Melchiora|Baltazara",
		"Juliana|Lucjana",
		"Seweryna|Teofila",
		"Weroniki|Juliana",
		"Jana|Wilhelma",
		"Matyldy|Honoraty",
		"Benedykta|Arkadiusza",
		"Weroniki|Bogumiły",
		"Feliksa|Hilarego",
		"Pawła|Izydora",
		"Marcelego|Włodzimierza",
		"Antoniego|Rościsława",
		"Piotra|Małgorzaty",
		"Henryka|Mariusza",
		"Fabiana|Sebastiana",
		"Agnieszkii",
		"Anastazegoi",
		"Ildefonsa|Rajmunda",
		"Felicji|Tymoteusza",
		"Pawła|Miłosza",
		"Seweryna|Pauliny",
		"Jana|Przybysława",
		"Walerego|Radomira",
		"Zdzisława|Franciszka",
		"Macieja|Martyny",
		"Jana|Marceliny"
	),
	new Array(
		"Brygidy|Ignacego",
		"Marii|Mirosława",
		"Błażeja|Hipolita",
		"Andrzeja|Weroniki",
		"Agaty|Adelajdy",
		"Doroty|Tytusa",
		"Ryszarda|Romualda",
		"Jana|Piotra",
		"Cyryla|Apolonii",
		"Jacka|Scholastyki",
		"Łazarza|Marii",
		"Eulalii|Modesta",
		"Grzegorza|Katarzyny",
		"Walentego|Metodego",
		"Faustyna|Józefa",
		"Danuty|Juliany",
		"Donata|Łukasza",
		"Symeona|Konstancji",
		"Konrada|Arnolda",
		"Leona|Ludomiła",
		"Eleonory|Feliksa",
		"Marty|Małgorzaty",
		"Romany|Damiana",
		"Macieja|Bogusza",
		"Wiktora|Cezarego",
		"Mirosława|Aleksandra",
		"Gabriela|Anastazji",
		"Teofila|Makarego",
		"Rufina|Hilarego"
	),
	new Array(
		"Antoniny|Radosława", "Heleny|Pawła", "Tycjana|Kunegundy", "Kazimierza|Łucji", "Fryderyka|Wacława", "Róży|Wiktora", "Pawła|Tomasza", "Beatyi", "Katarzyny|Franciszki", "Cypriana|Marcelego", "Konstantego|Benedykta", "Bernarda|Grzegorza", "Bożeny|Krystyny", "Leona|Matyldy", "Ludwiki|Klemensa", "Izabeli|Hilarego", "Zbigniewa|Partyka", "Cyryla|Edwarda", "Józefa|Bogdana", "Eufemii|Klaudii", "Benedykta|Lubomira", "Bogusława|Katarzyny", "Feliksa|Pelagii", "Marka|Gabriela", "Marii|Wieńczysłąwa", "Teodora|Emanuela", "Lidii|Ernesta", "Anieli|Sykstusa", "Wiktora|Eustachego", "Amelii|Jana", "Balbiny|Gwidona"
	),
	new Array(
		"Zbigniewa|Grażyny", "Franciszka|Władysława", "Ryszarda|Pankracego", "Wacława|Izydora", "Ireny|Wincentego", "Celestyna|Wilhelma", "Donata|Rufina", "Dionizego|Januarego", "Marii|Marcelego", "Michała|Makarego", "Leona|Filipa", "Juliusza|Wiktora", "Przemysława|Hermenegildy", "Justyny|Waleriana", "Anastazji|Bazylego", "Julii|Benedykta", "Roberta|Patrycego", "Bogusławy|Bogumiły", "Adolfa|Tymona", "Czesława|Agnieszki", "Feliksa|Anzelma", "Leona|Łukasza", "Jerzego|Wojciecha", "Grzegorza|Aleksandra", "Marka|Jarosława", "Marii|Marcelego", "Zyty|Teofila", "Pawła|Walerii", "Piotra|Pawła", "Mariana|Katarzyny"
	),
	new Array(
		"Józefa|Filipa", "Anatola|Zygmunta", "Marii|Aleksandra", "Moniki|Floriana", "Ireny|Waldemara", "Jana|Judyty", "Ludmiły|Gizeli", "Stanisława|Dezyderii", "Bożydara|Grzegorza", "Izydora|Antoniny", "Franciszka|Jakuba", "Dominika|Pankracego", "Roberta|Serwacego", "Bonifacego|Dobiesława", "Zofii|Jana", "Andrzeja|Wieńczysława", "Weroniki|Sławomira", "Feliksa|Aleksandry", "Piotra|Mikołaja", "Bernarda|Bazylego", "Wiktora|Tymoteusza", "Julii|Heleny", "Iwony|Dezyderego", "Joanny|Zuzanny", "Urbana|Grzegorza", "Filipa|Pauliny", "Jana|Juliusza", "Augustyna|Jaromira", "Teodozji|Magdaleny", "Feliksa|Ferdynanda", "Anieli|Petroneli"
	),
	new Array(
		"Jakuba|Konrada", "Erazma|Marianny", "Leszka|Kłotyldy", "Karola|Franciszka", "Walerii|Bonifacego", "Pauliny|Laury", "Roberta|Wiesława", "Maksyma|Medarda", "Pelagii|Felicjana", "Bogumiła|Małgorzaty", "Barnaby|Feliksa", "Jana|Onufrego", "Lucjana|Antoniego", "Walerego|Bazylego", "Wita|Jolanty", "Aliny|Justyny", "Laury|Adolfa", "Marka|Elżbiety", "Gerwazego|Protazego", "Bogny|Florentyny", "Alicji|Alojzego", "Pauliny|Flawiusza", "Wandy|Zenona", "Jana|Danuty", "Łucji|Wilhelma", "Jana|Pawła", "Marii|Władysława", "Leona|Ireneusza", "Piotra|Pawła", "Emilii|Lucyny"
	),
	new Array(
		"Haliny|Mariana", "Marii|Urbana", "Jacka|Anatola", "Teodora|Innocentego", "Karoliny|Antoniego", "Łucji|Dominika", "Cyryla|Metodego", "Elżbiety|Prokopa", "Zenona|Weroniki", "Filipa|Amelii", "Olgi|Pelagii", "Jana|Gwalberta", "Ernesta|Małgorzaty", "Marceliny|Bonawentury", "Henryka|Włodzimierza", "Marii|Benedykta", "Bogdana|Aleksego", "Kamila|Szymona", "Wincentego|Wodzisława", "Czesława|Hieronima", "Daniela|Andrzeja", "Magdaleny|Bolesława", "Bogny|Apolinarego", "Kingi|Krystyny", "Jakuba|Krzysztofa", "Anny|Mirosławy", "Julii|Natalii", "Wiktora|Innocentego", "Marty|Olafa", "Julity|Ludmiły", "Ignacego|Heleny"
	),
	new Array(
		"Piotra|Justyny", "Gustawa|Alfonsa", "Lidii|Augusta", "Dominika|Protazego", "Marii|Stanisławy", "Sławy|Jakuba", "Doroty|Kajetana", "Emila|Cyryla", "Romana|Romualda", "Borysa|Wawrzyńca", "Zuzanny|Filomeny", "Klary|Hilarego", "Hipolita|Diany", "Alfreda|Euzebiusza", "Marii|Napoleona", "Rocha|Joachima", "Jacka|Mirona", "Heleny|Bronisławy", "Bolsława|Juliana", "Bernarda|Sobiesława", "Joanny|Franciszki", "Cezarego|Tymoteusza", "Filipa|Apolinarego", "Jerzego|Bartłomieja", "Ludwika|Luizy", "Marii|Zefiryny", "Józefa|Moniki", "Augustyna|Patrycji", "Sabiny|Jana", "Rózy|Szczęsnego", "Bogdana|Rajmunda"
	),
	new Array(
		"Bronisława|Idziego", "Stefana|Juliana", "Izabeli|Szymona", "Rozalii|Róży", "Doroty|Wawrzyńca", "Beaty|Eugeniusza", "Reginy|Melchiora", "Marii|Adrianny", "Piotra|Mikołaja", "Bernarda|Sobiesława", "Jacka|Piotra", "Marii|Gwidona", "Filipa|Eugenii", "Cypriana|Bernarda", "Albina|Nikodema", "Edyty|Kornela", "Justyna|Franciszki", "Ireny|Józefa", "Januarego|Konstancji", "Filipiny|Eustachego", "Hipolita|Mateusza", "Tomasza|Maurycego", "Tekli|Bogusława", "Gerarda|Teodora", "Aurelii|Ładysława", "Justyny|Cypriana", "Kosmy|Damiana", "Marka|Wacława", "Michała|Michaliny", "Zofii|Hieronima"
	),
	new Array(
		"Danuty|Remigiusza", "Teofila|Dionizego", "Gerarda|Teresy", "Rozalii|Franciszka", "Apolinarego|Placyda", "Artura|Brunona", "Marii|Marka", "Pelagii|Brygidy", "Ludwika|Dionizego", "Pauliny|Franciszka", "Emila|Aldony", "Eustachego|Maksymiliana", "Edwarda|Teofila", "Bernarda|Fortunaty", "Teresy|Jadwigi", "Gawła|Ambrożego", "Wiktora|Małgorzaty", "Łukasza|Juliana", "Piotra|Ziemowita", "Ireny|Kleopatry", "Urszuli|Hilarego", "Filipa|Kordulii", "Teodora|Seweryna", "Rafała|Marcina", "Kryspina|Ingi", "Lucjana|Ewarysta", "Sabiny|Iwony", "Szymona|Tadeusza", "Euzebii|Narcyza", "Zenobii|Przemysława", "Urbana|Augusta"
	),
	new Array(
		"Seweryna|Wiktoryny", "Bohdana|Bożydara", "Sylwii|Huberta", "Karola|Olgierda", "Sławomira|Elżbiety", "Feliksa|Leonarda", "Antoniego|Ernesta", "Sewera|Gotfryda", "Usryna|Teodora", "Andrzeja|Ludomira", "Bartłomieja|Marcina", "Renaty|Witolda", "Stanisława|Mikołaja", "Serafina|Rogera", "Alberta|Leopolda", "Gertrudy|Edmunda", "Grzegorza|Salomei", "Anieli|Romana", "Elżbiety|Seweryna", "Feliksa|Anatola", "Janusza|Konrada", "Marka|Cecylii", "Klemensa|Amelii", "Jana|Flory", "Erazma|Katarzyny", "Konrada|Sylwestra", "Waleriana|Maksymiliana", "Grzegorza|Zdzisława", "Błażeja|Saturnina", "Andrzeja|Konstantego"
	),
	new Array(
		"Natalii|Eligiusza", "Pauliny|Balbiny", "Franciszka|Ksawerego", "Barbary|Piotra", "Kryspina|Saby", "Mikołaja|Emiliana", "Marcina|Ambrożego", "Marii|Wirgiliusza", "Wiesławy|Leokadii", "Julii|Daniela", "Damazego|Waldemara", "Adelajdy|Aleksandra", "Łucji|Otylii", "Alfreda|Izydora", "Celiny|Waleriana", "Euzebiusza|Zdzisławy", "Olimpii|Łazarza", "Gracjana|Bogusława", "Urbana|Dariusza", "Bogumiła|Dominika", "Tomasza|Tomisława", "Zenona|Honoraty", "Wiktorii|Sławomiry", "Adama|Ewy", "Eugenii|Anastazji", "Dionizego|Szczepana", "Kosmy|Damiana", "Cezarego|Teofila", "Dawida|Tomasza", "Eugeniusza|Sabiny", "Sylwestra|Sebastiana"
	)
));

