<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        initialize="init();" viewSourceURL="srcview/index.html">

    <mx:Style>
        @font-face {
            src: local("Verdana");
            fontFamily: VerdanaEmbedded;
            fontWeight: bold;
        }
        
        .errorMessage {
            fontFamily: VerdanaEmbedded;
            fontWeight: bold;
        }
        
        .validTextInputStyle {
            backgroundAlpha: 0.6;
            backgroundColor: haloGreen;
        }
        
        .invalidTextInputStyle {
            backgroundAlpha: 0.3;
            backgroundColor: red;
        }
    </mx:Style>

    <mx:Script>
        <![CDATA[
            import mx.validators.EmailValidator;
            import mx.controls.Alert;
            import mx.events.ValidationResultEvent;

            private var emailValidator:EmailValidator;
            
            private function init():void {
                emailValidator = new EmailValidator();
                emailValidator.source = textInput;
                emailValidator.property = "text";
                emailValidator.trigger = btn;
                emailValidator.triggerEvent = MouseEvent.CLICK;
                emailValidator.addEventListener(ValidationResultEvent.VALID, emailValidator_valid);
                emailValidator.addEventListener(ValidationResultEvent.INVALID, emailValidator_invalid);
            }

            private function emailValidator_valid(evt:ValidationResultEvent):void {
                textInput.errorString = "";
                textInput.styleName = "validTextInputStyle";
                Alert.show(textInput.text, "You entered a valid email address:");
            }

            private function emailValidator_invalid(evt:ValidationResultEvent):void {
                textInput.errorString = evt.message;
                textInput.styleName = "invalidTextInputStyle";
                message.visible = true;
                message.text = evt.message;
                message.visible = false;
            }
        ]]>
    </mx:Script>

    <mx:Fade id="dissolveEffect"
            startDelay="1500"
            alphaFrom="1.0"
            alphaTo="0.0" />

    <mx:Form defaultButton="{btn}">
        <mx:FormItem label="email address:"
                direction="horizontal">
            <mx:TextInput id="textInput"
                    focusAlpha="0.5" />
            <mx:Button id="btn"
                    label="validate" />
        </mx:FormItem>
    </mx:Form>
    <mx:Label id="message"
            styleName="errorMessage"
            hideEffect="{dissolveEffect}" />

</mx:Application>