$.validator.addMethod("defaultInvalid", function(value, element, param){
    var r = $(element).rules();
    var req=(this.objectLength(r))?r.required:false;
    return !req || (value!=param);
},$.validator.messages.required);

$.validator.addMethod("cep", function(value, element){
    var exp = /\d{5}\-\d{3}/
    return exp.test(value);
},"CEP inválido");

$.validator.addMethod("cpf", function(value, element){
    var exp = /^\d{3}\.\d{3}\.\d{3}\-\d{2}$/;
    var req;
    if  (exp.test(value)) {
    	req = (VerificaCpf(value));
    } else {
    	req = false;
    }
    return this.optional(element) || req;
},"CPF inválido");

$.validator.addMethod("cnpj", function(value, element){
    var exp = /\d{2,3}.\d{3}.\d{3}\/\d{4}-\d{2}/;
    var req;
    if  (exp.test(value)) {
    	req = (VerificaCnpj(value));
    } else {
    	req = false;
    }
    return this.optional(element) || req;
},"CNPJ inválido");

jQuery.validator.addMethod("dateBR", function(value, element) {
	  var req = true;
	  var data        = value;
	  var dia         = data.substr(0,2);
	  var barra1      = data.substr(2,1);
	  var mes         = data.substr(3,2);
      var barra2      = data.substr(5,1);
      var ano         = data.substr(6,4);
      if(data.length!=10||barra1!="/"||barra2!="/"||isNaN(dia)||isNaN(mes)||isNaN(ano)||dia>31||mes>12)req = false;
      if((mes==4||mes==6||mes==9||mes==11)&&dia==31) req = false;
      if(mes==2 && (dia>29||(dia==29&&ano%4!=0))) req = false;
      if(ano < 1900) req = false;
      
      return this.optional(element) || req;
}, "Data inválida");
