// ******************************************************
// Written by Rainer Krachten for Vineyard Aachen in 2005
// Feel free to copy
// ******************************************************
// Purpose:
// o Show the time of the next ministry
// o Shows a different time at the first sunday of the month
// o Special occasions can be entered in an array
// ******************************************************
// Functions:
//   GetMinistryTime()
// ******************************************************


var FirstSundayServiceTime = "Sonntag, 10:30 Uhr"
var NormalServiceTime = "Sonntag, 10:30 Uhr"

var SpecialDates = new Array();  // Array of special dates of ministry, add your entries here
/*
SpecialDates[0] = new Object();			// Create a new entry
SpecialDates[0]["Date"] = new Date(2005,11,24);  // Set the date of the special event [Year, Month, Day] (Month: 0..11, 0=January)
SpecialDates[0]["Time"] = 'Sonntag, 15:30 Uhr';	// Display this string (usually the time the service begins)

SpecialDates[1] = new Object();
SpecialDates[1]["Date"] = new Date(2009,1,1);
SpecialDates[1]["Time"] = '<span style="font-size: 80%">Diesen Sonntag kein Gottesdienst</span>';

SpecialDates[2] = new Object();
SpecialDates[2]["Date"] = new Date(2009,9,29);
SpecialDates[2]["Time"] = 'Sonntag, 10:30 Uhr<br /><span style="font-size: 80%">(Sa. auf So. ist Zeitumstellung)</span>';

SpecialDates[3] = new Object();
SpecialDates[3]["Date"] = new Date(2009,10,4);
SpecialDates[3]["Time"] = 'So, 16:30 Gottesdienst<br />15:00 Kaffee und Kuchen';

SpecialDates[5] = new Object();
SpecialDates[5]["Date"] = new Date(2009,10,22);
SpecialDates[5]["Time"] = 'Sonntag, 10:30 Uhr<br />(Themengottesdienst)';

SpecialDates[6] = new Object();
SpecialDates[6]["Date"] = new Date(2009,11,24);
SpecialDates[6]["Time"] = 'Donnerstag, 15:30 Uhr<br /><span style="font-size: 80%">Heiligabend-Familiengottesdienst mit großen Krippenspiel</span>';
*/
SpecialDates[0] = new Object();
SpecialDates[0]["Date"] = new Date(2011,2,27);
SpecialDates[0]["Time"] = 'Sonntag, 10:30 Uhr<br /><span style="font-size: 80%">(Sa. auf So. ist Zeitumstellung)</span>';

SpecialDates[1] = new Object();
SpecialDates[1]["Date"] = new Date(2011,9,30);
SpecialDates[1]["Time"] = 'Sonntag, 10:30 Uhr<br /><span style="font-size: 80%">(Sa. auf So. ist Zeitumstellung)</span>';

SpecialDates[2] = new Object();
SpecialDates[2]["Date"] = new Date(2011,1,27);
SpecialDates[2]["Time"] = '<span style="font-size: 80%">Diesen Sonntag kein Gottesdienst</span>';

SpecialDates[3] = new Object();
SpecialDates[3]["Date"] = new Date(2010,3,2);
SpecialDates[3]["Time"] = 'Freitag, 15:30 Uhr<br />(Karfreitagsgottesdienst)';

SpecialDates[4] = new Object();
SpecialDates[4]["Date"] = new Date(2010,11,24);
SpecialDates[4]["Time"] = 'Freitag, 15:30 Uhr<br />(Heiligabendgottesdienst)';

SpecialDates[5] = new Object();
SpecialDates[5]["Date"] = new Date(2011,8,25);
SpecialDates[5]["Time"] = '<span style="font-size: 80%">Sonntag, 11:00 Uhr<br />&Ouml;kumenischer Gottesdienst<br /> im alten Schlachthof</span>';

var NextMinistryTime = "";  // Do not change!

function GetNextMinistry()  // calculates the NextMinistryTime
{
	var NextDate = new Date();  // Set this to a specific date for testing purposes (e.g. new Date(2005,10,30);)
  var DayIsSunday = new Boolean(false);
  var DayIsSpecialDay = new Boolean (false);
  do
  {
    DayIsSpecialDay = IsDayASpecialDay(NextDate);
    if (DayIsSpecialDay == false)
      DayIsSunday = IsDayASunday(NextDate);
    NextDate.setDate(NextDate.getDate()+1);
  }
  while (DayIsSunday == false && DayIsSpecialDay == false);
}

function IsDayASpecialDay(aDate)  // if day is in SpecialDates array NextMinistryTime is set
{
  var res = Boolean(false);
  if (SpecialDates.length > 0)
  {
   	var i = 0;
    while (i < SpecialDates.length && res == false)
    {
      if (DateToStr(SpecialDates[i]["Date"]) == DateToStr(aDate))
      {
        NextMinistryTime = SpecialDates[i]["Time"];
        res = true;
      }
      i++;
    }
  }
  return(res);
}

function IsDayASunday(aDate)  // if day is a sunday NextMinistryTime is set
{
  var res = new Boolean(false);
	if (aDate.getDay() == 0)
  {
    res = true;
    if (aDate.getDate() <= 7)
	    NextMinistryTime = FirstSundayServiceTime
    else
	    NextMinistryTime = NormalServiceTime;
    }
  return(res);
}

function GetMinistryTime()  // Returns a string with the next ministry's time
{
	if (NextMinistryTime == "")
		GetNextMinistry();
	return(NextMinistryTime);
}

function DateToStr(aDate)  // converts Date to String
{
	var dd = aDate.getDate();
	var mm = aDate.getMonth() + 1;	// Month in 0..11
	var yyyy = aDate.getFullYear();
	var dayofweek = aDate.getDay();
	var Weekdays = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
	return (Weekdays[dayofweek] +', '+ dd +'.'+ mm +'.'+ yyyy);
}
