  var dayStr = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
  var monthStr = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  var msInDay = (1000 * 60 * 60 * 24);
  var lastDate = new Date(0);
  var now = new Date();
  var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); // Midnight for the current day
  var StartDate = new Date();
  var expired = false;
  var toofar = false;
  var notSunday = false;
  var notAdvanced = false;
  var fontclass = "";
  var firstEvent = false;
  var SundaysOnly = 0;
  var daysToDisplay = 21;
  var defaultDaysToDisplay = 21;
  var Advanced = false;

  
  function showdate() {
   var dateString;
  
   dateString = dayStr[today.getDay()] + ' ' + today.getDate() + ' ' + monthStr[today.getMonth()]+ ', ' + today.getFullYear();
   document.write('<H6 class=c>Today is: ' + dateString + '</H6><br>');
 }
  
 // Single line across diary
 function sLine() {
   document.write('<tr><td class="line" colspan="3">&nbsp;</td></tr>');
 }

 // Double line across diary
 function dLine() {
   document.write('<tr><td class="dline" colspan="3">&nbsp;</td></tr>');
 }

function getQueryVariable(variable, defaultValue) {
	var query = window.location.search.substring(1);

  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
 
  return defaultValue;  
}

function setDays()
{
    //document.write("setDays");
	//daysToDisplay = getQueryVariable("days", defaultDaysToDisplay);
	//document.write("setDays");
}
function showStartDate()
{
	var dateString;
	dateString = dayStr[StartDate.getDay()] + ' ' + StartDate.getDate() + ' ' + monthStr[StartDate.getMonth()]+ ', ' + StartDate.getYear();
	document.write('<H6 class=c>' + dateString + '</H6><br>');
}

function setStartDate(displayType)
{
    var dayNumber;
	dayNumber = today.getDay();
	StartDate = new Date(now.getFullYear(), now.getMonth(), now.getDate()); // Midnight for the current day
	//document.write(displayType);
	if (displayType == "ThisWeek")
	{
		// set the start date to the monday of the current week
		//StartDate.setDate(today.getDate()); //- (day - 1));
		StartDate.setDate(StartDate.getDate() - (dayNumber - 1));
		daysToDisplay = 7;
		Advanced = false;
		//showStartDate();
		//document.write("ThisWeek");
	}
	else if (displayType == "Advanced")	
	{
		// set the start date to the monday of the next week
		StartDate.setDate(StartDate.getDate() - (dayNumber - 1) + 7);
		daysToDisplay = 360;
		Advanced = true;
		//showStartDate();
		//document.write("Advanced");
	}
	else if (displayType == "Sundays")
	{
		// if Friday or later show next two Sundays else show last Sunday and next Sunday
		SundaysOnly = 1;
		daysToDisplay = 8;
		Advanced = false;
		if (dayNumber >= 5)
		{
		 	StartDate.setDate(StartDate.getDate() - dayNumber + 7)
		}
		else
		{
			StartDate.setDate(StartDate.getDate() - dayNumber)
		}
		//showStartDate();
	    //document.write("Sundays");
	}
}

 // Puts in a date field with appropriate line above
 function diaryDate(dateStr, nEvents, HideOnAdvanced) {
   //document.write("diaryDate");
   var theDate = new Date(dateStr);
   var dayNumber;
   var todayNumber;
  
   // set everything to false
   expired = false;
   toofar = false;
   notSunday = false;
   notAdvanced = false;
   // document.write("diaryDate");
   
   // if 3rd argument supplied, diary date will be hidden on Advanced page
   HideOnAdvanced = (typeof HideOnAdvanced == "undefined")?false:true
   if (Advanced && HideOnAdvanced)
   {
	   notAdvanced = true;
	   return;
   }
   // If only showing Sundays, omit events not on a Sunday
   if (SundaysOnly == 1)
   {
      dayNumber = theDate.getDay();
	  notSunday = (dayNumber != 0);
      if (notSunday) 
	  {
           return;
      }
   }
   // do checks for expired ( prior to StartDate)
   expired = (StartDate.getTime() > theDate.getTime());
   if (expired) 
   {
      //document.write("expired");
 	  return;
   }
    
   // Omit events more than 'daysToDisplay' ahead - irrespective of whether Sunday or not
   if (daysToDisplay > 0)
   {   
   	toofar = ((theDate.getTime() - StartDate.getTime()) >= (daysToDisplay * msInDay));
	if (toofar) 
	{
	    //document.write("toofar");
		return;
	}
   }
   
   // Single line for 1 day gap, double line for more
   if ((theDate.getTime()-lastDate.getTime()) <= msInDay) { 
     sLine();
   } else {
     dLine();
   }
     
   // "Distant" font for events 1 week or more in future
   if ((theDate.getTime() - today.getTime()) >= (7 * msInDay)) {
     fontclass = ' class = "distant"';
   }
   else {
     fontclass = '';
   }
   
   // Write the date - if today, just put "TODAY"
   var dateString;
   
   if (theDate.getTime() == today.getTime()) {
     fontclass = ' class = "today"';
	 dateString = "TODAY";
   }
   else {
	 dateString = dayStr[theDate.getDay()].substr(0,3) + ' ' + theDate.getDate() + ' ' + monthStr[theDate.getMonth()].substr(0,3);
   }
   document.write('<tr' + fontclass + '><td class="date" rowspan="' + nEvents + '" >' + dateString + '</td>');

  lastDate.setTime(theDate.getTime());
  firstEvent = true;
  }
   
  // Puts in the rest of a diary event and closes off the row
  function diaryEvent(time, event) {
    if (expired || toofar || notSunday || notAdvanced) 
	{
	  return;
	}
    if (!firstEvent) {
	  document.write('<tr' + fontclass + '>');
	}
    document.write('<td class="time">' + time + '</td>');
    document.write('<td class="event">' + event + '</td></tr>');
	firstEvent = false;
  }
  
  // Functions for various parts of Sunday Service

  function preacher(name) {
    return ('<em> - ' + name + '</em>');
  }
  
  function communion() {
    return ('<br />Communion service');
  }
  
  function baptism() {
    return ('<br />Baptism service');
  }
  
  function dedication() {
    return ('<br />Infant dedication service');
  }

