$(function(){
// INICIO - adicionar métodos no validate
	//adicionar método de verificação de data
	jQuery.validator.addMethod("dateBR", function(value, element) {
		var v = value.split('/');
		return	/^\d{1,2}[\/]\d{1,2}[\/]\d{4}$/.test(value)
				&& v[0] > 0 && v[0] <= 31
				&& v[1] > 0 && v[1] <= 12 && !((v[1]==4 || v[1]==5 || v[1]==9 || v[1]==11) && v[0]==31) && !(v[0] > 29 && v[1]==2)
				&& v[2] != 0000;
	}, "Data Inválida");
	
	jQuery.validator.addMethod("emailMultiple", function(value, element) {
		var values = value.replace(/,/g,";");
		var value = values.split(";");
		var testEmail = new Array();
		
		for(i=0; value.length > i; i++){
	    	testEmail.push(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value[i]));
	    }		
	}, "Email inválido");
	//adicionar método de verificação de campo: é requirido se outro é preenchido
	jQuery.validator.addMethod("requiredIf", function(value, element, param) {
       if((value == "" && $(param).val()!="" && !$(param).attr("type")=="checkbox") || (value == "" && $(param).get(0).checked))
            return false;
       return true;               
	});
	//adicionar método de verificação de campo: é requirido se outro é preenchido
	jQuery.validator.addMethod("caracteresEspeciais", function(value, element) {
		var regExp =/([@#$%&*\[\]\{\}])/g;
		var res = (value.search(regExp)==-1)?true:false;
		return res;
	});
	//adicionar método de verificação de campo: é requirido se outro é preenchido
	jQuery.validator.addMethod("maxDate", function(value, element,param) {
		var v = value.split('/');
		var date = new Date(v[2],v[1]-1,v[0]);
		
		return (param > date);
	});
	//adicionar método de verificação de senha
	jQuery.validator.addMethod("senha", function(value, element) {
		var soma = 0;
	    for(i=0; i<=value.length-2; i++){
	        if(parseInt(value.charAt(i))+1 == parseInt(value.charAt(i+1))) soma++;
	    }
		
		var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
		
	  	if(value.match(expReg) || soma == value.length-1) return false;
		return true;
		
	}, "Não utilize repetições de algarismos ou sequências, como 0000000 e 123456");
	
	//adicionar método de verificação de CPF
	jQuery.validator.addMethod("verificaCPF", function(value, element) {
		cpf = value;
		
		while(cpf.length < 11) cpf = "0"+ cpf;
		
		var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
		
		var a = [];
		var b = new Number;
		var c = 11;
		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]) || cpf.match(expReg)) return false;
		return true;
		
	}, "CPF inválido");
	
	// Não valida se for igual
	jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
	  return this.optional(element) || value != param;
	}, "Por favor, especifique um valor diferente");

	
// FIM - adicionar métodos no validate
	
})


