
$(function() {
	var courseList;
	courseList = $('ul.calendar_courses');
	courseList.before('<div id="calendar-container"></div>');
	
	var courses = new Array();
	courseList.find('li').each(function() {
		$(this).hide();
		courses.push({
			li: $(this),
			id: $(this).find('div.course').attr('id'),
			begin: createDateObject($(this).find('.dtstart').meta('date-begin')),
			end: createDateObject($(this).find('.dtend').meta('date-end'))
		});
	});
	
	function highlightCourseDates(date) {
		return [true, getCourse(date) ? 'course-date' : ''];
	}
	
	function getCourse(date) {
		for (i = 0; i < courses.length; i++) {
			var begin = courses[i].begin;
			var end = courses[i].end;
			
			date.setHours(0);
			
			if ((begin <= date) && (date <= end)) {
				return courses[i];
			}
		}
		return false;
	}
	
	var selectedDate;
	
	function onSelect(dateString) {
		if (dateString == selectedDate) {
			selectedDate = null;
		} else {
			selectedDate = dateString;
		}
		
		var course;
		course = getCourse(createDateObject(dateString));
		if (course) {
			tb_show('', '#TB_inline?height=200&width=480&inlineId=' + course.id);
		}
	} 
	
	function createDateObject(dateString) {
		var matches = /(\d{4})\-(\d{2})\-(\d{2})/.exec(dateString);
		if (!matches) return null;
		
		var dateObject;
		dateObject = new Date();
		dateObject.setYear(matches[1]);
		dateObject.setMonth(matches[2] - 1);
		dateObject.setDate(matches[3]);
		dateObject.setHours(0);
		dateObject.setMinutes(0);
		dateObject.setSeconds(0);
		dateObject.setMilliseconds(0);
		
		return dateObject;
	}                                      
	$("#calendar-container").datepicker({ 
		onSelect: onSelect,
		dateFormat: 'yy-mm-dd',
		changeFirstDay: false,
		beforeShowDay: highlightCourseDates,
		numberOfMonths: 4,
		changeMonth: false, 
		changeYear: false
	});
	
});