<?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: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"
			   xmlns:a="http://flex.apache.org/ns">
	<s:layout>
		<s:HorizontalLayout verticalAlign="middle" horizontalAlign="center" />
	</s:layout>
	
	<fx:Script>
		<![CDATA[	
			import org.apache.flex.validators.PostCodeValidator;
			
			import mx.controls.Alert;
			
			protected function validatePostCode(event:MouseEvent):void
			{
				if (aust.selected) {
					checkAustralianPostCode(postcode.text);
				}
				else if (uk.selected) {
					checkUKPostCode(postcode.text);
				}
				else if (can.selected) {
					checkCanadianPostCode(postcode.text);
				}
			}
			
			public function checkAustralianPostCode(postcode:String):void {
				validator.formats = ["NNNN"];
			}
				
			public function checkUKPostCode(postcode:String):void {
				validator.formats = ["AN NAA", "ANN NAA", "AAN NAA", "ANA NAA", "AANN NAA", "AANA NAA"];
			}
			
			public function checkCanadianPostCode(postcode:String):void {
				validator.format = "ANA NAN";
			}
		]]>
	</fx:Script>
	
	
	<fx:Declarations>
		<a:PostCodeValidator id="validator" source="{postcode}" property="text" 
					   trigger="{checkPostcode}" triggerEvent="click"
					   invalid="Alert.show('Postcode incorrect format!', 'Postcode')"/>
	</fx:Declarations>
		
	
	<s:Panel title="Postcode Validator Example" width="100%" height="100%">		
		<s:layout>
			<s:VerticalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"/>
		</s:layout>
		<s:HGroup verticalAlign="middle">
			<s:Label text="Postcode" />
			<s:TextInput id="postcode" text=""/>
		</s:HGroup>
		<s:HGroup verticalAlign="middle">
			<s:Label text="Country" />
			<s:RadioButton id="aust" label="Australia" selected="true" />	
			<s:RadioButton id="uk" label="UK" />	
			<s:RadioButton id="can" label="Canada" />
		</s:HGroup>
		<s:Button id="checkPostcode" label="Validate Postcode" click="validatePostCode(event)" />
	</s:Panel>
</s:Module>
