var calendarWidget;
var calendarYear;
var calendarYearWidget;
var calendarYearMin;
var calendarYearMax;
var calendarMonth;
var calendarMonthWidget;
var archiveUrl='/publications/archive/';
var calendarServiceUrl = function() {
	return "/publications/calendar/"+calendarYear+"/"+calendarMonth+"/";
};

var calendarDayUrl = function(day) {
	return archiveUrl+calendarYear+'/'+calendarMonth+'/'+day+'/';
};
var calendarNav = function(inc) {
	if (inc>0) {inc=1;} else {inc=-1;}
	calendarYear=parseInt(calendarYear);
	calendarMonth=parseInt(calendarMonth);
	calendarMonth+=inc;
	if (calendarMonth<=0 || calendarMonth>11) {
		calendarMonth=(calendarMonth-1+12)%12 + 1;
		calendarYear+=inc;
		if (calendarYear<calendarYearMin) {
			calendarYear=calendarYearMin;
			calendarMonth=1;
		} else if (calendarYear>calendarYearMax) {
			calendarYear=calendarYearMax;
			calendarMonth=12;
		}
	}
	calendarUpdate();
}
var calendarYearChange = function(obj) {
	calendarYear=obj.options[obj.selectedIndex].value;
	calendarUpdate();
}
var calendarMonthChange = function(obj) {
	calendarMonth=obj.options[obj.selectedIndex].value;
	calendarUpdate();
}
var calendarUpdate = function() {
	if(calendarYear<calendarYearMin) { calendarYear=calendarYearMin; }
	if(calendarYear>calendarYearMax) { calendarYear=calendarYearMax; }
	dojo.xhrGet({
		url: calendarServiceUrl(),
		handleAs: "json",
		load: function(data, args){
			var week_len=data.month_calendar.length;
			for (var week_i=0;week_i<6;week_i++) {
				var day_len=7;
				try { day_len=data.month_calendar[week_i].length } catch(err) { };
				for (var day_i=0;day_i<day_len;day_i++) {
					var node=dojo.byId('calendar_day_'+week_i+'_'+day_i);
					var day=0
					try { day=data.month_calendar[week_i][day_i]; } catch(err) { }
					var text='';
					try {
					if (day != 0) {
						text=day;
						if (day in data.month_stat && data.month_stat[day] > 0) {
						text='<a class="calendar_link" href="'+calendarDayUrl(day)+'">'+day+'</a>';
						}
					}
					} catch(err) {}
					if (node) {
						node.innerHTML=text;
					}
				}
			}
			calendarMonthWidget.selectedIndex=calendarMonth-1;
			calendarYearWidget.selectedIndex=calendarYearMax-calendarYear;
			calendarWidget.style.display='block';
		},
		error: function(error,args){
			calendarWidget.style.display='none';
			console.warn("error!",error);
		}
	});
};

dojo.addOnLoad(function() {
	calendarWidget=dojo.byId('calendar');
	calendarYearWidget=dojo.byId('calendar_year');
	calendarMonthWidget=dojo.byId('calendar_month');
	calendarYearMin=parseInt(calendarYearWidget.options[calendarYearWidget.options.length-1].value);
	calendarYearMax=parseInt(calendarYearWidget.options[0].value);
	var m = window.location.pathname.match('^'+archiveUrl+'(\\d+)/?(\\d*)');
	if (m) {
		calendarYear=m[1];
		if (m.length>2) {
			calendarMonth=parseInt(m[2]);
		}
	} else {
		var currentTime=new Date();
		calendarYear=currentTime.getFullYear();
		calendarMonth=currentTime.getMonth()+1;
	}
	calendarUpdate();
});


