function validar_texto(cam, des) {
	if (cam.value.length == 0) {
		alert("O campo '" + des + "' não pode estar vazio!");
		cam.focus();
		return false;
	}
		
	return true;
}

function validar_inteiro(cam, des) {
	var num_tmp = "";
	var caracter
	
	for (var i = 0; i < cam.value.length; i++) {
		ch = cam.value.substring(i, i + 1);
		if (ch == "," || ch == ".") {
			alert("O campo '" + des + "' deve ser um número inteiro!");
			cam.focus();
			return false;
		}
	}
	
	if ((cam.value.length == 0) || ((cam.value - 0) + "" == "NaN") || (cam.value == "0")) {
		alert("O campo '" + des + "' deve ser um número inteiro!");
		cam.focus();
		return false;
	}
	
	return true;
}

function validar_numero(cam, des) {
	var num_tmp = "";
	
	for (var i = 0; i < cam.value.length; i++) {
		var ch = cam.value.substring(i, i + 1);
		if (ch == ",") ch = ".";
		num_tmp += "" + ch;
	}
	
	if ((num_tmp.length == 0) || ((num_tmp - 0) + "" == "NaN")) {
		alert("O campo '" + des + "' deve ser um valor!");
		cam.focus();
		return false;
	}
	
	cam.value = "";
	for (i = 0; i < num_tmp.length; i++) {
		var ch = num_tmp.substring(i, i + 1);
		if (ch == ".") ch = ",";
		cam.value += "" + ch;
	}
	return true;
}

function validar_combo(cam, des) {
	if (cam.value == "") {
		alert("Você deve escolher uma opção no campo '" + des + "'!");
		cam.focus();
		return false;
	}
	return true;
}
	
function validar_email(cam, des) {
	var cont = 0
	for (var i = 0; i < cam.value.length; i++) {
		var ch = cam.value.substring(i, i + 1);
		if (ch == "@")
			cont = cont + 1
	}
	if (cont != 1) {
		alert("O campo '" + des + "' não parece ser um endereço de e-mail válido!");
		cam.focus();
		return false;
	}
	return true;
}
	
function validar_data(cam, des) {
	var dat = cam.value;
	
	// Verifica comprimento
	if (dat.length != 10) {
		alert("O campo '" + des + "' é inválido.\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
		
	// Verifica se os caracteres são números e barra.
	for (var i = 0; i < dat.length; i++) {
		var ch = dat.substring(i, i + 1);
		if ((ch < "0" || "9" < ch) && ch != "/") 
		{
			alert("O campo '" + des + "' é inválido.\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
			cam.focus();
			return false;
		}
	}
		
	// Verifica o valor do dia.
	if ((dat.substring(0, 2) < 1) || (dat.substring(0, 2) > 31)) {
		alert("Erro no campo '" + des + "'.\nDia incorreto!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Verifica o valor do dia no valor do mês.
	// Fevereiro
	if ((dat.substring(3, 5) == 2 ) && (dat.substring(0, 2) > 29)) {
		alert("Erro no campo '" + des + "'.\nFevereiro não tem mais que 29 dias!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	if ((dat.substring(3, 5) == 2 ) && (dat.substring(0, 2) == 29)) {
		if (alert("\nVocê entrou com 29 de Fevereiro...\n\nVocê tem certeza de que é ano bissexto?")==false) { return false; }
	}
	
	// Abril
	if ((dat.substring(3, 5) == 4 ) && (dat.substring(0, 2) > 30)) {
		alert("Erro no campo '" + des + "'.\nAbril não tem mais que 30 dias!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Junho
	if ((dat.substring(3, 5) == 6 ) && (dat.substring(0, 2) > 30)) {
		alert("Erro no campo '" + des + "'.\nJunho não tem mais que 30 dias!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Setembro
	if ((dat.substring(3, 5) == 9 ) && (dat.substring(0, 2) > 30)) {
		alert("Erro no campo '" + des + "'.\nSetembro não tem mais que 30 dias!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Novembro
	if ((dat.substring(3, 5) == 11 ) && (dat.substring(0, 2) > 30)) {
		alert("Erro no campo '" + des + "'.\nNovembro não tem mais que 30 dias!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Verifica o valor do mês.
	if ((dat.substring(3, 5) < 1) || (dat.substring(3, 5) > 12)) {
		alert("Erro no campo '" + des + "'.\nMês incorreto!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Verifica o valor do ano.
	if ((dat.substring(6, 10) < 1) || (dat.substring(6, 10) > 9999)) {
		alert("Erro no campo '" + des + "'.\nAno incorreto!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	
	// Verifica posicionamento da barra.
	if (dat.substring(3, 4) == "/" || dat.substring(4, 5) == "/") {
		alert("Erro no campo '" + des + "'.\nBarra misturada com o mês!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	if (dat.substring(0, 1) == "/" || dat.substring(1, 2) == "/") {
		alert("Erro no campo '" + des + "'.\nBarra misturada com o dia!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	if (dat.substring(6, 7) == "/" || dat.substring(7, 8) == "/" || dat.substring(8, 9) == "/" || dat.substring(9, 10) == "/") {
		alert("Erro no campo '" + des + "'.\nBarra misturada com o ano!\nEste campo requer 10 dígitos no formato: (DD/MM/AAAA)");
		cam.focus();
		return false;
	}
	if (dat.substring(2, 3) != "/" || dat.substring(5, 6) != "/") {
		alert("\nBarra misturada com a data.");
		return false;
	}
	
	return true;
}

function validar_hora(cam, des) {
	var hor = cam.value;
	
	// Verifica comprimento
	if (hor.length != 5) {
		alert("O campo '" + des + "' é inválido.\nEste campo requer 5 dígitos no formato: (HH:MM)");
		cam.focus();
		return false;
	}
		
	// Verifica se os caracteres são números e barra.
	for (var i = 0; i < hor.length; i++) {
		var ch = hor.substring(i, i + 1);
		if ((ch < "0" || "9" < ch) && ch != ":") 
		{
			alert("O campo '" + des + "' é inválido.\nEste campo requer 5 dígitos no formato: (HH:MM)");
			cam.focus();
			return false;
		}
	}
		
	// Verifica o valor da hora.
	if ((hor.substring(0, 2) < 0) || (hor.substring(0, 2) > 23)) {
		alert("Erro no campo '" + des + "'.\nHora incorreta!\nEste campo requer 5 dígitos no formato: (HH:MM)");
		cam.focus();
		return false;
	}
	
	// Verifica o valor do minuto.
	if ((hor.substring(3, 5) < 0) || (hor.substring(3, 5) > 59)) {
		alert("Erro no campo '" + des + "'.\nMinuto incorreto!\nEste campo requer 5 dígitos no formato: (HH:MM)");
		cam.focus();
		return false;
	}
		
	// Verifica posicionamento do :.
	if (hor.substring(0, 1) == ":" || hor.substring(1, 2) == ":") {
		alert("Erro no campo '" + des + "'.\nDois pontos misturado com a hora!\nEste campo requer 5 dígitos no formato: (HH:MM)");
		cam.focus();
		return false;
	}
	if (hor.substring(3, 4) == ":" || hor.substring(4, 5) == ":") {
		alert("Erro no campo '" + des + "'.\nDois pontos misturado com o minuto!\nEste campo requer 5 dígitos no formato: (HH:MM)");
		cam.focus();
		return false;
	}
	
	return true;
}

//Validação CPF e CNPJ
function ClearStr(str, chr) {
	while((cx=str.indexOf(chr))!=-1)
		str = str.substring(0,cx)+str.substring(cx+1);
	return(str);
}

function ParseNumb(c) {
	c = ClearStr(c,'-');
	c = ClearStr(c,'/');
	c = ClearStr(c,',');
	c = ClearStr(c,'.');
	c = ClearStr(c,'(');
	c = ClearStr(c,')');
	c = ClearStr(c,' ');
	if((parseFloat(c) / c != 1)) {
		if(parseFloat(c) * c == 0) return(c); else return(0);
	}
	else
		return(c);
}

function Verify(CNUMB,CTYPE) {
	CNUMB=ParseNumb(CNUMB)
	if(CNUMB == 0)
		return(false);
	else {
		g = CNUMB.length-2;
		if(TestDigit(CNUMB,CTYPE,g)) {
			g = CNUMB.length-1;
			if(TestDigit(CNUMB,CTYPE,g)) return(true); else return(false);
		}
		else
			return(false);
	}
}

function TestDigit(CNUMB,CTYPE,g) {
	var dig=0;
	var ind=2;
	for(f=g;f>0;f--) {
		dig+=parseInt(CNUMB.charAt(f-1))*ind;
		if (CTYPE == 'CNPJ') {
			if(ind > 8) ind = 2; else ind++;
		}
		else
			ind++;
	}

	dig %= 11;
	if(dig < 2) dig = 0; else dig = 11 - dig;
	if(dig!=parseInt(CNUMB.charAt(g))) return(false); else return(true);
}

function validar_cpf(cam, des) {
	var CPF = cam.value;
	var cond = true;
	
	if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
		CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
		CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
		CPF == "88888888888" || CPF == "99999999999")
		cond = false;
	else {
		soma = 0;
		for (i=0; i < 9; i ++)
			soma += parseInt(CPF.charAt(i)) * (10 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11)
			resto = 0;
		if (resto != parseInt(CPF.charAt(9)))
			cond = false;
		else {
			soma = 0;
			for (i = 0; i < 10; i ++)
				soma += parseInt(CPF.charAt(i)) * (11 - i);
			resto = 11 - (soma % 11);
			if (resto == 10 || resto == 11)
				resto = 0;
			if (resto != parseInt(CPF.charAt(10))) {
				cond = false;
			}
		}
	}
	
	if (cond == false) {
		alert("O campo '" + des + "' não é um CPF válido!");
		cam.focus();
		return false;
	}
	return true;
}

function validar_cnpj(cam, des) {
	if (!Verify(cam.value, 'CNPJ')) {
		alert("O campo '" + des + "' deve ser um CNPJ válido!");
		cam.focus();
		return false;
	}
	return true;
}

function habilitar_texto(objeto, opcao) {
	if (opcao) classe = "sty_form"; else classe = "sty_form_disabled";
	objeto.className = classe;
	objeto.readOnly = (!opcao);
}

function habilitar_combo(objeto, opcao) {
	if (opcao) classe = "sty_form"; else classe = "sty_form_disabled";
	objeto.className = classe;
	objeto.disabled = (!opcao);
}

function habilitar_botao(objeto, opcao) {
	if (opcao) situacao = ""; else situacao = "_disabled";
	eval("var imagem = img_" + objeto.name + situacao + ".src;");
	if (objeto.src != imagem) objeto.src = imagem;
}

function habilitar_imagem(objeto, opcao) {
	if (opcao) imagem = img_pesquisa; else imagem = img_pesquisa_disabled;
	if (objeto.src != imagem.src) objeto.src = imagem.src;
}