var calendarService = false;

var oCalendar = false;
var eventData = new Object();
var eventsFetched = new Object();

function prefetch() {
	calendarDateChanged(new Date());
}

function DateTime(s) {
	this.javaClass="org.joda.time.DateTime";
	this.time = s;
}

function calendarDateChanged(dateObj){
	if(!calendarService) {
		calendarService = new dojo.rpc.JsonService("LiveCalendarService.json.do");
		calendarService.bustCache = true;
	}
	var month = "" + (dateObj.getMonth() + 1);
	if(month.length < 2)
		month = "0" + month;
	var dateKey = "" + dateObj.getFullYear() + "-" + month + "-01T00:00:00Z";
	var firstDay = dojo.date.fromRfc3339(dateKey);
	firstDay = dojo.date.add(firstDay, dojo.date.dateParts.DAY, -7);
	var lastDay = dojo.date.add(firstDay, dojo.date.dateParts.DAY, 41);
	firstDay = dojo.date.toRfc3339(firstDay);
	lastDay = dojo.date.toRfc3339(lastDay);
	if(!eventsFetched[dateKey]) {
		calendarService.getEventsForDateRange(new DateTime(firstDay), new DateTime(lastDay)).addCallback(
			function(value) {
				//the calendar widget expects a map of id => data, 
				//so process the return into a map.

				for(var i = 0; i < value.length; i++) {
					value[i].allday = false;
					value[i].type = [];
					value[i].attributes = {};
					eventData[value[i].id] = value[i];
				}

				oCalendar.setCalendarEntries(eventData);
				oCalendar.show();
				eventsFetched[dateKey] = true;
			}
		);
	} else {
		oCalendar.setCalendarEntries(eventData);
		oCalendar.show();
	}
}

var loadDates = true;
function initialLoadCalendarData() {
	if(!oCalendar) {
		dojo.widget.createWidget(document.getElementById("calendarPopup"));
		oCalendar = dojo.widget.byId("dojoCalendar");
		oCalendar.hide();
		oCalendar.onValueChanged = calendarDateChanged;
		dojo.widget.byId("calendarPopup")._toggle({preventDefault: function(){}});

	}
	
	
	if(loadDates) {
		loadDates = false;
		calendarDateChanged(new Date());
	}
	return false;
}
function openReminderWindow(eventId) {
	var a = eventId;
	if(a.indexOf(":")<=-1) {
		a = eval(eventId);
	} else {
		a = a.substring(4);
	}
	var url = "livereminder.do?eventId=" + a;
	window.open(url, "liveReminder", "width=400,height=220,status=1,toolbar=0");
}