function initCalendar() {
	if($('calendar') && !window.ie) {
		// create month array
		if($('calendar').className == 'de') {
			months = [
				'Januar',
				'Februar',
				'März',
				'April',
				'Mai',
				'Juni',
				'Juli',
				'August',
				'September',
				'Oktober',
				'November',
				'Dezember'
			];
		} else if($('calendar').className == 'en') {
			months = [
				'January',
				'February',
				'March',
				'April',
				'May',
				'June',
				'July',
				'August',
				'September',
				'October',
				'November',
				'December'
			];
		}
		// set current month and day
		var today = new Date();
		currentMonth = today.getMonth();
		currentDay = today.getDate();
		// set current sheet position
		var initPosition = currentMonth * 280;
		$('month').firstChild.nodeValue = months[currentMonth];
		$('calendarcontainer').scrollTo(initPosition, 0);
		// create link to previous month
		$$('#calendar .prev').addEvent('click', function(e) {
			scrollSheet(--currentMonth);
			e.preventDefault();
			e.returnValue = false;
		});
		// create link to next month
		$$('#calendar .next').addEvent('click', function(e) {
			scrollSheet(++currentMonth);
			e.preventDefault();
			e.returnValue = false;
		});
		// get calendar events
		events = $$('.event a');
		for (var i=0; i < events.length; i++) {
			// display calendar events on mouseover
			events[i].parentNode.addEvent('mouseenter', function() { createBubble(this.firstChild); });
			events[i].parentNode.addEvent('mouseleave', function() { removeBubble(this.firstChild); });
			events[i].addEvent('click', function(e) { e.preventDefault(); });
		};
		// mark current day
		markToday.delay(500);
	}
}

function scrollSheet(thisMonth) {
	thisMonth = (thisMonth%12)+((thisMonth<0)?12:0);
	// change month name in calendar header
	$('month').firstChild.nodeValue = months[thisMonth];
	var xPosition = thisMonth * 280;
	// scroll to month
	scroll = new Fx.Scroll($('calendarcontainer'),{
		wait: false,
		duration: 400,
		transition: Fx.Transitions.Cubic.easeIn
	});
	scroll.scrollTo(xPosition, 0);
}

function createBubble(target) {
	// create
	eventBubble = document.createElement('div');
	eventBubble.className ='eventbubble';
	// get event data
	eventUrl = target.href + '&ajax=true';
	eventData = new Ajax(eventUrl, {
		method: 'get',
		update: eventBubble
	}).request();
	// attach
	$('calendar').appendChild(eventBubble);
}

function removeBubble(target) {
	// remove
	$('calendar').removeChild(eventBubble);
}

function markToday() {
	currentTable = $$('#calendar table')[currentMonth];
	currentTableCells = currentTable.getElementsByTagName('td');
	for (var i=0; i < currentTableCells.length; i++) {
		if(currentTableCells[i].className != 'blank' && currentTableCells[i].firstChild.nodeValue == currentDay) {
			currentTableCells[i].addClass('today');
		}
	};
}