// -------------------------------------------------------------------------
// Valida se dado é do tipo numérico. Tipo de retorno boolean.
	
function vNumero(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	if(isNaN(valor)) {
		return false;
	}

	return true;
}

// -------------------------------------------------------------------------
// Valida string. Tipo de retorno boolean.

function vString(valor, nulo, tMin, tMax) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}

	if((valor.length < tMin) || (valor.length > tMax)) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida cep. Tipo de retorno boolean.

function vCep(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}

	var p1 = valor.slice(0,5);
	var p2 = valor.slice(6,9);
	
	if((isNaN(p1)) || (isNaN(p2))) {
		return false;
	}
	
	if((valor.indexOf("-") == -1)) {
		return false;
	}
	
	if(vString(valor,0,9,9) == false) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida email. Tipo de retorno boolean.

function vEmail(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	arr_teste = valor.split("@");
	
	if(arr_teste.length != 2) {
		return false;	
	}
	
	if((valor.indexOf("@") == -1) || (valor.indexOf(".") == -1)) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida Telefones. Tipo de retorno boolean.

function vTel(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}

	if(valor.indexOf("-") == -1) {
		return false;
	}
	
	if(vString(valor,0,8,16) == false) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida senha, verifica confirmação de senha. Tipo de retorno boolean.

function vSenha(valor,verificador) {
	if(vString(valor,0,3,16) == false) {
		return false;
	}

	if(valor != verificador) {
		return false;
	}

	return true;
}

// -------------------------------------------------------------------------
// Valida CPF. Tipo de retorno boolean.

function vCPF(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	valor = valor.replace(".", "");
	valor = valor.replace(".", "");
	valor = valor.replace("/", "");
	valor = valor.replace("-", "");
	
	if(valor.length != 11) {
		return false;
	}

	if(isNaN(valor)) {
		return false;
	}
		
	if((valor == "00000000000") || (valor == "11111111111") || (valor == "22222222222") || (valor == "33333333333") || (valor == "44444444444") || (valor == "55555555555") || (valor == "66666666666") || (valor == "77777777777") || (valor == "88888888888") || (valor == "99999999999")) {
		return false;
	}
	
	var i = 0;
	var soma = 0;
	
	for(i = 0; i < 9; i++) {
		soma = soma + (10 - i) * eval(valor.charAt(i));
	}
	
	var resto = soma % 11;
	var dv1 = 11 - resto;
	
	if(resto < 2) {
		dv1 = 0;
	}
	
	if(eval(valor.charAt(9)) != dv1) {
		return false;
	}
	
	soma = 0;
	
	for(i = 0; i < 9; i++) {
		soma = soma + (11 - i) * eval(valor.charAt(i));
	}
	
	soma = soma + 2 * eval(valor.charAt(9));
	resto = soma % 11;
			
	var dv2 = 11 - resto;
	
	if(resto < 2) {
		dv2 = 0;
	}
		
	if(eval(valor.charAt(10)) != dv2) {
		return false;
	}

	return true;
}

// -------------------------------------------------------------------------
// Valida CNPJ. Tipo de retorno boolean.

function vCNPJ(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	valor = valor.replace(".", "");
	valor = valor.replace(".", "");
	valor = valor.replace("/", "");
	valor = valor.replace("-", "");
	
	if(valor.length != 14) {
		return false;
	}

	if(isNaN(valor)) {
		return false;
	}
		
	if(valor == "00000000000000") {
		return false;
	}
	
	var i = 0;
	var j = 0;
	var parte1 = valor.substring(0,12);
	var parte2 = valor.substring(12,15);
	var fator = "543298765432";
	var controle = "";
	var digito = 0;
	var soma = 0;
		
	for(j = 1; j < 3; j++) {
		soma = 0;
		
		for(i = 0; i < 12; i++) {
			soma = soma + (parte1.charAt(i) * fator.charAt(i));
		} 
	 	
		if(j == 2) {
			soma = soma + (2 * digito);
		}
		
		digito = ((soma * 10) % 11);
		
		if(digito == 10) {
			digito = 0;
		}
		
		controle = controle + digito;
		fator = "654329876543";
	}
	
	if(controle != parte2) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida datas. Tipo de retorno boolean.

function vData(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	if(valor.length != 10) {
		return false;
	}

	var day = valor.slice(0,2);
	var month = valor.slice(3,5);
	var year = valor.slice(6,10);
	
	if((isNaN(day)) || (isNaN(month)) || (isNaN(year))) {
		return false;
	}
		
	if((day < 1) || (day > 31) || (month < 1) || (month > 12) || (year.length != 4)) {
		return false;
	}

	return true;
}

// -------------------------------------------------------------------------
// Valida horário. Tipo de retorno boolean.

function vHora(valor,nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	if(valor.length != 5) {
		return false;
	}

	var hora = valor.slice(0,2);
	var minuto = valor.slice(3,5);
	
	if((isNaN(hora)) || (isNaN(minuto))) {
		return false;
	}
		
	if((hora < 0) || (hora > 23) || (minuto < 0) || (minuto > 59)) {
		return false;
	}

	return true;
}
