<?xml version="1.0" encoding="utf-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<!-- Simple example to demonstrate the DateField control. -->
<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"  
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx">
	
	<fx:Script>
		<![CDATA[
			
			// Event handler for the DateField change event.
			private function dateChanged(date:Date):void {
				if (date == null)
					selection.text = "Date selected: ";                
				else
					selection.text = "Date selected: " + date.getFullYear().toString() + 
						'/' + (date.getMonth()+1).toString() + '/' + date.getDate();
			}
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<mx:DateFormatter id="df"/>
	</fx:Declarations>
	
	<s:Panel title="DateField Control Example" width="100%" height="100%">

		<s:layout>
			<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"/>
		</s:layout>
		
		<s:BorderContainer width="50%" borderColor="0xDCDCDC" height="100%" borderStyle="solid">
			
			<s:layout>
				<s:VerticalLayout paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"/>
			</s:layout>
			
			<s:Label id="selection" text="Date selected:" />
			
			<mx:DateField id="dateField1" yearNavigationEnabled="true"
						  change="dateChanged(DateField(event.target).selectedDate)" color="0x000000"/>
			
			<s:Label text="Basic DateField:"/>
			
			
			<s:Label width="100%"
					 text="Select a date in the DateField control. Select it again while holding down the Control key to clear it."/>
			
		</s:BorderContainer>
		
		<s:BorderContainer width="50%" borderColor="0xDCDCDC" height="100%" borderStyle="solid">
			
			<s:layout>
				<s:VerticalLayout paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"/>
			</s:layout>
			
			<s:Label text="Date selected: {df.format(dateField2.selectedDate)}"/>
			
			<mx:DateField id="dateField2" yearNavigationEnabled="true" 
						  disabledRanges="{[ {rangeEnd: new Date(2008, 9, 31)} ]}" color="0x000000"/>
			
			<s:Label text="Disable dates on or before Oct 31, 2008."/>
			
		</s:BorderContainer>
		
	</s:Panel>
	
</s:Module>
