//
// writeservicestable.js
//
// Automate the drawing of the table of services
//

var month_names = new Array("January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December");

function writeServicesTable(strEndDate, strServiceTime, strDisplayTime, boolWriteNotices) {

	var endDate = new Date(strEndDate);

	//
	// Isolate today's date
	//
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	lastSunday = getLastSunday();
	
	while (lastSunday.getTime() > endDate.getTime()) {
		document.writeln('<tr>');
		document.writeln('<td><p class=al1>' + formatDateMonthDDYYYY(lastSunday) + '</p></td>');
		document.writeln('<td></td>')
		document.writeln('<td><a href="/pdf_bulletins/' + lastSunday.getFullYear() + '/' + formatDateYYYYMMDD(lastSunday) + '_' + strServiceTime + '_bulletin.pdf" target="_blank">View (' + strDisplayTime + ')</a></td>');
		document.writeln('<td></td>')
		document.writeln('<td><a href="private.php?file=pdf_notices/' + lastSunday.getFullYear() + '/' + formatDateYYYYMMDD(lastSunday) + '_notices.pdf" >View</a></td>');
//		if (boolWriteNotices != 0) {
//			document.writeln('<td></td>')
//			document.writeln('<td><a href="/private/pdf_notices/' + lastSunday.getFullYear() + '/' + formatDateYYYYMMDD(lastSunday) + '_notices.pdf" target="_blank">View</a></td>');
//		}
		document.writeln('</tr>');

		dateAdd(lastSunday, -7);
	}
}

function getLastSunday() {
	//
	// Isolate today's date
	//
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);

	//
	// Move 1 day ahead
	//
	var lastSunday = new Date(today);
	dateAdd(lastSunday, 1);

	//
	// Move back to last sunday
	//
	dateAdd(lastSunday, -lastSunday.getDay());

	return lastSunday;
}

function writeTidingsTable(strEndDate) {
	//
	// Isolate today's date
	//
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);

	var endDate = new Date(strEndDate);
	var lastWed = getLastWedOfMonth();
	
	//
	// If we are past last wednesday, move to next month
	//	
	var tidingsDate = new Date(today);
	if (tidingsDate.getTime()  > lastWed.getTime() ) dateAdd(tidingsDate, 7);

	//
	// Move back to first day of month
	//
	dateAdd(tidingsDate, -tidingsDate.getDate());
	dateAdd(tidingsDate, 1);

//	alert(lastWed.toString() + ' ' + tidingsDate.toString());
	
	while (tidingsDate.getTime() > endDate.getTime()) {
		document.writeln('<p class=al1><a href="/pdf_tidings/' + tidingsDate.getFullYear() + '/tidings_' + formatDateYYYYMM(tidingsDate) + '_final_lo.pdf" target="_blank">' + formatDateMonthYYYY(tidingsDate) + '</a></p>');
		dateAdd(tidingsDate, -tidingsDate.getDate());
	}
}

//
// Write general "last updated" element
//
function writeLastUpdated() {
	var uDate1 = new Date(document.lastModified);
	document.write('Updated: ' + formatDateMMDDYYYY(uDate1));
}

//
// Write "last updated" element for schedule page
//
function writeSchedLastUpdated() {
	var uDate1 = getToday();
	document.write('Updated: ' + formatDateMMDDYYYY(uDate1));
}

//
// Write "last updated" element for publications and members page
//
function writePubLastUpdated() {
	var today = getToday();

	var uDate1 = new Date(document.lastModified);

	var uDate2 = getLastWedOfMonth();
	dateAdd(uDate2,1);

	var uDate3 = getLastSunday();
	dateAdd(uDate3,-1);

	if (uDate2.getTime() > uDate1.getTime() && today.getTime() >= uDate2.getTime()) uDate1 = uDate2;
	if (uDate3.getTime() > uDate1.getTime()) uDate1 = uDate3;
	document.write('Updated: ' + formatDateMMDDYYYY(uDate1));
}

function getToday() {
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);

	return today;
}

//
// Get the date the "last wed" of the month
//
function getLastWedOfMonth() {
	//
	// Isolate today's date
	//
	var today = getToday();
	
	//
	// Calculate the last wednesday of current month
	//
	var lastWed = new Date(today);

	// move to last day of the previous month
	dateAdd(lastWed, -lastWed.getDate());
	// move ahead two months
	dateAdd(lastWed, 32);
	// move to last day of current month
	dateAdd(lastWed, -lastWed.getDate());

	// adjust to last wednesday of the month
	if (lastWed.getDay() >= 3) {
		// move to last sunday of the month
		dateAdd(lastWed, -lastWed.getDay());
		// move to wednesday after that
		dateAdd(lastWed, 3);
	} else {
		// move to last sunday of the month
		dateAdd(lastWed, -lastWed.getDay());
		// move to wed prior to that
		dateAdd(lastWed, -4);
	}
	return lastWed;
}

function formatDateMMDDYYYY(inDate) {
	var xx = ''
	
	xx += toTwoDigits(inDate.getMonth()+1);
	xx += '/' + toTwoDigits(inDate.getDate());
	xx += '/' + inDate.getFullYear().toString();

	return xx;
}

function formatDateYYYYMMDD(inDate) {
	var xx = inDate.getFullYear().toString();
	
	xx += '-' + toTwoDigits(inDate.getMonth()+1);
	xx += '-' + toTwoDigits(inDate.getDate());

	return xx;
}

function formatDateYYYYMM(inDate) {
	var xx = inDate.getFullYear().toString();
	
	xx += '-' + toTwoDigits(inDate.getMonth()+1);

	return xx;
}

function formatDateMonthDDYYYY(inDate) {
	var xx = ''
	
	xx = month_names[inDate.getMonth()];
	xx += ' ' + inDate.getDate().toString();
	xx += ', ' + inDate.getFullYear().toString();

	return xx;
}

function formatDateMonthYYYY(inDate) {
	var xx = ''
	
	xx = month_names[inDate.getMonth()];
	xx += ' ' + inDate.getFullYear().toString();

	return xx;
}

function toTwoDigits(inInt) {
	var xx = Math.floor((inInt % 100)/10).toString() + (inInt % 10).toString();

	return xx;
}

//
// Add a number of days to a date, using technique from www.w3schools.com 
//
function dateAdd(dateObj, delta) {
	dateObj.setHours(0);
	dateObj.setMinutes(0);
	dateObj.setSeconds(0);
	dateObj.setMilliseconds(0);
	dateObj.setDate(dateObj.getDate()+delta);
}

//
// Add a number of days to a date, accounting for "leap seconds"
//
function dateAdd_1(dateObj, delta) {
	dateObj.setHours(0);
	dateObj.setMinutes(0);
	dateObj.setSeconds(0);
	dateObj.setMilliseconds(0);
	dateObj.setTime(dateObj.getTime() + (1000*60*60*24*delta) + (1000*60*60*12) );
	dateObj.setHours(0);
	dateObj.setMinutes(0);
	dateObj.setSeconds(0);
	dateObj.setMilliseconds(0);
}



