function CalendarManager(target, eventTarget, events, displayCount, alignRight) {
	this.el = document.getElementById(target);
	this.elScreens = document.getElementById(eventTarget);
	this.events = events;
	this.displayCount = displayCount;
	this.alignRight = alignRight ? true : false;
	this.eventScreens = new Array();
	this.eventTriggers = new Array();
	this.calendars = new Array();
	this.createCalendars();
	this.selectedIndex = 0;
}

CalendarManager.prototype.createCalendars = function() {
	if (this.events.length == 0) return;
	var firstCalendar = new Calendar();
	firstCalendar.parent = this;
	var currentCalendar = firstCalendar;
	this.calendars.push(firstCalendar);
	var month = this.events[0].getMonth();
	for (var i=0; i<this.events.length; i++) {
		var nextMonth = this.events[i].getMonth();
		if (nextMonth != month) {
			month = nextMonth;
			currentCalendar.render(this.el);
			currentCalendar.bind();
			var calendar = new Calendar();
			calendar.parent = this;
			currentCalendar = calendar;
			this.calendars.push(calendar);
		}
		currentCalendar.events.push(this.events[i]);
	}
	currentCalendar.render(this.el);
	currentCalendar.bind();
	this.bind();
}

CalendarManager.prototype.bind = function() {
	var screens = child_nodes(this.elScreens);
	for (i=0; i<screens.length; i++) {
		var eScreen = new CalendarScreen(screens[i], this);
		this.eventScreens.push(eScreen);
	}
	var o = this;
	for (var i in this.eventTriggers) this.eventTriggers[i].onmouseover = function() { o.showEvent(this); }
}

CalendarManager.prototype.hideEvents = function() {
	for (var i=0; i<this.eventScreens.length; i++) {
		var eScreen = this.eventScreens[i];
		eScreen.el.className = 'off-left';
		eScreen.el.style.left = '';
		eScreen.el.style.top = '';
	}
}

CalendarManager.prototype.showEvent = function(o) {
	this.hideEvents();
	for (i=0; i<this.eventTriggers.length; i++) {
		if(this.eventTriggers[i] == o) {
			var eScreen = this.eventScreens[i];
			eScreen.el.className = '';
			var trigPos = get_position(this.eventTriggers[i]);
			eScreen.el.style.left = (this.alignRight) ? trigPos[0]-350+'px' : trigPos[0]-20+'px';
			eScreen.el.style.top = trigPos[1]-100+'px';
		}
	}
}