// -------------------------------------------------------------------------
// 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 se é tipo MOEDA. Tipo de retorno boolean.
	
function vMoeda(valor, nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	valor = valor.replace(",", "");
	
	if(isNaN(valor)) {
		return false;
	}

	return true;
}

// -------------------------------------------------------------------------
// Valida string. Tipo de retorno boolean.

function vTexto(valor, nulo, t_min, t_max) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}

	if((valor.length < t_min) || (valor.length > t_max)) {
		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(!vTexto(valor, 0, 9, 9)) {
		return false;
	}
	
	return true;
}

// -------------------------------------------------------------------------
// Valida url. Tipo de retorno boolean.

function vUrl(valor, nulo) {
	if(nulo == 0) {
		if(valor == "") {
			return false;
		}
	}
	else {
		if(valor == "") {
			return true;
		}
	}
	
	if(valor.indexOf("http://") == -1) {
		valor = "http://"+valor;
	}
	
	if((valor.indexOf(".") == -1)) {
		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;
		}
	}

	if((valor.indexOf("@") == -1) || (valor.indexOf(".") == -1)) {
		return false;
	}
	
	if(!vTexto(valor, 0, 5, 100)) {
		return false;
	}
	
	return true;
}


// -------------------------------------------------------------------------
// Valida senha, verifica confirmação de senha. Tipo de retorno boolean.

function vSenha(valor, verificador) {
	if(!vTexto(valor, 0, 1, 50)) {
		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(",", "");
	valor = valor.replace("/", "");
	valor = valor.replace("-", "");
	
	if(valor.length != 11) {
		return false;
	}

	if(isNaN(valor)) {
		return false;
	}
		
	if(valor == "00000000000") {
		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("/", "");
	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;
}
