// JavaScript Document

var d = new Date()
				
var MLKDay, MemorialDay, IndependanceDay, LaborDay, ThanksgivingDay, ChristmasEve, ChristmasDay, NewYearsEve, NewYearsDay
				
MLKDay = findMLKDay(d.getFullYear())
MemorialDay = findMemorialDay(d.getFullYear())
IndependanceDay = findIndependanceDay(d.getFullYear())
LaborDay = findLaborDay(d.getFullYear())
ThanksgivingDay = findThanksgivingDay(d.getFullYear())
ChristmasEve = findChristmasEve(d.getFullYear())
ChristmasDay = findChristmasDay(d.getFullYear())
NewYearsEve = findNewYearsEve(d.getFullYear())
NewYearsDay = findNewYearsDay(d.getFullYear())
				
var myDate = new Date()
				
if(d > myDate.setFullYear(d.getFullYear(), 0, 1) && d <= MLKDay)
{
	document.write("Martin Luther King, Jr.'s Birthday Observed:\nMonday, January " + MLKDay.getDate() + ", " + MLKDay.getFullYear())	
}
else if (d > MLKDay && d <= MemorialDay)
{
	document.write("Memorial Day: Monday, May " + MemorialDay.getDate() + ", " + MemorialDay.getFullYear())
}
else if (d > MemorialDay && d <= myDate.setFullYear(d.getFullYear(), 6, 4))
{
	document.write(IndependanceDay)
}
else if (d > myDate.setFullYear(d.getFullYear(), 6, 4) && d <= LaborDay)
{
	document.write("Labor Day: Monday, September " + LaborDay.getDate() + ", " + LaborDay.getFullYear())
}
else if (d > LaborDay && d <= ThanksgivingDay)
{
	document.write("Thanksgiving Day: Thursday, November " + ThanksgivingDay.getDate() + ", " + ThanksgivingDay.getFullYear())
}
else
{
	document.write(ChristmasEve + "<br>" + ChristmasDay + "<br><br>" + NewYearsEve + "<br>" + NewYearsDay)
}
	
function getDayOfWeek(x)
{
	var weekday=new Array(7);
	weekday[0]="Sunday";
	weekday[1]="Monday";
	weekday[2]="Tuesday";
	weekday[3]="Wednesday";
	weekday[4]="Thursday";
	weekday[5]="Friday";
	weekday[6]="Saturday";
	
	return weekday[x]
}

function findMLKDay(year)
{
	var day = 1
	var d2 = new Date("1/" + day + "/" + year)
	while (d2.getDay() != 1)
	{
		day = day + 1
		d2.setDate(day)
		d2.setMonth("0")
		d2.setFullYear(year)
	}
	day = d2.getDate() + 14
	d2.setDate(day)
	d2.setMonth("0")
	d2.setFullYear(year)
	d2.setHours(23)
	d2.setMinutes(59)
	d2.setSeconds(59)
	return d2
}

function findMemorialDay(year)
{
	var day = 31
	var d2 = new Date("5/" + day + "/" + year)
	while (d2.getDay() != 1)
	{
		day = day - 1
		d2.setDate(day)
		d2.setMonth("4")
		d2.setFullYear(year)
	}
	d2.setDate(day)
	d2.setMonth("4")
	d2.setFullYear(year)
	d2.setHours(23)
	d2.setMinutes(59)
	d2.setSeconds(59)
	return d2
}

function findIndependanceDay(year)
{
	var d2 = new Date("7/4/" + year)
	if(d2.getDay() == 0)
	{
		return "Independence Day: Monday, July 5, " + year
	}
	else if(d2.getDay() == 6)
	{
		return "Independence Day: Saturday, July 4, " + year + " (Floating Holiday)"
	}
	else
	{
		return "Independence Day: " + getDayOfWeek(d2.getDay()) + ", July 4, " + year
	}
}

function findLaborDay(year)
{
	var day = 1
	var d2 = new Date("9/" + day + "/" + year)
	while (d2.getDay() != 1)
	{
		day = day + 1
		d2.setDate(day)
		d2.setMonth("8")
		d2.setFullYear(year)
	}
	day = d2.getDate()
	d2.setDate(day)
	d2.setMonth("8")
	d2.setFullYear(year)
	d2.setHours(23)
	d2.setMinutes(59)
	d2.setSeconds(59)
	return d2
}

function findThanksgivingDay(year)
{
	var day = 1
	var d2 = new Date("11/" + day + "/" + year)
	while (d2.getDay() != 4)
	{
		day = day + 1
		d2.setDate(day)
		d2.setMonth("10")
		d2.setFullYear(year)
	}
	day = d2.getDate() + 21
	d2.setDate(day)
	d2.setMonth("10")
	d2.setFullYear(year)
	d2.setHours(23)
	d2.setMinutes(59)
	d2.setSeconds(59)
	return d2
}

function findChristmasEve(year)
{
	var d2 = new Date("12/24/" + year)
	if(d2.getDay() == 0 || d2.getDay() == 6)
	{
		return "Christmas Eve: " + getDayOfWeek(d2.getDay()) + ", December 24, " + year + " (use as floating holiday)"
	}
	else
	{
		return "Christmas Eve: " + getDayOfWeek(d2.getDay()) + ", December 24, " + year
	}
}

function findChristmasDay(year)
{
	var d2 = new Date("12/25/" + year)
	if(d2.getDay() == 0)
	{
		return "Christmas Day: Monday, December 26, " + year
	}
	else if(d2.getDay() == 6)
	{
		return "Christmas Day: Monday, December 27, " + year
	}
	else
	{
		return "Christmas Day: " + getDayOfWeek(d2.getDay()) + ", December 25, " + year
	}
}

function findNewYearsEve(year)
{
	var d2 = new Date("12/31/" + year)
	if(d2.getDay() == 0 || d2.getDay() == 6)
	{
		return "New Year's Eve: " + getDayOfWeek(d2.getDay()) + ", December 31, " + year + " (use as floating holiday)"
	}
	else
	{
		return "New Year's Eve: " + getDayOfWeek(d2.getDay()) + ", December 31, " + year
	}
}

function findNewYearsDay(year)
{
	year = year + 1
	var d2 = new Date("1/1/" + year)
	if(d2.getDay() == 0)
	{
		return "New Year's Day: Monday, January 2, " + year
	}
	else if(d2.getDay() == 6)
	{
		return "New Year's Day: Monday, January 3, " + year
	}
	else
	{
		return "New Year's Day: " + getDayOfWeek(d2.getDay()) + ", January 1, " + year
	}
}