<?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.

-->
<s:Group 
    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:Declarations>
        <s:DateTimeFormatter id="dtFormatterNoLocaleInline" errorText="#####"/>
        <s:DateTimeFormatter id="dtFormatter" locale="xx"/>
        <s:DateTimeFormatter id="dtFormatterShortDate" dateStyle="short"/>    
        <s:DateTimeFormatter id="dtFormatterShortTime" timeStyle="short"/>
        <s:DateTimeFormatter id="dtFormatterPattern" dateTimePattern="EEEE, MMMM. d, yyyy 'at' h:mm a"/>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            [Bindable]
            private var aDate:Date = new Date(2000,0,1);
			
			
        ]]>
    </fx:Script>
    <mx:Form width="370" x="0" y="0" height="59">
        <s:Label text="format - dateStyle and timeStyle:" x="9" y="110"/>
		<s:Label id="getLocale" text="{getStyle('locale')}" />
        <mx:FormItem label="dateShort">
            <s:TextInput id="dateShort" text="{dtFormatterShortDate.format(aDate)}"  width="210"/>
        </mx:FormItem>
        <mx:FormItem label="timeShort">
            <s:TextInput id="timeShort" text="{dtFormatterShortTime.format(aDate)}"  width="200"/>
        </mx:FormItem>    
    </mx:Form>
</s:Group>
