function CreateCalendar( buttonID, containerID, calendarID, dateFieldID, minDate )
{
	var dialog, calendar;

	calendar = new YAHOO.widget.Calendar(calendarID, {
		iframe:false,
		hide_blank_weeks:true,
		navigator:true,
		mindate: minDate
	});

	calendar.selectEvent.subscribe(mySelectHandler, calendar, true);

	function mySelectHandler(type,args,obj) {
		var selected = args[0];
		var selDate = this.toDate(selected[0]);
		var dStr = selDate.getDate();
		var mStr = calendar.cfg.getProperty("MONTHS_LONG")[selDate.getMonth()];
		var yStr = selDate.getFullYear();

		YAHOO.util.Dom.get( dateFieldID ).value = mStr + " " + dStr + ", " + yStr;
		dialog.hide();
	};

	function cancelHandler() {
		this.hide();
	}

	dialog = new YAHOO.widget.Dialog(containerID, {
		context:[buttonID, "tl", "bl"],
		width:"16em",  // Sam Skin dialog needs to have a width defined (7*2em + 2*1em = 16em).
		draggable:false,
		close:true
	});

	//calendar.render();
	dialog.render();

	// Using dialog.hide() instead of visible:false is a workaround for an IE6/7 container known issue with border-collapse:collapse.
	dialog.hide();

	calendar.renderEvent.subscribe(function() {
		// Tell Dialog it's contents have changed, Currently used by container for IE6/Safari2 to sync underlay size
		dialog.fireEvent("changeContent");
	});

	YAHOO.util.Event.on(buttonID, "click", function()
	{
		var date = new Date(YAHOO.util.Dom.get(dateFieldID).value);
		if(isNaN(date))
			date = new Date();
		calendar.select(date);
		calendar.cfg.setProperty("pagedate", (date.getMonth()+1) + "/" + date.getFullYear());
		calendar.render();
		if(dialog.visible)
			dialog.hide();
		else
		dialog.show();
		if (YAHOO.env.ua.opera && document.documentElement) {
			// Opera needs to force a repaint
			document.documentElement.className += "";
		}
	});
}