var monthNames = new Array(
	'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen',
	'září', 'říjen', 'listopad', 'prosinec'
);

$(function() {
	date = new Date();
	$('#nextMonth').click(function() {
			refreshCalendar(date.getFullYear(), date.getMonth() + 2);
			return false;
		});

	$('#prevMonth').click(function() {
			refreshCalendar(date.getFullYear(), date.getMonth());
			return false;
		});
	
	$('.kalendar table .aktiv').each(function(e, elm) {
			elm.tooltip = elm.title;
			$(elm)
				.mouseenter(function(e) {showCalendarTooltip(e)})
				.mouseleave(function(e) {hideCalendarTooltip(e)})
				.removeAttr('title');
		});
});

function refreshCalendar(year, month) {
	var calendar = $('.kalendar tbody td');
	
	if(month > 12) {
		month = 1;
		year++;
	}
	if(month < 1) {
		month = 12;
		year--;
	}

	
	printCalendar();
	changeMonthCaption();
	changeButtonActions();
	

	function printCalendar() {
		var dayOffset, day, dayOfMonth, cal, eventIndex;
		
		dayOffset = new Date(year, month - 1).getDay() - 1;
		
		if(dayOffset < 0) {
			dayOffset = 6;
		}
		
		
		day = new Date(year, month - 1, 0 - (dayOffset - 1));

		for(var i = 0; i < 42; i++) {
			dayOfMonth = new Date(day.getFullYear(), day.getMonth(), day.getDate() + i);
			cal = $(calendar[i]);
			cal.html('<span>' + dayOfMonth.getDate() + '</span>');
			
			if(dayOfMonth.getMonth() == month - 1) {
				cal.removeClass('disabled');
				
				d = dayOfMonth.getDate();
				if(d < 10) {
					d = '0' + d;
				}
				
				m = dayOfMonth.getMonth() + 1;
				if(m < 10) {
					m = '0' + m;
				}
				
				eventIndex = dayOfMonth.getFullYear().toString() + m + d;
				if(eventsData[eventIndex] != undefined) {
					$('span', cal)
						.addClass('aktiv');
					cal
						.mouseenter(function(e) {showCalendarTooltip(e)})
						.mouseleave(function(e) {hideCalendarTooltip(e)});
					cal[0].tooltip = eventsData[eventIndex].title;
				}
			}
			else {
				cal
					.addClass('disabled')
					.unbind();
			}
			
		}
	}


	function changeMonthCaption() {
		$('#monthCaption').html(monthNames[month - 1]);
	}
	
	
	function changeButtonActions() {
		$('#nextMonth').unbind('click').click(function() {
			refreshCalendar(year, month + 1);
			return false;
		});
		
		$('#prevMonth').unbind('click').click(function() {
			refreshCalendar(year, month - 1);
			return false;
		});
	}
}


function showCalendarTooltip(e) {
	var top, left, height;

	$('#calTooltip').html('<ul>' + e.currentTarget.tooltip + '</ul>');
	left = e.pageX - ($('#calTooltip').width() / 2 + (e.offsetX || 20));
	height = $('#calTooltip').height();
	top = (e.pageY - (70 + $('#calTooltip').height()));

	$('#calTooltip')
		.css({'top': top + 'px', 'left': left + 'px', opacity: 0, display: 'block'})
		.stop(true)
		.animate({opacity: .8});
}


function hideCalendarTooltip(e) {
	$('#calTooltip')
		.stop(true)
		.fadeOut();
}
