﻿/// <reference path="jquery.js />
/// <reference path="jquery.class.js />
/// <reference path="calendarItem.js />

/**
* CODE TO UPDATE YEARLY
* also need to update DisplayMonths down below...
*/
// Opening and Closing nights
var OpeningNight = new Date();
OpeningNight.setFullYear(2011, 8, 20);
var ClosingNight = new Date();
ClosingNight.setFullYear(2012, 3, 25);
// The years to display (NEED TO UPDATE EACH SEASON!)
var Years = {
	_2011: '2011',
	_2012: '2012'
};

/**
* CLASSES
*/
var CalendarItem = Class.create({
	init: function (text, playType, textExtension, icon)
	{
		this.text = (text) ? text : '';
		this.playType = (playType) ? playType : PlayTypes.OPEN;
		this.textExtension = (textExtension) ? textExtension : '';
		this.icon = (icon) ? icon : '';
	},
	icon: '',
	playType: '',
	text: '',
	textExtension: ''
});
var PlayTime = Class.create({
	init: function (startTime, endTime)
	{
		this.startTime = (startTime) ? startTime : '';
		this.endTime = (endTime) ? endTime : '';
	},
	startTime: '',
	endTime: ''
});
var CalendarDay = Class.create({
	init: function (id, name)
	{
		this.id = (id) ? id : 0;
		this.name = (name) ? name : '';
	},
	id: 0,
	name: ''
});
var CalendarMonth = Class.create({
	init: function (id, name, days, scheduleType)
	{
		this.id = (id) ? id : 0;
		this.name = (name) ? name : '';
		this.days = (days) ? days : 0;
		this.scheduleType = (scheduleType) ? scheduleType : '';
	},
	id: 0,
	name: '',
	days: 0,
	scheduleType: ''
});
var DisplayMonth = Class.create({
	init: function (month, year)
	{
		this.month = (month) ? month : '';
		this.year = (year) ? year : '';
	},
	month: '',
	year: ''
});

/**
* CONSTANTS
*/
// Schedule mapping (UPDATE ONLY IF TIMES CHANGE)
var ScheduleTypes = {
	regular: {
		sunday: new PlayTime('1:30pm', '3:30pm'),
		tuesday: new PlayTime('7:30pm', '10pm'),
		friday: new PlayTime('7:30pm', '10pm')
	},
	summer1: {
		tuesday: new PlayTime('7:30pm', '10pm'),
		thursday: new PlayTime('7:30pm', '10pm')
	},
	summer2: {
		tuesday: new PlayTime('7:30pm', '10pm'),
		thursday: new PlayTime('7:30pm', '10pm')
	}
};
// Play is either open or closed for a given regularly schedule date
var PlayTypes = {
	OPEN: 'Open',
	CLOSED: 'Closed'
};
// Mapping days
var Days = {
	sunday: new CalendarDay(0, 'Sunday'),
	monday: new CalendarDay(1, 'Monday'),
	tuesday: new CalendarDay(2, 'Tuesday'),
	wednesday: new CalendarDay(3, 'Wednesday'),
	thursday: new CalendarDay(4, 'Thursday'),
	friday: new CalendarDay(5, 'Friday'),
	saturday: new CalendarDay(6, 'Saturday')
};
var DaysOrder = [Days.sunday, Days.monday, Days.tuesday, Days.wednesday, Days.thursday, Days.friday, Days.saturday];
// Mapping months
var Months = {
	january: new CalendarMonth(0, 'January', 31, ScheduleTypes.regular),
	february: new CalendarMonth(1, 'February', 28, ScheduleTypes.regular),
	march: new CalendarMonth(2, 'March', 31, ScheduleTypes.regular),
	april: new CalendarMonth(3, 'April', 30, ScheduleTypes.regular),
	may: new CalendarMonth(4, 'May', 31, ScheduleTypes.summer1),
	june: new CalendarMonth(5, 'June', 30, ScheduleTypes.summer1),
	july: new CalendarMonth(6, 'July', 31, ScheduleTypes.summer2),
	august: new CalendarMonth(7, 'August', 31, ScheduleTypes.summer2),
	september: new CalendarMonth(8, 'September', 30, ScheduleTypes.regular),
	october: new CalendarMonth(9, 'October', 31, ScheduleTypes.regular),
	november: new CalendarMonth(10, 'November', 30, ScheduleTypes.regular),
	december: new CalendarMonth(11, 'December', 31, ScheduleTypes.regular)
};
var DisplayMonths = [
	new DisplayMonth(Months.september, Years._2011),
	new DisplayMonth(Months.october, Years._2011),
	new DisplayMonth(Months.november, Years._2011),
	new DisplayMonth(Months.december, Years._2011),
	new DisplayMonth(Months.january, Years._2012),
	new DisplayMonth(Months.february, Years._2012),
	new DisplayMonth(Months.march, Years._2012),
	new DisplayMonth(Months.april, Years._2012)
];
var MonthsOrder = [Months.january, Months.february, Months.march, Months.april, Months.may, Months.june, Months.july, Months.august, Months.september, Months.october, Months.november, Months.december];
function GetLeapYearDays(year)
{
	/// <summary>Returns the number of days for February</summary>
	/// <param name="year">Number</param>
	/// <returns>Number</returns>
	return (((year % 4 == 0) ? 29 : 28));
}
