//class SimpleValidator(object HTMLFormElement form)
var SimpleValidator = function(form) {
  this._form = form;
  this._filters = [];
  
  //public function addFilter(mixed arguments)
  this.addFilter = function() {
    var fname = "this._"+arguments[0]+"(";
    var arg = 0;
    while(arguments[++arg]) fname += "'"+arguments[arg]+"',";
    fname = fname.substring(0, fname.length-1)+")";
    this._filters.push(fname);
  };
  
  //public function validate()
  this.validate = function() {
    for(filter in this._filters) {
      if(!eval(this._filters[filter])) return false;
    }
    return true;
  };
  
  //private function _getField(string fieldname)
  this._getField = function(fieldname) { return this._form.elements[fieldname]; };
  
  //private function _email(string fieldname, string label, int min, int max)
  this._email = function(fieldname, label, min, max) {
	if(this._string(fieldname, label, min, max)) {
	  var field = this._getField(fieldname);
	  try { Validate.email(field.value.trim(), label) }
	  catch(err) { alert(err); field.focus(); return false; }
	  return true;
	}
	return false;
  };
  
  //private function _string(string fieldname, string label, int min, int max)
  this._string = function(fieldname, label, min, max) {
    var field = this._getField(fieldname);
    try { Validate.string(field.value.trim(), label, min, max); }
    catch(err) { alert(err); field.focus(); return false; }
    return true;
  };
}

