﻿/*  
	Filename: lb_jsutils.js
	Miscellaneous JavaScript routines
	Author: Marin Oom
*/

DAYS_A_WEEK  =                       7;
HOURS_A_WEEK =                  24 * 7;
MIN_A_WEEK   =						 60 * 24 * 7;
SECS_A_WEEK  =        60 * 60 * 24 * 7;
MSECS_A_WEEK = 1000 * 60 * 60 * 24 * 7;

HOURS_A_DAY  =                  24;
MINS_A_DAY   =             60 * 24;
SECS_A_DAY   =        60 * 60 * 24;
MSECS_A_DAY  = 1000 * 60 * 60 * 24;

MINS_A_HOUR	 =						 60;
SEC_A_HOUR	 =				60 * 60;
MSECS_A_HOUR = 1000 * 60 * 60;

SECS_A_MIN   =        60;
MSECS_A_MIN  = 1000 * 60;

MSECS_A_SEC  = 1000;

DAYS_IN_MONTH = new Array(2);
DAYS_IN_MONTH[false] = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
DAYS_IN_MONTH[true] = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

WeekdayNames = new Array('söndag','måndag','tisdag','onsdag','torsdag','fredag','lördag');
MonthNames = new Array('januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december');

CurrentChurchYear = -1;
ChurchYearDayNames = new Array(365);

today = new Date()

//-- Math routines --\\

function Div(Value1,Value2)
{
  return(Math.floor(Value1/Value2))
}

function Mod(Value1,Value2)
{
  return(Value1%Value2)
}

function Min(Value1,Value2)
{
  if (Value1 < Value2)
    return (Value1)
  else 
    return (Value2) 
}

function Max(Value1,Value2)
{
  if (Value1 > Value2)
    return (Value1)
  else 
    return (Value2)
}



//-- String routines --\\

function Rakneord(n)
{
	var ss = 0;
  ss = Mod(n,10);
  result = n + ((ss == 1) || (ss == 2) ? ":a" : ":e");
	return (result);
}



//-- Date routines --\\

function IsLeapYear(Year)
{  
  return ((Year % 4 == 0) && ((Year % 100 !== 0) || (Year % 400 == 0)))
}

function IsSameDay(Date1,Date2)
{
	var result = true;
	result = (Date1.getYear() == Date2.getYear());
	if (result == true)
		result = (Date1.getMonth() == Date2.getMonth());
	if (result == true)
		result = (Date1.getDate() == Date2.getDate());
	return (result);
}

function PaskDate(AYear)
{
	var a = 0;
	var b = 0;
	var c = 0;
	var d = 0;
	var e = 0;
	var f = 0;
	var m = 0;
	var n = 0;
	
	if (AYear >= 0 && AYear <= 1582)
	{
		m = 15;
		n = 6;
	}
	else if (AYear >= 1583 && AYear <= 1699)
	{
		m = 22;
		n = 2;
	}
	else if (AYear >= 1700 && AYear <= 1799)
	{
		m = 23;
		n = 3;
	}
	else if (AYear >= 1800 && AYear <= 1899)
	{
		m = 23;
		n = 4;
	}
	else if (AYear >= 1900 && AYear <= 1999)
	{
		m = 24;
		n = 5;
	}
	else if (AYear >= 2000 && AYear <= 2099)
	{
		m = 24;
		n = 5;
	}
	else if (AYear >= 2100 && AYear <= 2199)
	{
		m = 24;
		n = 6;
	}
	else if (AYear >= 2200 && AYear <= 2299)
	{
		m = 25;
		n = 0;
	}
	else if (AYear >= 2300 && AYear <= 2399)
	{
		m = 26;
		n = 1;
	}
	else if (AYear >= 2400 && AYear <= 2499)
	{
		m = 25;
		n = 1;
	}
	else if (AYear >= 2500 && AYear <= 9999)
	{
		m = 26;
		n = 2;
	}
	else
		alert('Invalid year: "' + AYear + '.The year was not between 0 and 9999.');

	a = Mod(AYear,19);
	b = Mod(AYear,4);
	c = Mod(AYear,7);
	d = Mod((19 * a + m),30);
	e = Mod((2 * b + 4 * c + 6 * d + n),7);
	f = 22 + d + e;
	if (f <= 31)
  	result = new Date(AYear,2,f);
  else
  	result = new Date(AYear,3,f - 31);
	/* Undantag:
	Om resultatet blir 26:e April (f = 57) eller
	om resultatet blir 25:e April (f = 56) och d = 28, e = 6 och a > 10
  så dras 7 dagar bort. */
	if ((f == 57) || ((f == 56) && (d == 28) && (e == 6) && (a > 10)))
  	result = DecDay(result,7);
	return (result)
}

function HelgNames(ADate)
{
	var	pask = new Date();
	var	mids = new Date();
	var	allh = new Date();
	var y = 0;
	var m = 0;
	var d = 0;
	var result = '';
	y = ADate.getYear();
	if (y < 1900)
		y += 1900;
	m = ADate.getMonth();
	d = ADate.getDate();

	pask = PaskDate(y);
  if (y < 1953)
  {
   	mids = new Date(y,6,24);
   	allh = new Date(y,11,1);
  }
  else
  {
  	// Lördagen mellan 20/6 och 26/6 
   	mids = new Date(y,5,20);
   	mids = IncDay(mids,6 - mids.getDay());
    // Lördagen mellan 31/10 och 6/11 
   	allh = new Date(y,9,31);
   	allh = IncDay(allh,6 - allh.getDay());
  }
	
	//if (ADate.getDay() == 0)
	//	result = true; // Söndag
	//else 
	if ((m == 0) && (d == 1)) 
		result = 'nyårsdagen' // Nyår
  else if ((m == 0) && (d == 6)) 
		result = 'trettondag jul' // Trettondagjul
  else if ((m == 11) && (d == 25)) 
		result = 'juldagen' // Juldagen
  else if ((m == 11) && (d == 26)) 
		result = 'annandag jul' // Annandagjul
  else if (IsSameDay(ADate,DecDay(pask,2)))
		result = 'långfredagen' // Långfredagen
  else if (IsSameDay(ADate,pask))
		result = 'påskdagen'	// Påsk
  else if (IsSameDay(ADate,IncDay(pask,1)))
		result = 'annandag påsk'	// Annandag påsk
  else if (IsSameDay(ADate,IncDay(pask,39)))
		result = 'Kristi himmelsfärds dag'	//	Kristi himmelsfärds dag
  else if (IsSameDay(ADate,IncDay(pask,49)))
		result = 'pingstdagen' // Pingst
  else if (IsSameDay(ADate,IncDay(pask,50)))
		result = 'annandag pingst' // Annandag pingst
  else if (IsSameDay(ADate,mids))
		result = 'midsommardagen'	// Midsommar
  else if (IsSameDay(ADate,allh))
		result = 'alla helgons dag' // Alla helgonsdag
  else if ((y >= 1953) && (m == 4) && (d == 1))
		result = 'första maj'	// Första maj
	return (result)
}

function IsHelg(ADate)
{
	var	pask = new Date();
	var	mids = new Date();
	var	allh = new Date();
	var y = 0;
	var m = 0;
	var d = 0;
	var result = false;
	y = ADate.getYear();
	if (y < 1900)
		y += 1900;
	m = ADate.getMonth();
	d = ADate.getDate();

	pask = PaskDate(y);
  if (y < 1953)
  {
   	mids = new Date(y,6,24);
   	allh = new Date(y,11,1);
  }
  else
  {
  	// Lördagen mellan 20/6 och 26/6 
   	mids = new Date(y,5,20);
   	mids = IncDay(mids,6 - mids.getDay());
    // Lördagen mellan 31/10 och 6/11 
   	allh = new Date(y,9,31);
   	allh = IncDay(allh,6 - allh.getDay());
  }
	
	if (ADate.getDay() == 0)
		result = true; // Söndag
  else if ((m == 0) && (d == 1)) 
		result = true; // Nyår
  else if ((m == 0) && (d == 6)) 
		result = true; // Trettondagjul
  else if ((m == 11) && (d == 25)) 
		result = true; // Juldagen
  else if ((m == 11) && (d == 26)) 
		result = true; // Annandagjul
  else if (IsSameDay(ADate,DecDay(pask,2)))
		result = true; // Långfredagen
  else if (IsSameDay(ADate,pask))
		result = true;	// Påsk
  else if (IsSameDay(ADate,IncDay(pask,1)))
		result = true;	// Annandag påsk
  else if (IsSameDay(ADate,IncDay(pask,39)))
		result = true;	//	Kristi himmelsfärds dag
  else if (IsSameDay(ADate,IncDay(pask,49)))
		result = true; // Pingst
  else if (IsSameDay(ADate,IncDay(pask,50)))
		result = true; // Annandag pingst
  else if (IsSameDay(ADate,mids))
		result = true;	// Midsommar
  else if (IsSameDay(ADate,allh))
		result = true; // Alla helgonsdag
  else if ((y >= 1953) && (m == 4) && (d == 1))
		result = true;	// Första maj
	return (result)
}

function DaysInMonth(ADate)
{
  var y = ADate.getYear();
	if (y < 1900)
		y += 1900;
  var m = ADate.getMonth();

  return (DAYS_IN_MONTH[IsLeapYear(y)][m]);
}

function DaysInMonth2(AYear,AMonth)
{
  if ((AMonth < 0) || (AMonth > 11))
    alert ("Invalid month: " + AMonth + ". The month was not between 0 and 11.")  
  return (DAYS_IN_MONTH[IsLeapYear(AYear)][AMonth])
}

function FirstDayInYear(ADate)
{
  return (new Date(ADate.getYear(),0,1))
}

function FirstDayInMonth(ADate)
{
	return (new Date(ADate.getYear(),ADate.getMonth(),1))
}

function LastDayInMonth(ADate)
{
	return (new Date(ADate.getYear(),ADate.getMonth(),DaysInMonth(ADate)))
}

function GetWeek1Start(AYear)
{
	var FirstMondayInYear = new Date(AYear,0,1)
  FirstMondayInYear = IncDay(FirstMondayInYear,Mod((8 - FirstMondayInYear.getDay()),DAYS_A_WEEK))
	
	if (FirstMondayInYear.getDate() < 5)
    return (FirstMondayInYear)
  else
		return (DecDay(FirstMondayInYear,DAYS_A_WEEK))
}

function WeekNo(ADate)
{	
	var y = ADate.getYear();
	if (y < 1900)
		y += 1900;
	var m = ADate.getMonth();
	var d = ADate.getDate();

	if (m==11 && d>27)
	  y++;

  var Week1Start = GetWeek1Start(y);
	
  if (ADate < Week1Start)
	{		
    y--;
	  var Week1Start = GetWeek1Start(y);
	}
	
	return (Div(Math.floor(ADate - Week1Start),MSECS_A_WEEK) + 1);
}

function IncYear(ADate,Years)
{
	var tmpDate = new Date(ADate);
  var y = 0;
	y = tmpDate.getYear();
	if (y < 1900)
		y += 1900;
  y += Years;
  tmpDate.setYear(y);
  return (tmpDate);
}

function DecYear(ADate,Years)
{  
  return (IncYear(ADate,-Years))  
}

function IncMonth(ADate,Months)
{
	var tmpDate = new Date(ADate);
	var m = 0;
	m = tmpDate.getMonth();
	m += Months;
	tmpDate.setMonth(m);
	return (tmpDate);
}

function DecMonth(ADate,Months)
{  
  return (IncMonth(ADate,-Months))
}

function IncDay(ADate,Days)
{
	var tmpDate = new Date(ADate);
	var d = 0;
	d = tmpDate.getDate();
	d += Days;
	tmpDate.setDate(d);
	return (tmpDate);
}

function DecDay(ADate,Days)
{
  return (IncDay(ADate,-Days))
}

function DateDiff(ADate1,ADate2)
{
	return (Div(Date.UTC(ADate2.getYear(),ADate2.getMonth(),ADate2.getDate()) - Date.UTC(ADate1.getYear(),ADate1.getMonth(),ADate1.getDate()),MSECS_A_DAY))
}

function DayName(ADate)
{
	var indate = new Date(ADate.getYear(),ADate.getMonth(),ADate.getDate());
	var paskd = new Date();
	var y = indate.getYear();
	if (y < 1900)
		y += 1900;
	var m = indate.getMonth();
	var d = indate.getDate();
	var Artal = 0;
	var n = 0;
	var tmp = 0;
	var pask = 0;
	var result = '';

  if (y < 1983)
  {
  	result = HelgNames(indate);
		return (result);
  }

	// Söndagen f Domsöndagen är 35 dagar innan söndagen på eller innan julafton.
  var tmpd = new Date(y,11,24);
  var sfdoms = DecDay(tmpd,(tmpd.getDay() + 35));
  Artal = (indate < sfdoms ? y : y + 1);

  if (Artal == y)
  {
	  tmpd = new Date(y - 1,11,24);
	  sfdoms = DecDay(tmpd,(tmpd.getDay() + 35));
  }

  if (Artal != CurrentChurchYear)
	{
  	for (n = 0 ; n <= 365 ; n++)
			ChurchYearDayNames[n] = '';
    CurrentChurchYear = Artal;
    
		// Domsöndagarna + julserien
  	ChurchYearDayNames[0] = 'söndagen före domsöndagen';
    ChurchYearDayNames[7] = 'domsöndagen';
	  for (n = 1 ; n <= 4 ; n++)
  		ChurchYearDayNames[n * 7 + 7] = Rakneord(n) + ' söndagen i advent';

	  tmpd = new Date(Artal - 1,11,13);
		tmp = DateDiff(sfdoms,tmpd); // offset för Luciadagen
		if (ChurchYearDayNames[tmp] == '')
			ChurchYearDayNames[tmp] = 'Luciadagen';

	  tmpd = new Date(Artal - 1,11,25);
		tmp = DateDiff(sfdoms,tmpd); // offset för juldagen
    if (ChurchYearDayNames[tmp - 1] == '')
			ChurchYearDayNames[tmp - 1] = 'julafton';
	  ChurchYearDayNames[tmp] = 'juldagen';
  	ChurchYearDayNames[tmp + 1] = 'annandag jul';
	  if (ChurchYearDayNames[42] == '') 
			ChurchYearDayNames[42] = 'söndagen efter jul';
    if (ChurchYearDayNames[tmp + 3] == '')
			ChurchYearDayNames[tmp + 3] = 'menlösa barns dag';

	  tmpd = new Date(Artal,0,1);
		tmp = DateDiff(sfdoms,tmpd); // offset för nyårsdagen
    if (ChurchYearDayNames[tmp - 1] == '') 
			ChurchYearDayNames[tmp - 1] = 'nyårsafton';
	  ChurchYearDayNames[tmp] = 'nyårsdagen';
  	if (ChurchYearDayNames[49] == '')
			ChurchYearDayNames[49] = 'söndagen efter nyår';
	  ChurchYearDayNames[tmp + 5] = 'trettondag jul';
  	// offset för första söndagen efter trettondagen (söndagen på eller innan 13/1).
    tmp = (tmp + 12) - (IncDay(tmpd,12).getDay());		
	  for (n = 1 ; n <= 6 ; n++)
			ChurchYearDayNames[tmp + (n - 1) * 7] = Rakneord(n) + ' söndagen e. trettondagen';

		// Påskserien
		paskd = PaskDate(Artal);
		pask = DateDiff(sfdoms,paskd); // offset för påskdagen
	  ChurchYearDayNames[pask - 63] = 'septuagesima';
  	ChurchYearDayNames[pask - 56] = 'sexagesima';
  	ChurchYearDayNames[pask - 49] = 'fastlagssöndagen';
	  ChurchYearDayNames[pask - 47] = 'fettisdagen';
	  for (n = 1 ; n <= 5 ; n++)
			 ChurchYearDayNames[pask - 49 + (n * 7)] = Rakneord(n) + ' söndagen i fastan';
    ChurchYearDayNames[pask - 21] = 'midfastosöndagen';
	  ChurchYearDayNames[pask - 7] = 'palmsöndagen';
  	ChurchYearDayNames[pask - 3] = 'skärtorsdagen';
    ChurchYearDayNames[pask - 2] = 'långfredagen';
	  ChurchYearDayNames[pask - 1] = 'påskafton';
  	ChurchYearDayNames[pask] = 'påskdagen';
	  ChurchYearDayNames[pask + 1] = 'annandag påsk';
  	for (n = 1 ; n <= 6 ; n++)
			ChurchYearDayNames[pask + (n * 7)] = Rakneord(n) + ' söndagen efter påsk';
	  ChurchYearDayNames[pask + 35] = 'bönsöndagen';
  	ChurchYearDayNames[pask + 39] = 'Kristi himmelsfärds dag';
  	ChurchYearDayNames[pask + 48] = 'pingstafton';
  	ChurchYearDayNames[pask + 49] = 'pingstdagen';
  	ChurchYearDayNames[pask + 50] = 'annandag pingst';
  	ChurchYearDayNames[pask + 56] = 'heliga trefaldighets dag';
  	for (n = 1 ; n <= 25 ; n++)
    	if (pask + 56 + (n * 7) < 366)
				ChurchYearDayNames[pask + 56 + (n * 7)] = Rakneord(n) + ' söndagen e. trefaldighet';
  	ChurchYearDayNames[pask + 91] = 'apostladagen';
  	ChurchYearDayNames[pask + 105] = 'Kristi förklarings dag';

	  // Övriga helgdagar

  	// Kyndelsmässodagen
    // Söndagen på eller efter 2/2 (dvs söndagen på eller innan 8/2), dock
    // senast söndagen före fastlagssöndagen.
    tmpd = new Date(Artal,1,8);
    tmpd = DecDay(tmpd,tmpd.getDay());
		tmp = DateDiff(sfdoms,tmpd); // offset för söndagen på eller efter 2/2
    if (tmp > pask - 56)
			tmp = pask - 56;
  	ChurchYearDayNames[tmp] = 'kyndelsmässodagen';
  	// Jungfru Marie bebådelsedag
    // Söndagen i intervallet 22-28/3, dock senast femte söndagen i fastan.
    tmpd = new Date(Artal,2,28);
    tmpd = DecDay(tmpd,tmpd.getDay());
		tmp = DateDiff(sfdoms,tmpd); // offset för söndagen i intervallet 22-28/3.
    if (tmp > pask - 14)
			tmp = pask - 14;
  	ChurchYearDayNames[tmp] = 'jungfru Marie bebådelsedag';
  	// Midsommardagen
    // Lördagen i intervallet 20-26/6 (lördagen strikt före 27/6).
    tmpd = new Date(Artal,5,27);
    tmpd = DecDay(tmpd,tmpd.getDay() + 1);
		tmp = DateDiff(sfdoms,tmpd); // offset för midsommardagen.
  	ChurchYearDayNames[tmp] = 'midsommardagen';
  	// Den helige Mikaels dag
    // Söndagen på eller efter 29/9 (söndagen på eller innan 5/10)
    tmpd = new Date(Artal,9,5);
    tmpd = DecDay(tmpd,tmpd.getDay());
		tmp = DateDiff(sfdoms,tmpd); // offset för den helige Mikaels dag
  	ChurchYearDayNames[tmp] = 'den helige Mikaels dag';
  	// Tacksägelsedagen
    // Andra söndagen i oktober (söndagen på eller innan 14/10).
    tmpd = new Date(Artal,9,14);
    tmpd = DecDay(tmpd,tmpd.getDay());
		tmp = DateDiff(sfdoms,tmpd); // offset för tacksägelsedagen
  	ChurchYearDayNames[tmp] = 'tacksägelsedagen';
  	// Alla helgons dag
    // Löndagen i intervallet 31/10-6/11 (lördagen strikt före 7/11).
    tmpd = new Date(Artal,10,7);
    tmpd = DecDay(tmpd,tmpd.getDay() + 1);
		tmp = DateDiff(sfdoms,tmpd); // offset för alla helgons dag
  	ChurchYearDayNames[tmp] = 'alla helgons dag';
  	ChurchYearDayNames[tmp + 1] = 'söndagen e. alla helgons dag';

	  // Borgerliga helgdagar
    tmpd = new Date(Artal,4,1);
		tmp = DateDiff(sfdoms,tmpd); // offset för första maj
  	if (ChurchYearDayNames[tmp] == '') 
			ChurchYearDayNames[tmp] = 'första maj';
    
	}
  //tmp = Div(indate - sfdoms, MSECS_A_DAY);
	//tmp = Div(DateDiff(indate,sfdoms);
	tmp = Div(Date.UTC(indate.getYear(),indate.getMonth(),indate.getDate()) - Date.UTC(sfdoms.getYear(),sfdoms.getMonth(),sfdoms.getDate()),MSECS_A_DAY);
  if (tmp <= 365)
	  result =  ChurchYearDayNames[tmp];
	return (result);
}



//-- Date String routines --\\

function GetDateString(ADate) 
{  
  var d = ADate.getDate();
  var m = ADate.getMonth() + 1;
  var y = ADate.getYear();
	if (y < 1900)
		y += 1900;
  return (y + "-" + (m < 10 ? "0" : "0") + m + "-" + (d < 10 ? + "0" : "") + d);
}

function GetDateStringLong(ADate) 
{
  var d = ADate.getDate();
  var m = ADate.getMonth();
  var y = ADate.getYear();
  if (y < 1900)
    y = 1900 + y;
  return ("den " + d + " " + MonthNames[m] + " " + y);
}

function GetWeekday(ADate)
{
  var day = ADate.getDay();
  return (WeekdayNames[day]);
}

function GetTodaysName(ADate)
{
  var day = ADate.getDate();
  var month = ADate.getMonth() + 1;
  var name="";

if(month==1&&day==2)name="Svea och Sverker";
if(month==1&&day==3)name="Alfred och Alfrida";
if(month==1&&day==4)name="Rut och Ritva";
if(month==1&&day==5)name="Hanna och Hannele";
if(month==1&&day==6)name="Baltsar och Kasper";
if(month==1&&day==7)name="August och Augusta";
if(month==1&&day==8)name="Erland och Erhard";
if(month==1&&day==9)name="Gunnar och Gunder";
if(month==1&&day==10)name="Sigurd och Sigmund";
if(month==1&&day==11)name="Hugo och Hagar";
if(month==1&&day==12)name="Frideborg och Fridolf";
if(month==1&&day==13)name="Knut";
if(month==1&&day==14)name="Felix och Felicia";
if(month==1&&day==15)name="Laura och Liv";
if(month==1&&day==16)name="Hjalmar och Hervor";
if(month==1&&day==17)name="Anton och Tony";
if(month==1&&day==18)name="Hilda och Hildur";
if(month==1&&day==19)name="Henrik och Henry";
if(month==1&&day==20)name="Fabian och Sebastian";
if(month==1&&day==21)name="Agnes och Agneta";
if(month==1&&day==22)name="Vincent och Veine";
if(month==1&&day==23)name="Emilia och Emelie";
if(month==1&&day==24)name="Erika och Eira";
if(month==1&&day==25)name="Paul och Pål";
if(month==1&&day==26)name="Bodil och Boel";
if(month==1&&day==27)name="Göte och Göta";
if(month==1&&day==28)name="Karl och Karla";
if(month==1&&day==29)name="Valter och Vilma";
if(month==1&&day==30)name="Gunhild och Gunilla";
if(month==1&&day==31)name="Ivar och Joar";

if(month==2&&day==1)name="Max och Magda";
if(month==2&&day==2)name="Marja och Mia";
if(month==2&&day==3)name="Disa och Hjördis";
if(month==2&&day==4)name="Ansgar och Anselm";
if(month==2&&day==5)name="Lisa och Elise";
if(month==2&&day==6)name="Dorotea och Dora";
if(month==2&&day==7)name="Rikard och Dick";
if(month==2&&day==8)name="Berta och Berthold";
if(month==2&&day==9)name="Fanny och Betty";
if(month==2&&day==10)name="Egon och Egil";
if(month==2&&day==11)name="Yngve och Ingolf";
if(month==2&&day==12)name="Evelina och Evy";
if(month==2&&day==13)name="Agne och Agnar";
if(month==2&&day==14)name="Valentin och Tina";
if(month==2&&day==15)name="Sigfrid och Sigbritt";
if(month==2&&day==16)name="Julia och Jill";
if(month==2&&day==17)name="Alexandra och Sandra";
if(month==2&&day==18)name="Frida och Fritz";
if(month==2&&day==19)name="Gabriella och Ella";
if(month==2&&day==20)name="Rasmus och Ruben";
if(month==2&&day==21)name="Hilding och Hulda";
if(month==2&&day==22)name="Marina och Marlene";
if(month==2&&day==23)name="Torsten och Torun";
if(month==2&&day==24)name="Mattias och Mats";
if(month==2&&day==25)name="Sigvard och Sivert";
if(month==2&&day==26)name="Torgny och Torkel";
if(month==2&&day==27)name="Lage och Laila";
if(month==2&&day==28)name="Maria och Maja";

if(month==3&&day==1)name="Albin och Inez";
if(month==3&&day==2)name="Ernst och Erna";
if(month==3&&day==3)name="Gunborg och Gunvor";
if(month==3&&day==4)name="Adrian och Ada";
if(month==3&&day==5)name="Tora och Tor";
if(month==3&&day==6)name="Ebba och Ebbe";
if(month==3&&day==7)name="Isidor och Doris";
if(month==3&&day==8)name="Siv och Saga";
if(month==3&&day==9)name="Torbjörn och Ambjörn";
if(month==3&&day==10)name="Edla och Ethel";
if(month==3&&day==11)name="Edvin och Elon";
if(month==3&&day==12)name="Viktoria och Viktor";
if(month==3&&day==13)name="Greger och Iris";
if(month==3&&day==14)name="Matilda och Maud";
if(month==3&&day==15)name="Kristoffer och Christel";
if(month==3&&day==16)name="Herbert och Gilbert";
if(month==3&&day==17)name="Gertrud och Görel";
if(month==3&&day==18)name="Edvard och Eddie";
if(month==3&&day==19)name="Josef och Josefina";
if(month==3&&day==20)name="Joakim och Kim";
if(month==3&&day==21)name="Bengt och Benny";
if(month==3&&day==22)name="Viking och Vilgot";
if(month==3&&day==23)name="Gerda och Gerd";
if(month==3&&day==24)name="Gabriel och Rafael";
if(month==3&&day==25)name="Mary och Marion";
if(month==3&&day==26)name="Emanuel och Manne";
if(month==3&&day==27)name="Ralf och Raymond";
if(month==3&&day==28)name="Elma och Elmer";
if(month==3&&day==29)name="Jonas och Jens";
if(month==3&&day==30)name="Holger och Reidar";
if(month==3&&day==31)name="Ester och Estrid";

if(month==4&&day==1)name="Harald och Halvar";
if(month==4&&day==2)name="Gunnel och Gun";
if(month==4&&day==3)name="Ferdinand och Florence";
if(month==4&&day==4)name="Irene och Irja";
if(month==4&&day==5)name="Nanna och Nanny";
if(month==4&&day==6)name="Vilhelm och Willy";
if(month==4&&day==7)name="Irma och Mimmi";
if(month==4&&day==8)name="Vanja och Ronja";
if(month==4&&day==9)name="Otto och Ottilia";
if(month==4&&day==10)name="Ingvar och Ingvor";
if(month==4&&day==11)name="Ulf och Ylva";
if(month==4&&day==12)name="Julius och Gillis";
if(month==4&&day==13)name="Artur och Douglas";
if(month==4&&day==14)name="Tiburtius och Tim";
if(month==4&&day==15)name="Olivia och Oliver";
if(month==4&&day==16)name="Patrik och Patricia";
if(month==4&&day==17)name="Elias och Elis";
if(month==4&&day==18)name="Valdemar och Volmar";
if(month==4&&day==19)name="Olaus och Ola";
if(month==4&&day==20)name="Amalia och Amelie";
if(month==4&&day==21)name="Annika och Anneli";
if(month==4&&day==22)name="Allan och Alida";
if(month==4&&day==23)name="Georg och Göran";
if(month==4&&day==24)name="Vega och Viveka";
if(month==4&&day==25)name="Markus och Mark";
if(month==4&&day==26)name="Teresia och Terese";
if(month==4&&day==27)name="Engelbrekt och Enok";
if(month==4&&day==28)name="Ture och Tyko";
if(month==4&&day==29)name="Kennet och Kent";
if(month==4&&day==30)name="Mariana och Marianne";

if(month==5&&day==1)name="Valborg och Maj";
if(month==5&&day==2)name="Filip och Filippa";
if(month==5&&day==3)name="John och Jack";
if(month==5&&day==4)name="Monika och Mona";
if(month==5&&day==5)name="Vivianne och Vivan";
if(month==5&&day==6)name="Marit och Rita";
if(month==5&&day==7)name="Lilian och Lilly";
if(month==5&&day==8)name="Åke och Ove";
if(month==5&&day==9)name="Jonatan och Gideon";
if(month==5&&day==10)name="Elvira och Elvy";
if(month==5&&day==11)name="Mårta och Mårit";
if(month==5&&day==12)name="Charlotta och Lotta";
if(month==5&&day==13)name="Linnea och Nina";
if(month==5&&day==14)name="Lillemor och Lill";
if(month==5&&day==15)name="Sofia och Sonja";
if(month==5&&day==16)name="Hilma och Hilmer";
if(month==5&&day==17)name="Nore och Nora";
if(month==5&&day==18)name="Erik och Jerker";
if(month==5&&day==19)name="Majken och Majvor";
if(month==5&&day==20)name="Karolina och Lina";
if(month==5&&day==21)name="Konstantin och Conny";
if(month==5&&day==22)name="Henning och Hemming";
if(month==5&&day==23)name="Desirée och Renée";
if(month==5&&day==24)name="Ivan och Yvonne";
if(month==5&&day==25)name="Urban och Ursula";
if(month==5&&day==26)name="Vilhelmina och Helmy";
if(month==5&&day==27)name="Blenda och Beda";
if(month==5&&day==28)name="Ingeborg och Borghild";
if(month==5&&day==29)name="Jean och Jeanette";
if(month==5&&day==30)name="Fritjof och Frej";
if(month==5&&day==31)name="Isabella och Isa";

if(month==6&&day==1)name="Rune och Runa";
if(month==6&&day==2)name="Rutger och Roger";
if(month==6&&day==3)name="Ingemar och Gudmar";
if(month==6&&day==4)name="Solveig och Solbritt";
if(month==6&&day==5)name="Bo och Boris";
if(month==6&&day==6)name="Gustav och Gösta";
if(month==6&&day==7)name="Robert och Robin";
if(month==6&&day==8)name="Eivor och Elaine";
if(month==6&&day==9)name="Petra och Petronella";
if(month==6&&day==10)name="Kerstin och Karsten";
if(month==6&&day==11)name="Bertil och Berit";
if(month==6&&day==12)name="Eskil och Esbjörn";
if(month==6&&day==13)name="Aina och Eila";
if(month==6&&day==14)name="Håkan och Heidi";
if(month==6&&day==15)name="Margit och Mait";
if(month==6&&day==16)name="Axel och Axelina";
if(month==6&&day==17)name="Torborg och Torvald";
if(month==6&&day==18)name="Björn och Bjarne";
if(month==6&&day==19)name="Germund och Jerry";
if(month==6&&day==20)name="Linda och Linn";
if(month==6&&day==21)name="Alf och Alva";
if(month==6&&day==22)name="Paulina och Paula";
if(month==6&&day==23)name="Adolf och Adela";
if(month==6&&day==24)name="Johan och Jan";
if(month==6&&day==25)name="David och Salomon";
if(month==6&&day==26)name="Gunni och Jim";
if(month==6&&day==27)name="Selma och Herta";
if(month==6&&day==28)name="Leo och Leopold";
if(month==6&&day==29)name="Petrus och Peter";
if(month==6&&day==30)name="Elof och Leif";

if(month==7&&day==1)name="Aron och Mirjam";
if(month==7&&day==2)name="Rosa och Rosita";
if(month==7&&day==3)name="Aurora och Adina";
if(month==7&&day==4)name="Ulrika och Ulla";
if(month==7&&day==5)name="Melker och Agaton";
if(month==7&&day==6)name="Ronald och Ronny";
if(month==7&&day==7)name="Klas och Kaj";
if(month==7&&day==8)name="Kjell och Tjelvar";
if(month==7&&day==9)name="Jörgen och Örjan";
if(month==7&&day==10)name="Anund och Gunda";
if(month==7&&day==11)name="Eleonora och Ellinor";
if(month==7&&day==12)name="Herman och Hermine";
if(month==7&&day==13)name="Joel och Judit";
if(month==7&&day==14)name="Folke och Odd";
if(month==7&&day==15)name="Ragnhild och Ragnvald";
if(month==7&&day==16)name="Reinhold och Reine";
if(month==7&&day==17)name="Alexis och Alice";
if(month==7&&day==18)name="Fredrik och Fred";
if(month==7&&day==19)name="Sara och Sally";
if(month==7&&day==20)name="Margareta och Greta";
if(month==7&&day==21)name="Johanna och Jane";
if(month==7&&day==22)name="Magdalena och Madeleine";
if(month==7&&day==23)name="Emma och Emmy";
if(month==7&&day==24)name="Kristina och Stina";
if(month==7&&day==25)name="Jakob och James";
if(month==7&&day==26)name="Jesper och Jessika";
if(month==7&&day==27)name="Marta och Moa";
if(month==7&&day==28)name="Botvid och Seved";
if(month==7&&day==29)name="Olof och Olle";
if(month==7&&day==30)name="Algot och Margot";
if(month==7&&day==31)name="Elin och Elna";

if(month==8&&day==1)name="Per och Pernilla";
if(month==8&&day==2)name="Karin och Kajsa";
if(month==8&&day==3)name="Tage och Tanja";
if(month==8&&day==4)name="Arne och Arnold";
if(month==8&&day==5)name="Ulrik och Alrik";
if(month==8&&day==6)name="Sixten och Sölve";
if(month==8&&day==7)name="Dennis och Donald";
if(month==8&&day==8)name="Silvia och Sylvia";
if(month==8&&day==9)name="Roland och Roine";
if(month==8&&day==10)name="Lars och Lorentz";
if(month==8&&day==11)name="Susanna och Sanna";
if(month==8&&day==12)name="Klara och Clary";
if(month==8&&day==13)name="Hillevi och Gullvi";
if(month==8&&day==14)name="William och Bill";
if(month==8&&day==15)name="Stella och Stellan";
if(month==8&&day==16)name="Brynolf och Sigyn";
if(month==8&&day==17)name="Verner och Veronika";
if(month==8&&day==18)name="Helena och Lena";
if(month==8&&day==19)name="Magnus och Måns";
if(month==8&&day==20)name="Bernhard och Bernt";
if(month==8&&day==21)name="Jon och Jonna";
if(month==8&&day==22)name="Henrietta och Henny";
if(month==8&&day==23)name="Signe och Signhild";
if(month==8&&day==24)name="Bartolomeus och Bert";
if(month==8&&day==25)name="Lovisa och Louise";
if(month==8&&day==26)name="Östen och Ejvind";
if(month==8&&day==27)name="Rolf och Rudolf";
if(month==8&&day==28)name="Gurli och Gull";
if(month==8&&day==29)name="Hans och Hampus";
if(month==8&&day==30)name="Albert och Albertina";
if(month==8&&day==31)name="Arvid och Vidar";

if(month==9&&day==1)name="Samuel och Sam";
if(month==9&&day==2)name="Justus och Justina";
if(month==9&&day==3)name="Alfhild och Alfons";
if(month==9&&day==4)name="Gisela och Glenn";
if(month==9&&day==5)name="Harry och Harriet";
if(month==9&&day==6)name="Sakarias och Esaias";
if(month==9&&day==7)name="Regina och Roy";
if(month==9&&day==8)name="Alma och Ally";
if(month==9&&day==9)name="Anita och Anja";
if(month==9&&day==10)name="Tord och Tove";
if(month==9&&day==11)name="Dagny och Daniela";
if(month==9&&day==12)name="Tyra och Åsa";
if(month==9&&day==13)name="Sture och Styrbjörn";
if(month==9&&day==14)name="Ida och Elida";
if(month==9&&day==15)name="Sigrid och Siri";
if(month==9&&day==16)name="Dag och Daga";
if(month==9&&day==17)name="Hildegard och Magnhild";
if(month==9&&day==18)name="Alvar och Orvar";
if(month==9&&day==19)name="Fredrika och Carita";
if(month==9&&day==20)name="Agda och Agata";
if(month==9&&day==21)name="Ellen och Elly";
if(month==9&&day==22)name="Maurits och Morgan";
if(month==9&&day==23)name="Tekla och Tea";
if(month==9&&day==24)name="Gerhard och Gert";
if(month==9&&day==25)name="Kåre och Tryggve";
if(month==9&&day==26)name="Einar och Enar";
if(month==9&&day==27)name="Dagmar och Rigmor";
if(month==9&&day==28)name="Lennart och Leonard";
if(month==9&&day==29)name="Mikael och Mikaela";
if(month==9&&day==30)name="Helge och Helny";

if(month==10&&day==1)name="Ragnar och Ragna";
if(month==10&&day==2)name="Ludvig och Louis";
if(month==10&&day==3)name="Evald och Osvald";
if(month==10&&day==4)name="Frans och Frank";
if(month==10&&day==5)name="Bror och Bruno";
if(month==10&&day==6)name="Jenny och Jennifer";
if(month==10&&day==7)name="Birgitta och Britta";
if(month==10&&day==8)name="Nils och Nelly";
if(month==10&&day==9)name="Ingrid och Inger";
if(month==10&&day==10)name="Helmer och Hadar";
if(month==10&&day==11)name="Erling och Jarl";
if(month==10&&day==12)name="Valfrid och Ernfrid";
if(month==10&&day==13)name="Birgit och Britt";
if(month==10&&day==14)name="Manfred och Helfrid";
if(month==10&&day==15)name="Hedvig och Hedda";
if(month==10&&day==16)name="Fingal och Finn";
if(month==10&&day==17)name="Antonia och Annette";
if(month==10&&day==18)name="Lukas och Matteus";
if(month==10&&day==19)name="Tore och Torleif";
if(month==10&&day==20)name="Sibylla och Camilla";
if(month==10&&day==21)name="Birger och Börje";
if(month==10&&day==22)name="Marika och Marita";
if(month==10&&day==23)name="Sören och Severin";
if(month==10&&day==24)name="Evert och Eilert";
if(month==10&&day==25)name="Inga och Ingvald";
if(month==10&&day==26)name="Amanda och My";
if(month==10&&day==27)name="Sabina och Ina";
if(month==10&&day==28)name="Simon och Simone";
if(month==10&&day==29)name="Viola och Vivi";
if(month==10&&day==30)name="Elsa och Elsie";
if(month==10&&day==31)name="Edit och Edgar";

if(month==11&&day==1)name="André och Andrea";
if(month==11&&day==2)name="Tobias och Toini";
if(month==11&&day==3)name="Hubert och Diana";
if(month==11&&day==4)name="Uno och Unn";
if(month==11&&day==5)name="Eugen och Eugenia";
if(month==11&&day==6)name="Gustav Adolf";
if(month==11&&day==7)name="Ingegerd och Ingela";
if(month==11&&day==8)name="Vendela och Vanda";
if(month==11&&day==9)name="Teodor och Ted";
if(month==11&&day==10)name="Martin och Martina";
if(month==11&&day==11)name="Mårten";
if(month==11&&day==12)name="Konrad och Kurt";
if(month==11&&day==13)name="Kristian och Krister";
if(month==11&&day==14)name="Emil och Mildred";
if(month==11&&day==15)name="Katja och Nadja";
if(month==11&&day==16)name="Edmund och Gudmund";
if(month==11&&day==17)name="Naemi och Nancy";
if(month==11&&day==18)name="Pierre och Percy";
if(month==11&&day==19)name="Elisabet och Lisbet";
if(month==11&&day==20)name="Pontus och Pia";
if(month==11&&day==21)name="Helga och Olga";
if(month==11&&day==22)name="Cecilia och Cornelia";
if(month==11&&day==23)name="Klemens och Clarence";
if(month==11&&day==24)name="Gudrun och Runar";
if(month==11&&day==25)name="Katarina och Carina";
if(month==11&&day==26)name="Linus och Love";
if(month==11&&day==27)name="Astrid och Asta";
if(month==11&&day==28)name="Malte och Malkolm";
if(month==11&&day==29)name="Sune och Synnöve";
if(month==11&&day==30)name="Anders och Andreas";

if(month==12&&day==1)name="Oskar och Ossian";
if(month==12&&day==2)name="Beata och Beatrice";
if(month==12&&day==3)name="Lydia och Carola";
if(month==12&&day==4)name="Barbro och Barbara";
if(month==12&&day==5)name="Sven och Svante";
if(month==12&&day==6)name="Nikolaus och Niklas";
if(month==12&&day==7)name="Angelika och Angela";
if(month==12&&day==8)name="Virginia och Vera";
if(month==12&&day==9)name="Anna och Annie";
if(month==12&&day==10)name="Malin och Malena";
if(month==12&&day==11)name="Daniel och Dan";
if(month==12&&day==12)name="Alexander och Alex";
if(month==12&&day==13)name="Lucia";
if(month==12&&day==14)name="Sten och Stig";
if(month==12&&day==15)name="Gottfrid och Gotthard";
if(month==12&&day==16)name="Assar och Astor";
if(month==12&&day==17)name="Inge och Ingemund";
if(month==12&&day==18)name="Abraham och Efraim";
if(month==12&&day==19)name="Isak och Rebecka";
if(month==12&&day==20)name="Israel och Moses";
if(month==12&&day==21)name="Tomas och Tom";
if(month==12&&day==22)name="Natanael och Natalia";
if(month==12&&day==23)name="Adam";
if(month==12&&day==24)name="Eva";

if(month==12&&day==26)name="Stefan och Staffan";
if(month==12&&day==27)name="Johannes och Hannes";
if(month==12&&day==28)name="Rakel och Benjamin";
if(month==12&&day==29)name="Abel och Set";
if(month==12&&day==30)name="Gunlög och Åslög";
if(month==12&&day==31)name="Sylvester";

return name
}

