/**
 * @param Array
 *            date [day, month, year, name] or [day, month, name]
 * @return Number unix time
 */
var parseDayArray = function(day) {
	if (typeof (day[2]) == 'number') {
		var year = day[2];
		var name = day[3];
	} else {
		var year = 0;
		var name = day[2];
	}
	var time = new Date(year, day[1] - 1, day[0]).getTime();
	holidayTimes.push(time);
	holidayNames.push(name);
	return time;
}

var activeDays = [];
var holidayNames = [];
var holidayTimes = [];
var dynamicHolidays = [];
var staticHolidays = [ [ 1, 1, "Uudenvuodenpäivä" ], [ 6, 1, "Loppiainen" ], [ 1, 5, "Vappu" ], [ 6, 12, "Itsenäisyyspäivä" ],
		[ 25, 12, "Joulupäivä" ], [ 26, 12, "Tapaninpäivä" ] ];
staticHolidays = staticHolidays.map(parseDayArray);

function checkDayClass(date) {
	var clazz = '';
	var name = null;
	var index = $.inArray(date.getTime(), holidayTimes);
	if (index > -1) {
		clazz = 'holiday';
		name = holidayNames[index];
	} else if ((index = $.inArray(new Date(0, date.getMonth(), date.getDate()).getTime(), holidayTimes)) > -1) {
		clazz = 'holiday';
		name = holidayNames[index];
	} else if (date.getDay() == 0) {
		clazz = 'holiday';
	}
	switch (activeDays.find(time)) {
	case -1:
		break;
	case 0:
		clazz += ' firstActiveDay';
		if (activeDays.length > 1)
			break;
	case 6:
		clazz += ' lastActiveDay';
		break;
	default:
		clazz += ' activeDay';
	}
	return [ true, clazz, name ]
}
