1 /**
  2  * @author Gillis Haasnoot <gillis.haasnoot@gmail.com>
  3  * @package Banana.Controls
  4  * @summary Required field validator
  5  */
  6 
  7 goog.provide('Banana.Controls.Decorators.RequiredFieldValidator');
  8 
  9 goog.require('Banana.Controls.Decorators.Validator');
 10 
 11 /** @namespace Banana.Controls.Decorators.RequiredFieldValidator  */
 12 namespace('Banana.Controls.Decorators').RequiredFieldValidator = Banana.Controls.Decorators.Validator.extend(
 13 /** @lends Banana.Controls.Decorators.RequiredFieldValidator.prototype */
 14 {
 15 	/**
 16 	 * Creates a required field validator. All controls  which are validated should supply data in 
 17 	 * string, array or object format. empty string or empty array will not pass the validation
 18 	 * 
 19 	 * @param {Banana.Controls.InputControl} controlToValidate
 20 	 * @constructs
 21 	 * @extends Banana.Controls.Decorators.Validator
 22 	 */
 23 	init : function(controlToValidate)
 24 	{
 25 		this._super(controlToValidate);
 26 		this.setInfoText('Field required');
 27 	},
 28 	
 29 	/**
 30 	 * @override
 31 	 * @param {mixed} data to validate
 32 	 * @return {Boolean}
 33 	 */
 34 	validateData : function(data)
 35 	{
 36 		if (data instanceof Array)
 37 		{
 38 			if (data.length > 0)
 39 			{
 40 				return true;
 41 			}
 42 
 43 			return false;
 44 		}
 45 		
 46 		if (data == null || data == undefined)
 47 		{
 48 			return false;
 49 		}
 50 		
 51 		data = data.toString();
 52 		
 53 		if (/^\s*$/.test(data)) return false;
 54 		
 55 		return true;
 56 	}
 57 });