function init_calendar_pair(start_input, start_calendar, start_label,
							end_input, end_calendar, end_label) {
	var today = new Date();
	var today_str = today.getMonth()+1 + "/" + today.getDate() + "/" + today.getFullYear();
	var cal_start = new YAHOO.widget.Calendar("widget_" + start_input,start_calendar, 
												{ title:start_label, close:true, iframe:true,
												  mindate: today_str } );
	cal_start.render();
 	YAHOO.util.Event.on(start_input, "focus", function() { cal_end.hide();cal_start.show(); }, cal_start, true);

	var cal_end = new YAHOO.widget.Calendar("widget_" + end_input,end_calendar, 
												{ title:end_label, close:true, iframe:true,
												  mindate: today_str } );
	cal_end.renderCellStyleToday = cal_end.renderCellDefault;
	cal_end.render();
 	YAHOO.util.Event.on(end_input, "focus", function() { cal_start.hide();cal_end.show(); }, cal_end, true);

 	function handleStartSelect(type,args,obj) {
		var dates = args[0];
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		var selected_date = month + "/" + day + "/" + year;
		document.getElementById(start_input).value = selected_date;
		// alert("set start date: [" + selected_date + "]");
		cal_end.cfg.setProperty('mindate', selected_date);

		var selected_start_date = YAHOO.widget.DateMath.getDate(year, month-1, day);
		var selected_end_dates = cal_end.getSelectedDates();
		if (selected_end_dates.length==0 || selected_end_dates[0]<=selected_start_date) {
			var auto_end_date = YAHOO.widget.DateMath.add(selected_start_date,YAHOO.widget.DateMath.DAY,1);
			var auto_end_date_str = (auto_end_date.getMonth()+1) + "/" + auto_end_date.getDate() + "/" + auto_end_date.getFullYear();
			cal_end.cfg.setProperty('selected',  auto_end_date_str);
			var auto_end_month_str = (auto_end_date.getMonth()+1) + "/" + auto_end_date.getFullYear();
			cal_end.cfg.setProperty('pagedate', auto_end_month_str);
			// document.getElementById(end_input).value = auto_end_date_str;
		}
		cal_end.render();
		cal_start.hide();
	}
	cal_start.selectEvent.subscribe(handleStartSelect, cal_start, true);

 	function handleEndSelect(type,args,obj) {
		var dates = args[0];
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		var selected_date = month + "/" + day + "/" + year;
		// alert("curr end date: [" + document.getElementById(end_input).value + "]");
		document.getElementById(end_input).value = selected_date;
		// alert("new end date: [" + document.getElementById(end_input).value + "]");
		cal_start.cfg.setProperty('maxdate', selected_date);
		cal_start.render();
		cal_end.hide();
	}
	cal_end.selectEvent.subscribe(handleEndSelect, cal_end, true);
	
	return {'start':cal_start, 'end':cal_end};
}

function load_small_calendar(target) {
	var container = document.getElementById(target);
	var callback = {
		success : function(o) {
			container.innerHTML = o.responseText;
		},
		failure : function(o) {
			container.innerHTML = 'Sorry. There was an error loading the event calendar.';
		},
		scope : this
	}		
	var conn = YAHOO.util.Connect.asyncRequest('GET', '/event/calendar/', callback);
}
