var calendarEvents = new Array();
	
function CalendarEvent() {
}

CalendarEvent.prototype.occursOn = function(date) {
	var eventDate = new Date(this.date);
	return date.getMonth() === eventDate.getMonth() &&
		date.getDate() === eventDate.getDate() &&
		date.getFullYear() === eventDate.getFullYear();
};	

CalendarEvent.prototype.getDisplayDate = function(date) {
	var eventDate = new Date(this.date);
	return (eventDate.getMonth() + 1) + "/" + eventDate.getDate();
};	

CalendarEvent.prototype.displayEvent = function() {
	var newEvent = $('#calendar-event-container')
		.clone()
		.removeAttr("id")
		.find('.startdate').html(this.getDisplayDate()).end()
		.find('.time').html(this.time).end()
		.find('.title')
			.html(this.title)
			.attr('href', this.url)
			.end()
		.find('.location').html(this.location).end();

	if (this.image) {
		newEvent.find('.thumbnail').attr('src', this.image);
	} else {
		newEvent.find('.thumbnail').hide();
	}
		
	var listItem = $('<li></li>');
	newEvent.appendTo(listItem);
	listItem.appendTo($('#event-list'));
}

jQuery(document).ready(function(){
	loadEventData();
	
	if (jQuery('#events_calendar').length) {
		var defaultDate;
		jQuery('#events_calendar').datepicker({
			minDate: startRangeDate, 
			maxDate: endRangeDate,
			defaultDate: +0,
			
			onSelect: function(dateText, inst) {
				showEvents(dateText, inst);
			},
			
			beforeShowDay: function(date) {
				var eventFound = false;
				var tooltip = '';
				for (eventIndex in calendarEvents) {
					var event = calendarEvents[eventIndex];
					if (event.occursOn(date)) {
						tooltip = event.title + '...';
						eventFound = true;
						break;
					}
				}
			
				var result = new Array(3);
				result[0] = eventFound;
				result[1] = eventFound ? 'has-event' : '';
				result[2] = tooltip;
				return result;
			}
		});

		selectFirstEvent();
	}
});

function selectFirstEvent() {
	var date = '0';
	var minDateFound = new Date("1/1/2500");
	var haveEvents = false;
	for (eventIndex in calendarEvents) {
		var event = calendarEvents[eventIndex];
		var eventDate = new Date(event.date);
		if (eventDate < minDateFound) {
			minDateFound = eventDate;
			haveEvents = true;
		}
	}

	var datePicker = jQuery('#events_calendar');
	if (haveEvents)
		datePicker.datepicker('setDate', minDateFound);
	else
		datePicker.datepicker('setDate', '0')
	showEvents(datePicker.datepicker('getDate'), datePicker);

}

//Displays relevant event items
function showEvents(dateText, inst) {
	// remove any old events
	$('#event-list').empty();
	
	var date = new Date(dateText);

	var eventsToShow = new Array();
	for (eventIndex in calendarEvents) {
		var event = calendarEvents[eventIndex];
		if (event.occursOn(date)) {
			eventsToShow.push(event);
		}
	}
	
	for (i = 0; i < eventsToShow.length; i++) {
		eventsToShow[i].displayEvent();
	}
	
	if (eventsToShow.length === 0) {
		$('#no-events-message').show();
		$('#event-list').hide();
	} else {
		$('#no-events-message').hide();
		$('#event-list').show();
	}
}
