<?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:Application 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[
        
            import mx.formatters.SwitchSymbolFormatter;                
            import mx.events.ValidationResultEvent;			
            
            private var vResult:ValidationResultEvent;

            // Event handler to validate and format input.            
            private function Format():void
            {
                vResult = scVal.validate();

                if (vResult.type==ValidationResultEvent.VALID) {
                    var switcher:SwitchSymbolFormatter=new SwitchSymbolFormatter('#');

                    formattedSCNumber.text = 
                        switcher.formatValue("###-##-####", scNum.text);
                }

                else {
                    formattedSCNumber.text= "";
                }
            }
        ]]>
    </fx:Script>
    
	<fx:Declarations>
		<mx:SocialSecurityValidator id="scVal" source="{scNum}" property="text"/>
	</fx:Declarations>
   
        
	<s:Panel title="SwitchSymbolFormatter Example" width="100%" height="100%">
		
		<s:layout>
			<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"/>
		</s:layout>
         
         <mx:Form width="100%">
         	<s:Label text="Enter a 9 digit Social Security number with no separator characters:" />
         	
         	<s:TextInput id="scNum" text="" width="50%" maxChars="9"/>
            <s:Button label="Validate and Format" click="Format()"/>
			
            <mx:FormItem label="formatted Social Security number:">
                <s:Label id="formattedSCNumber" text="" />
            </mx:FormItem>
        </mx:Form>
        
	</s:Panel>
	
</s:Application>
