1 goog.provide('Banana.Util.ValidationManager');
  2 
  3 /**
  4  * Validation manager. Helper to centralize validators
  5  * 
  6  * @constructor
  7  */
  8 Banana.Util.ValidationManager = function()
  9 {
 10 	var validators = [];
 11 
 12 	function hasValidator(validator)
 13 	{
 14 		for (i = 0,len = validators.length; i < len; i++)
 15 		{
 16 			if (validators[i].id == validator.id)
 17 			{
 18 				return true;
 19 			}
 20 		}
 21 
 22 		return false;
 23 	}
 24 
 25 	return( {
 26 
 27 		/**
 28 		 * adds a validator to the manager
 29 		 * 
 30 		 * @param {Banana.Controls.Decorators.Validator} validator
 31 		 */
 32 		addValidator : function(validator)
 33 		{
 34 			if (!hasValidator(validator))
 35 			{
 36 				validators.push(validator);
 37 			}
 38 		},
 39 		
 40 		/**
 41 		 * @return {boolean} true when validator exists in manager
 42 		 * 
 43 		 * @param {Banana.Controls.Decorators.Validator} validator
 44 		 */
 45 		hasValidator : function(validator)
 46 		{
 47 			if (validators.indexOf(validator) == -1) return false;
 48 			
 49 			return true;
 50 		},
 51 
 52 		/**
 53 		 * removes validator
 54 		 * 
 55 		 * @param {Banana.Controls.Decorators.Validator} validator
 56 		 */
 57 		removeValidator : function(validator)
 58 		{
 59 			var iOfV = validators.indexOf(validator);
 60 
 61 			validators.splice(iOfV,i);
 62 		},
 63 
 64 		/**
 65 		 * removes all validators
 66 		 */
 67 		removeValidators : function()
 68 		{
 69 			validators = [];
 70 		},
 71 		
 72 		/**
 73 		 * validates specific validator
 74 		 * 
 75 		 * @param {Banana.Controls.Decorators.Validator} validator
 76 		 */
 77 		validate : function(validator)
 78 		{
 79 			return validator.isValid();
 80 		},
 81 
 82 		/**
 83 		 * validates all added validators
 84 		 */
 85 		validateAll : function()
 86 		{
 87 			var ok = true;
 88 
 89 			for (i = 0,len = validators.length; i < len; i++)
 90 			{
 91 				if (!validators[i] || !validators[i].id)
 92 				{
 93 					continue;
 94 				}
 95 	
 96 				if (!validators[i].isValid())
 97 				{
 98 					ok = false;
 99 				}
100 			}
101 			return ok;
102 		}
103 	});
104 }()