jQuery.validator.addMethod('dataBR', function(value, element) {
	var dataBR = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
	if (dataBR.test(value)) {
		var ano = parseInt(value.split('/')[2]);
		if (ano >=1900 && ano <=2100) {
			return true;
		} else {
			return false;
		}
	}
	else {
		return false;
	}
}, 'Por favor, entre com uma data no formato dd/mm/yyyy.');

jQuery.validator.addMethod('cpf', function(value, element,param) {
	if (param.condicao != 0 && eval(param.elTamanho) != param.condicao){
		return true;
	}
	var CPF = value;
    var valido = true;
	var a = [];
    var b = new Number;
    var c = 11;
	var nonNumbers = /\D/;

    if (!(CPF.length == 11) && !(CPF.length == 14)) {
		valido = false;
	}

	if (CPF.length == 14) {
     	CPF = CPF.replace (".","");
		CPF = CPF.replace (".","");
     	CPF = CPF.replace ("-","");
	}

    if (nonNumbers.test(CPF)) {
		valido = false;
	}

    if (CPF == "00000000000" || CPF == "11111111111" || CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" || CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" || CPF == "88888888888" || CPF == "99999999999"){
        valido = false;
    }

    for (i=0; i<11; i++){
          a[i] = CPF.charAt(i);
          if (i < 9) b += (a[i] * --c);
     }
     if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
     b = 0;
     c = 11;
     for (y=0; y<10; y++) b += (a[y] * c--);
     if ((x = b % 11) < 2) {
	 	a[10] = 0;
	 }
	 else {
	 	a[10] = 11-x;
	}
     if ((CPF.charAt(9) != a[9]) || (CPF.charAt(10) != a[10])){
         valido = false;
      }
      return valido;
}, 'Entre com um CPF.');

jQuery.validator.addMethod('cnpj', function(value, element,param) {
	if (param.condicao != 0 && eval(param.elTamanho) != param.condicao){
		return true;
	}
	var CNPJ = value;
	var valido = true;
	var nonNumbers = /\D/;
	var a = [];
    var b = new Number;
    var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];

    if (!(CNPJ.length == 18) && !(CNPJ.length == 14)) {
    	valido = false;
    }

    if ((CNPJ.length == 18) && ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))){
    	valido = false;
     }

	 if (CNPJ == '00.000.000/0000-00' || CNPJ == '00000000000000') {
	 	valido = false;
	 }
     //substituir os caracteres que n„o s„o n˙meros
     if (CNPJ.length == 18) {
	 	CNPJ = CNPJ. replace (".","");
     	CNPJ = CNPJ. replace (".","");
     	CNPJ = CNPJ. replace ("-","");
     	CNPJ = CNPJ. replace ("/","");
	 }

     if (nonNumbers.test(CNPJ)) valido = false;

     for (i=0; i<12; i++){
         a[i] = CNPJ.charAt(i);
         b += a[i] * c[i+1];
     }
     if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
     b = 0;
     for (y=0; y<13; y++) {
         b += (a[y] * c[y]);
     }
     if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
     if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
         valido = false;
     }

     return valido;
}, 'Por favor, entre com um CNPJ valido.');

jQuery.validator.addMethod('hora', function(value, element) {
	var hora = /^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/;
	return hora.test(value);
}, 'Por favor, entre com uma hora valida.');