// -------------------------------------------------------------------------

// Valida se dado é do tipo numérico. Tipo de retorno boolean.

	

function v_numero(valor, nulo, t_min, t_max) {

	if(nulo == 0) {

		if(valor == "") {

			return false;

		}

	}

	else {

		if(valor == "") {

			return true;

		}

	}

	

	if(isNaN(valor)) {

		return false;

	}

	

	if((valor.length < t_min) || (valor.length > t_max)) {

		return false;

	}

	

	return true;

}



// -------------------------------------------------------------------------

// Valida string. Tipo de retorno boolean.



function v_texto(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 v_cep(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(!v_texto(valor, 0, 9, 9)) {

		return false;

	}

	

	return true;

}



// -------------------------------------------------------------------------

// Valida email. Tipo de retorno boolean.



function v_email(valor, nulo) {

	if(nulo == 0) {

		if(valor == "") {

			return false;

		}

	}

	else {

		if(valor == "") {

			return true;

		}

	}



	if((valor.indexOf("@") == -1) || (valor.indexOf(".") == -1)) {

		return false;

	}

	

	if(!v_texto(valor, 0, 5, 100)) {

		return false;

	}

	

	return true;

}



// -------------------------------------------------------------------------

// Valida Telefones. Tipo de retorno boolean.



function v_tel(valor, nulo) {

	if(nulo == 0) {

		if(valor == "") {

			return false;

		}

	}

	else {

		if(valor == "") {

			return true;

		}

	}



	if(valor.indexOf("-") == -1) {

		return false;

	}

	

	if(!v_texto(valor, 0, 8, 16)) {

		return false;

	}

	

	return true;

}



// -------------------------------------------------------------------------

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



function v_senha(valor, verificador) {

	if(!v_texto(valor, 0, 1, 20)) {

		return false;

	}



	if(valor != verificador) {

		return false;

	}



	return true;

}



// -------------------------------------------------------------------------

// Valida CPF. Tipo de retorno boolean.



function v_cpf(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") {

		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 v_cnpj(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 v_data(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 v_hora(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;

}



// -------------------------------------------------------------------------

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



// -------------------------------------------------------------------------

// Valida Arquivos. Tipo de retorno boolean.

// Extensoes no formato ".jpg,.pdf,.doc"

function v_arquivo(valor, nulo, t_Max, extensoes) {

	if(nulo == 0) {

		if(valor == "") {

			return false;

		}

	}

	else {

		if(valor == "") {

			return true;

		}

	}

	

	if(extensoes == "") {

		return true;

	}

	else {

	

		var extensoesOk = ","+extensoes+",";

		var extensao = "," + valor.substr( valor.length - 4 ).toLowerCase() + ",";

		if( extensoesOk.indexOf( extensao ) == -1 ){ 

			alert( "O Arquivo não possui uma extensão válida\n Envie somente arquivos nos formatos\n"+extensoesOk );

			return false;

			}

	}

	

	

		

	return true;

}