<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" viewSourceURL="srcview/index.html">

	<mx:Script>
		<![CDATA[
			import mx.controls.dataGridClasses.DataGridColumn;

			/* Number of milliseconds in a day. (1000 milliseconds per second * 60 seconds per minute * 60 minutes per hour * 24 hours per day) */
			private const MS_PER_DAY:uint = 1000 * 60 * 60 * 24;

			[Bindable]
			private var startDate:Date = new Date();
			
			[Bindable]
			private var endDate:Date = new Date(startDate.fullYear + 1, startDate.month, startDate.date);
			
			/* Default label function for the DataGrid. Basically just calls the DateFormatter on the current column's contents. */
			private function cellDateFormatter(item:Object, column:DataGridColumn):String {
				var columnDataField:String = column.dataField;
				return dateFormatter.format(item[columnDataField]);
			}
			
			/* Custom label function for the last column. Calculates the number of days between the start date and end date. */
			private function calculateDays(item:Object, column:DataGridColumn):String {
				var tempDate:Date = new Date(item.rangeEnd - item.rangeStart);
				return Math.round((tempDate.time / MS_PER_DAY) + 1).toString();
			}
		]]>
	</mx:Script>
	
	<mx:DateFormatter id="dateFormatter" formatString="MMM D, YYYY" />
	
	<mx:HBox>
		<mx:DateChooser id="dateChooser" selectableRange="{{rangeStart:startDate, rangeEnd:endDate}}" allowMultipleSelection="true" />

		<mx:DataGrid id="selDates" dataProvider="{dateChooser.selectedRanges}" labelFunction="cellDateFormatter" verticalScrollPolicy="on" height="{dateChooser.height}">
			<mx:columns>
				<mx:DataGridColumn dataField="rangeStart" headerText="Range Start:" />
				<mx:DataGridColumn dataField="rangeEnd" headerText="Range End:" />
				<mx:DataGridColumn labelFunction="calculateDays" headerText="Number Days:" />
			</mx:columns>
		</mx:DataGrid>
	</mx:HBox>

</mx:Application>
