
//class CakeValidationRule
function CakeValidationRule( pattern, message ) {
	this.pattern = pattern;
	this.message = message;
}
//class CakeValidationRule methods
CakeValidationRule.prototype.getPattern = function () { return this.pattern; };
CakeValidationRule.prototype.setPattern = function ( value ) { this.pattern = value; };

CakeValidationRule.prototype.getMessage = function () { return this.message; };
CakeValidationRule.prototype.setMessage = function ( value ) { this.message = value; };

CakeValidationRule.prototype.validate = function ( value ) { 
	if( ! this.pattern.test(value) ) {
		return this.message;
	}
	return '';
};


//class CakeField
function CakeField(name) {
	this.name = name;
	this.validationRules = new Array();
}

//class CakeField public methods
CakeField.prototype.getName = function () { return this.name; };
CakeField.prototype.setName = function ( value ) { this.name = value; };

CakeField.prototype.addValidationRule = function ( pattern, message ) { 
	this.validationRules[pattern] = new CakeValidationRule(pattern, message);
};

CakeField.prototype.deleteValidationRule = function ( pattern ) { 
	if ( this.validationRules[pattern] ) {
		this.validationRules[pattern] = null;
	}
};

CakeField.prototype.clearAllValidationRules = function ( ) { 
		this.validationRules = new Array();
};

CakeField.prototype.getMessage = function ( deliminator ) { 

	message = '';
	for( rule in this.validationRules ) {
		msg = this.validationRules[rule].getMessage() + deliminator;
		if ( msg ) {
			message += msg + deliminator;
		}
	}
	return message;
};

CakeField.prototype.validate = function ( value , deliminator) { 
	message = '';
	for( rule in this.validationRules ) {
		try {
			msg = this.validationRules[rule].validate(value);
		} catch(e) {
			msg = null ;
		}

		if ( msg ) {
			message += msg + deliminator;
		}
	}
	return message;
};

