<!--
//////////////////////////////////////////////////////////////
//	Author:		Mark Noseworthy (©2006 Triton Data Inc.)	//
//	Created:	Feb 24/06									//
//															//
//	Purpose:	Calendar of Events Holidays					//
//////////////////////////////////////////////////////////////



// Storing the holidays here instead of database to alliviate 
// the need and time needed to grab the info from the DB and 
// converting to a JavaScript array.

var arrHolidays;// = new Array();


// ***Format for a new holiday: **(see below for Recurring Day and Room values)
// new coeHoliday(start date('mm/dd/yyyy'), end date('mm/dd/yyyy'), recurring day, 'Description here', room closed)
//
// EXAMPLES: /////////////////////////////////////////////////////////////////////////////////
//   Archives closed on Sundays between Oct 16 to May 31
//    arrHolidays(0) = new coeHoliday('10/16/2006', '05/31/2007', 0, 'Closed', 2)
//
//   Closed for Christmas
//    arrHolidays.push( new coeHoliday('12/25/2006', '', 1, 'Closed for Christmas Day', 0) )
//////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////
// Values for Recurring day:
// -1 - neither
//  0 - Sundays		4 - Thursdays
//  1 - Mondays		5 - Fridays
//  2 - Tuesdays	6 - Saturdays
//  3 - Wednesdays

// Values for Room:
//  1 - Rooms
//  2 - Archives
//  3 - Museum
//  4 - Art Gallery
/////////////////////////////////////

function setHolidays() {
	
	var dtGoodFriday = new Date(ShowEasters(dtCurrent.getFullYear()));
	dtGoodFriday = new Date(dtGoodFriday.setDate(dtGoodFriday.getDate() - 2));

	var strGoodFriday = dtGoodFriday.getMonth()+1 + '/' + dtGoodFriday.getDate() + '/' + dtGoodFriday.getFullYear();
	//alert( strGoodFriday );

	dtGoodFriday = null;

	// new coeHoliday(start date('mm/dd/yyyy'), end date('mm/dd/yyyy'), recurring day, 'Description here', room closed)
	arrHolidays = new Array(
		new coeHoliday('12/25/' + dtCurrent.getFullYear(), '', -1, 'Closed for Christmas Day', 1),
		new coeHoliday('12/26/' + dtCurrent.getFullYear(), '', -1, 'Closed for Boxing Day', 1),
		new coeHoliday('01/01/' + dtCurrent.getFullYear(), '', -1, 'Closed for New Year\'s Day', 1),
		new coeHoliday('11/11/' + dtCurrent.getFullYear(), '', -1, 'Closed for Remembrance Day', 1),
		new coeHoliday(strGoodFriday, '', -1, 'Closed for Good Friday', 1),
		new coeHoliday('01/01/2006', '12/31/2010', 0, 'Closed', 2),
		new coeHoliday('10/16/2006', '05/31/2007', 1, 'Closed', 1)
	);
	/* Test holidays
		new coeHoliday('01/01/2006', '12/29/2006', 5, 'Closed On Fridays [mus]', 3),
		new coeHoliday('01/01/2006', '12/31/2006', 0, 'Closed On Sundays [art]', 4)
	*/
	
}


function coeHoliday(start, end, recurDay, desc, room) {
	var dtStart = new Date(start);
	var dtEnd = (end != '') ? new Date(end) : '';
	var iRecurringDay = recurDay;
	var strDesc = new String( desc );
	var iRoom = (iRoom != '') ? parseInt(room) : -1;
	
	
	
	this.getHolidayStart = function() {
		return dtStart;
	};
	
	this.getHolidayEnd = function() {
		return dtEnd;
	};
	
	this.isValid = function() {
		if( (dtStart != '') && Date.parse(dtStart) > 0 ) {
			if( this.isSingle()  ) {
				if( Date.parse(dtEnd) <= 0 )
					return false;
				else {
					return !( Date.parse(dtStart) > Date.parse(dtEnd) );
				}
			}
			
			return true;
		}
		else
			return false;
	};
	
	this.getDescription = function() {
		return strDesc;
	};
	
	this.getRecurringDay = function() {
		return iRecurringDay;
	};
	
	this.isSingle = function() {
		return (dtEnd == '');
	};
	
	this.getRoom = function() {
		return iRoom;
	};
}


function isHoliday(dtCheck) {
	var iHCount = 0, iHRecur = 0;
	
	var blnHasSingle = false;
	var arrRet = new Array();
	
	
	for(var i = 0; i < arrHolidays.length; i++) {
		if( arrHolidays[i].isValid() ) {
			if( arrHolidays[i].isSingle() ) {
				if( Date.parse(dtCheck) == Date.parse(arrHolidays[i].getHolidayStart()) ) {
					//return new Array(arrHolidays[i].getRoom(),arrHolidays[i].getDescription());
					arrRet[arrHolidays[i].getRoom()] = new Array(arrHolidays[i].getRoom(), arrHolidays[i].getDescription());
					blnHasSingle = true;
				}
			}
			else {
				
				//|| ((Date.parse(arrHolidays[i].getHolidayStart()) >= Date.parse(dtCheck)) && (Date.parse() ?? Date.parse()))
				if( (Date.parse(dtCheck) >= Date.parse(arrHolidays[i].getHolidayStart())) && (Date.parse(dtCheck) <= Date.parse(arrHolidays[i].getHolidayEnd())) ) {
					
					if( dtCheck.getDay() == arrHolidays[i].getRecurringDay() ) {		
						//return new Array(arrHolidays[i].getRoom(), arrHolidays[i].getDescription());
						if( !blnHasSingle )
							arrRet[arrHolidays[i].getRoom()] = new Array(arrHolidays[i].getRoom(), arrHolidays[i].getDescription());
						
					}
				}
			}
		}
	}
	
	//return new Array(-1,'');
	return arrRet;
}
















// -->
