public function __construct($Schema = false, $ResetOnValidate = false)
{
if (is_object($Schema) || is_array($Schema)) {
$this->setSchema($Schema);
}
$this->setResetOnValidate($ResetOnValidate);
// Define the default validation functions
$this->_Rules = array();
$this->addRule('Required', 'function:ValidateRequired');
$this->addRule('RequiredArray', 'function:ValidateRequiredArray');
$this->addRule('Email', 'function:ValidateEmail');
$this->addRule('WebAddress', 'function:ValidateWebAddress');
$this->addRule('Username', 'function:ValidateUsername');
$this->addRule('UrlString', 'function:ValidateUrlString');
$this->addRule('UrlStringRelaxed', 'function:ValidateUrlStringRelaxed');
$this->addRule('Date', 'function:ValidateDate');
$this->addRule('Integer', 'function:ValidateInteger');
$this->addRule('Boolean', 'function:ValidateBoolean');
$this->addRule('Decimal', 'function:ValidateDecimal');
$this->addRule('String', 'function:ValidateString');
$this->addRule('Time', 'function:ValidateTime');
$this->addRule('Timestamp', 'function:ValidateDate');
$this->addRule('Length', 'function:ValidateLength');
$this->addRule('Enum', 'function:ValidateEnum');
$this->addRule('MinimumAge', 'function:ValidateMinimumAge');
$this->addRule('Captcha', 'function:ValidateCaptcha');
$this->addRule('Match', 'function:ValidateMatch');
$this->addRule('Strength', 'function:ValidateStrength');
$this->addRule('OldPassword', 'function:ValidateOldPassword');
$this->addRule('Version', 'function:ValidateVersion');
$this->addRule('PhoneNA', 'function:ValidatePhoneNA');
$this->addRule('PhoneInt', 'function:ValidatePhoneInt');
$this->addRule('ZipCode', 'function:ValidateZipCode');
$this->addRule('Format', 'function:ValidateFormat');
$this->addRule('Url', 'function:ValidateUrl');
}