package com.imt.intimamedia.helpers { import mx.validators.StringValidator; import mx.validators.ValidationResult; [Bindable] public class PasswordValidator extends StringValidator { public function PasswordValidator() { super(); } private var _originalPassword : String = ""; private var _message : String = ""; [Inspectable(category="General", defaultValue="null")] /** * Mot de passe original à comparer * * @default "" */ public function get originalPassword() : String { return _originalPassword; } /** * @private */ public function set originalPassword( value : String ) : void { _originalPassword = value; } /** * Message à afficher en cas d'erreur * * @default "" */ public function get message() : String { return _message; } /** * @private */ public function set message( value : String ) : void { _message = value; } private static function validatePassword(validator:PasswordValidator, value:String, valueToCompare:String, message:String, baseField:String = null) : Array { var results:Array = new Array(); if( value != valueToCompare ) results.push(new ValidationResult(true, baseField, "differentPassword", message)); return results; } override protected function doValidation( value : Object ) : Array { var results : Array = super.doValidation( value ); //return if there are errors //or if the required property is set to false and length is 0 var val : String = value ? String( value ) : ""; if( results.length > 0 || ( ( val.length == 0 ) && !required ) ) return results; else return PasswordValidator.validatePassword(this, (value as String), originalPassword, message, null); } } }