1 // ==========================================================================
  2 // Project:   The M-Project - Mobile HTML5 Application Framework
  3 // Copyright: (c) 2010 M-Way Solutions GmbH. All rights reserved.
  4 // Creator:   Sebastian
  5 // Date:      22.11.2010
  6 // License:   Dual licensed under the MIT or GPL Version 2 licenses.
  7 //            http://github.com/mwaylabs/The-M-Project/blob/master/MIT-LICENSE
  8 //            http://github.com/mwaylabs/The-M-Project/blob/master/GPL-LICENSE
  9 // ==========================================================================
 10 
 11 m_require('core/datastore/validator.js')
 12 
 13 /**
 14  * @class
 15  *
 16  * Validates a String if it represents a valid e-mail adress.
 17  *
 18  * @extends M.Validator
 19  */
 20 M.EmailValidator = M.Validator.extend(
 21 /** @scope M.EmailValidator.prototype */ {
 22 
 23     /**
 24      * The type of this object.
 25      *
 26      * @type String
 27      */
 28     type: 'M.EmailValidator',
 29 
 30     /**
 31      * @type {RegExp} The regular expression for a valid e-mail address
 32      */
 33     pattern: /^((?:(?:(?:\w[\.\-\+]?)*)\w)+)\@((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/,
 34 
 35     /**
 36      * Validation method. Executes e-mail regex pattern to string. 
 37      *
 38      * @param obj Parameter object. Contains the value to be validated, the {@link M.ModelAttribute} object of the property and the model record's id.
 39      * @returns {Boolean} Indicating whether validation passed (YES|true) or not (NO|false).
 40      */
 41     validate: function(obj) {
 42         if (typeof(obj.value !== 'string')) {
 43             return NO;
 44         }
 45         
 46         if (this.pattern.exec(obj.value)) {
 47             return YES;
 48         }
 49         this.validationErrors.push({
 50             msg: obj.value + ' is not a valid email adress.',
 51             modelId: obj.modelId,
 52             property: obj.property,
 53             viewId: obj.viewId,
 54             validator: 'EMAIL',
 55             onSuccess: obj.onSuccess,
 56             onError: obj.onError
 57         });
 58         return NO;
 59     }
 60     
 61 });