<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,15 +1,15 @@
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 &lt;actionScriptProperties mainApplicationPath=&quot;Pomodo.mxml&quot; version=&quot;3&quot;&gt;
 &lt;compiler additionalCompilerArguments=&quot;-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored&quot; copyDependentFiles=&quot;true&quot; enableModuleDebug=&quot;true&quot; generateAccessible=&quot;false&quot; htmlExpressInstall=&quot;true&quot; htmlGenerate=&quot;true&quot; htmlHistoryManagement=&quot;true&quot; htmlPlayerVersion=&quot;9.0.28&quot; htmlPlayerVersionCheck=&quot;true&quot; outputFolderPath=&quot;public/bin&quot; rootURL=&quot;http://localhost:3000/bin&quot; sourceFolderPath=&quot;app/flex&quot; strict=&quot;true&quot; useApolloConfig=&quot;false&quot; verifyDigests=&quot;true&quot; warn=&quot;true&quot;&gt;
-  &lt;compilerSourcePath/&gt;
-  &lt;libraryPath defaultLinkType=&quot;1&quot;&gt;
-    &lt;libraryPathEntry kind=&quot;4&quot; path=&quot;&quot;/&gt;
-    &lt;libraryPathEntry kind=&quot;1&quot; linkType=&quot;1&quot; path=&quot;lib&quot;/&gt;
-  &lt;/libraryPath&gt;
-  &lt;sourceAttachmentPath/&gt;
+&lt;compilerSourcePath/&gt;
+&lt;libraryPath defaultLinkType=&quot;1&quot;&gt;
+&lt;libraryPathEntry kind=&quot;4&quot; path=&quot;&quot;/&gt;
+&lt;libraryPathEntry kind=&quot;1&quot; linkType=&quot;1&quot; path=&quot;lib&quot;/&gt;
+&lt;/libraryPath&gt;
+&lt;sourceAttachmentPath/&gt;
 &lt;/compiler&gt;
 &lt;applications&gt;
-  &lt;application path=&quot;Pomodo.mxml&quot;/&gt;
+&lt;application path=&quot;Pomodo.mxml&quot;/&gt;
 &lt;/applications&gt;
 &lt;modules/&gt;
 &lt;buildCSSFiles/&gt;</diff>
      <filename>.actionScriptProperties</filename>
    </modified>
    <modified>
      <diff>@@ -27,13 +27,19 @@
       }
       
       private function signUp():void {
-        var account:Account = new Account;
-        account.login = signUpUsername.text;
-        account.email = signUpEmail.text;
-        account.password = signUpPassword.text;
-        account.passwordConfirmation = signUpPasswordConfirmation.text;
-        account.attachment = photo;
-        account.create(onSignUp);
+        signUpClientUsernameValidator.validate(signUpUsername.text);
+        signUpClientEmailValidator.validate(signUpEmail.text);
+        signUpClientPasswordValidator.validate(signUpPasswordConfirmation.text);
+        
+        if (!signUpFormDirty) {
+          var account:Account = new Account;
+          account.login = signUpUsername.text;
+          account.email = signUpEmail.text;
+          account.password = signUpPassword.text;
+          account.passwordConfirmation = signUpPasswordConfirmation.text;
+          account.attachment = photo;
+          account.create(onSignUp);
+        }
       }
       
       private function onLoginSuccess(result:User):void {
@@ -90,18 +96,23 @@
   &lt;mx:Fade id=&quot;showEffect&quot; duration=&quot;300&quot; alphaFrom=&quot;0&quot; alphaTo=&quot;1&quot;/&gt;
   
   &lt;!-- Flex Validators --&gt;
-  &lt;mx:StringValidator source=&quot;{signUpUsername}&quot; property=&quot;text&quot; 
-        minLength=&quot;1&quot; invalid=&quot;signUpFormDirty = true&quot;/&gt;
-  &lt;mx:EmailValidator source=&quot;{signUpEmail}&quot; property=&quot;text&quot; invalid=&quot;signUpFormDirty = true&quot;/&gt;
-  &lt;mx:RegExpValidator source=&quot;{signUpPasswordConfirmation}&quot; 
-    property=&quot;text&quot; expression=&quot;{signUpPassword.text}&quot; noMatchError=&quot;Passwords do not match&quot;
-    invalid=&quot;signUpFormDirty = true&quot; valid=&quot;signUpFormDirty = false&quot;/&gt;
+  &lt;mx:StringValidator id=&quot;signUpClientUsernameValidator&quot; source=&quot;{signUpUsername}&quot; property=&quot;text&quot; 
+    minLength=&quot;1&quot; invalid=&quot;signUpFormDirty = true&quot;
+    trigger=&quot;{signUpUsername}&quot; triggerEvent=&quot;focusOut&quot;/&gt;
+  &lt;mx:EmailValidator id=&quot;signUpClientEmailValidator&quot; source=&quot;{signUpEmail}&quot; property=&quot;text&quot; invalid=&quot;signUpFormDirty = true&quot;
+    trigger=&quot;{signUpEmail}&quot; triggerEvent=&quot;focusOut&quot;/&gt;
+  &lt;mx:RegExpValidator id=&quot;signUpClientPasswordValidator&quot; source=&quot;{signUpPasswordConfirmation}&quot; 
+    property=&quot;text&quot; expression=&quot;^{signUpPassword.text}$&quot; noMatchError=&quot;Passwords do not match&quot;
+    invalid=&quot;signUpFormDirty = true&quot; valid=&quot;signUpFormDirty = false;&quot;
+    trigger=&quot;{signUpPasswordConfirmation}&quot; triggerEvent=&quot;keyDown&quot;/&gt;
   
   &lt;!-- Proxies for Rails Validators --&gt;
   &lt;validators:ServiceErrorValidator id=&quot;signUpLoginNameValidator&quot; field=&quot;login&quot; listener=&quot;{signUpUsername}&quot; 
      serviceErrors=&quot;{Rx.models.errors}&quot;/&gt;
   &lt;validators:ServiceErrorValidator id=&quot;signUpPasswordValidator&quot; field=&quot;password&quot; listener=&quot;{signUpPassword}&quot; 
      serviceErrors=&quot;{Rx.models.errors}&quot;/&gt;
+  &lt;validators:ServiceErrorValidator id=&quot;emailValidator&quot; field=&quot;email&quot; listener=&quot;{signUpEmail}&quot; 
+     serviceErrors=&quot;{Rx.models.errors}&quot;/&gt;
 
   &lt;mx:ViewStack height=&quot;100%&quot; width=&quot;100%&quot; id=&quot;views&quot;&gt;
     &lt;mx:Canvas id=&quot;loginView&quot; width=&quot;100%&quot; height=&quot;100%&quot; hideEffect=&quot;{hideEffect}&quot; showEffect=&quot;{showEffect}&quot;&gt;
@@ -147,7 +158,7 @@
           &lt;mx:Label text=&quot;{photoFileName}&quot; maxWidth=&quot;190&quot; /&gt;
         &lt;/mx:FormItem&gt;
         &lt;mx:FormItem label=&quot;&quot;&gt;
-          &lt;mx:Button label=&quot;Sign Up&quot; click=&quot;signUp()&quot; keyDown=&quot;signUpOnEnter(event)&quot; enabled=&quot;{!signUpFormDirty}&quot;/&gt;  
+          &lt;mx:Button id=&quot;signUpButton&quot; label=&quot;Sign Up&quot; click=&quot;signUp()&quot; keyDown=&quot;signUpOnEnter(event)&quot;/&gt;  
         &lt;/mx:FormItem&gt;
       &lt;/mx:Form&gt;
       &lt;mx:Text text=&quot;Already have an account?&quot; verticalCenter=&quot;158&quot; horizontalCenter=&quot;-77&quot;/&gt;</diff>
      <filename>app/flex/pomodo/components/login/LoginScreen.mxml</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>lib/restfulx-1.2.2.swc</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>public/bin/Pomodo.swf</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7e1fa06ec97fe30cecd5b4c2ed44d303d13afce0</id>
    </parent>
  </parents>
  <author>
    <name>Dima Berastau</name>
    <email>dima.berastau@gmail.com</email>
  </author>
  <url>http://github.com/dima/pomodo_on_rails/commit/b99c6058e1484f8002d8f613550331a9ce7f6158</url>
  <id>b99c6058e1484f8002d8f613550331a9ce7f6158</id>
  <committed-date>2009-05-18T16:43:20-07:00</committed-date>
  <authored-date>2009-05-18T16:43:20-07:00</authored-date>
  <message>Improving validators.</message>
  <tree>aacb2451e2ca0f03dc1d42b1fe8f401160450b5b</tree>
  <committer>
    <name>Dima Berastau</name>
    <email>dima.berastau@gmail.com</email>
  </committer>
</commit>
