Validator=function(){
  var mRules=new Array()
  this.addRule=function(pRuleParams) {
    mRules[mRules.length]=pRuleParams;
  }
  this.removeRule=function(pRuleId){
    var lPosition=this.getRulePosition(pRuleId);
    mRules.splice(lPosition,1);
  }
  this.getRulePosition=function(pRuleId){
    for (i=0;i<mRules.length;i++) {
      if (mRules[i].id==pRuleId) {
        return i;
      }
    }
    return false;
  }
  this.applyRules=function(){
    var lIsValid=true;
    for (var i=0;i<mRules.length;i++) {
      var lValidation=mRules[i].fnc(mRules[i].obj);
      if (!lValidation) {
        lIsValid=false;
        mRules[i].status=false;
      } else {
        mRules[i].status=true;
      }
    }
    
    return lIsValid;
  }
  this.getNoValidRules=function(){
    var lAux=Array();
    for (i=0;i<mRules.length;i++) {
      if (mRules[i].status==false){
        lAux[lAux.length]=mRules[i];
      }
    }
    return lAux;
  }
}
