// JavaScript: Validacao e formatacao dos formularios
// Autora: Andressa K. Pires (Cinte)

function limpaCampo(item, msg) {
	var cmp = item;
	var txt = msg;

	if (cmp.value == txt) {
		cmp.value = "";
	}
}

function preencheCampo(item, msg) {
	var cmp = item;
	var txt = msg;

	if (cmp.value == "") {
		cmp.value = txt;
	}
}

function verifLimp() {
	document.getElementById("nome").value = 'Nome';
	document.getElementById("email").value = 'E-mail';
	document.getElementById("assunto").value = 'Assunto';
	document.getElementById("mensagem").value = 'Mensagem';
}

// -------------------------------- Funcoes para os campos -------------------------------- //
// Separadores
function separadorTexto(item) {
	var texto = item.value;
	var tam = texto.length;
	var temp = '';
	var x = 0;
	for(x=0; x<tam; x++) {
	  if (isNaN(texto.charAt(x)) || (texto.charAt(x) == " "))
		temp = temp + texto.charAt(x);
	}

	return temp;
}

function separadorNumero(item) {
	var textonum = "";
	var texto = item.value;
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if ((!isNaN(texto.charAt(x))) && (texto.charAt(x) != " "))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

function separadorPonto(item) {
	var textonum = "";
	var texto = item.value;
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if ((!isNaN(texto.charAt(x))) || (texto.charAt(x) == "."))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

function separadorDigito(texto) {
	var textonum = "";
	var tam = texto.length;
	var x = 0;
	for(x=0; x<tam; x++) {
		if (!isNaN(texto.charAt(x)))
			textonum = textonum + texto.charAt(x);
	}
	return textonum;
}

// Numero
function formataNumero(item) {
	var num = separadorNumero(item);
   	item.value = num;
	return true;
}

// Numero com ponto
function formataNumeroPonto(item) {
	var num = separadorPonto(item);
   	item.value = num;
	return true;
}

// Texto
function formataTexto(item) {
	var num = separadorTexto(item);
   	item.value = num;
	return true;
}

// Texto maiusculo
function caixaAlta(item) {
	txt = item.value;
	var chrEspeciais = new Array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë",
				     "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö",
				     "ú", "ù", "û", "ü", "ç", "ñ", "^", "´",
				     "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë",
				     "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö",
				     "Ú", "Ù", "Û", "Ü", "Ç", "Ñ", "~", "`");

	var chrNormais = new Array("a", "a", "a", "a", "a", "e", "e", "e", "e",
				   "i", "i", "i", "i", "o", "o", "o", "o", "o",
				   "u", "u", "u", "u", "c", "n", "", "",
				   "A", "A", "A", "A", "A", "E", "E", "E", "E",
				   "I", "I", "I", "I", "O", "O", "O", "O", "O",
				   "U", "U", "U", "U", "C", "N", "", "");

	for (index in chrEspeciais) {
		txt = txt.replace(chrEspeciais[index], chrNormais[index]);
	}

	item.value = txt.toUpperCase();
	return true;
}

// CPF
function formataCPF(item) {
	var cpf = "";
	var cpfsemsep = separadorNumero(item);
	var x;
	for(x = 0; x < cpfsemsep.length; x++){
		switch(x) {
			case 3 :
			case 6 :
				cpf = cpf + "." + cpfsemsep.charAt(x);
				break;
			case 9 :
				cpf = cpf + "-" + cpfsemsep.charAt(x);
				break
			default :
				cpf = cpf + cpfsemsep.charAt(x);
				break;
		}
	}

	item.value = cpf;
	return true;
}

function verificaCPF(item) {
	var str = item.value;
	var digitos_iguais = 1;
	var erro = "O CPF está inválido!";

	if(str != "") {
		if (str.length < 14) {
			alert(erro);
			item.value = "";
			return false;
		} else {
			if ((str.charAt(3) != ".") || (str.charAt(7) != ".") || (str.charAt(11) != "-")) {
				alert(erro);
				item.value = "";
				return false;
			} else {
				if ((str=="000.000.000-00") || (str=="111.111.111-11") || (str=="222.222.222-22") || (str=="333.333.333-33") || (str=="444.444.444-44") || (str=="555.555.555-55") || (str=="666.666.666-66") || (str=="777.777.777-77") || (str=="888.888.888-88") || (str=="999.999.999-99")) {
					alert(erro);
					item.value = "";
					return false;
			   } else {
					str = separadorDigito(str);
					var numeros = str.substring(0,9);
					var digitos = str.substring(9);
					var soma = 0;
					var i = 0;
					for (i = 10; i > 1; i--)
						soma += numeros.charAt(10 - i) * i;

					var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
					if (resultado != digitos.charAt(0)) {
						alert(erro);
						item.value = "";
						return false;
					} else {
						numeros = str.substring(0,10);
						soma = 0;
						for (i = 11; i > 1; i--)
							soma += numeros.charAt(11 - i) * i;

						resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
						if (resultado != digitos.charAt(1)) {
							alert(erro);
							item.value = "";
							return false;
						} else
							return true;
					}
				}
			}
		}
	} else
		return true;
}

// CNPJ
function formataCNPJ(item) {
	var cnpj = "";
	var cnpjsemsep = separadorNumero(item);
	var x;
	for(x = 0; x < cnpjsemsep.length; x++){
		switch(x) {
			case 3 :
			case 6 :
				cnpj = cnpj + "." + cnpjsemsep.charAt(x);
				break;
			case 9 :
				cnpj = cnpj + "/" + cnpjsemsep.charAt(x);
				break
			case 13 :
				cnpj = cnpj + "-" + cnpjsemsep.charAt(x);
				break
			default :
				cnpj = cnpj + cnpjsemsep.charAt(x);
				break;
		}
	}

	item.value = cnpj;
	return true;
}

function verificaCNPJ( c ) { // c = item
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj = c.value.replace(/\D+/g, '');
	var erro = "O CNPJ está inválido!";
    digitos_iguais = 1;

    if (cnpj.length != 15) {
		alert(erro);
		c.value = "";
		return false;
    }

	for (i = 0; i < cnpj.length - 1; i++) {
		if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
			digitos_iguais = 0;
			break;
		}
	}

	if (!digitos_iguais) {
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--) {
			soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
            	pos = 9;
		}

		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0)) {
			alert(erro);
			c.value = "";
			return false;
		}

		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--) {
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
				pos = 9;
		}

		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1)) {
			alert(erro);
			c.value = "";
			return false;
		} else
            return true;
	} else {
		alert(erro);
		c.value = "";
		return false;
	}
}

// CEP
function formataCEP(item) {
	var cep = "";
	var cepsemsep = separadorNumero(item);
	var x = 0;
	for(x = 0; x < cepsemsep.length; x++) {
		switch(x) {
			case 5 :
				cep = cep + "-" + cepsemsep.charAt(x);
				break
			default :
				cep = cep + cepsemsep.charAt(x);
		}
	}

	item.value = cep;
	return true;
}

function verificaCEP(item) {
	var str = item.value;
	var cep1 = new String(str);
	var erro = "O CEP está inválido!";
	if (str != "") {
		if(cep1.length != 9 || cep1.substring(5,6) != "-") {
			alert(erro);
			item.value = "";
			return false;
		} else {
			cep_1 = cep1.substring(0,5);
			cep_2 = cep1.substring(6,9);
			if(isNaN(cep_1) || isNaN(cep_2)) {
				alert(erro);
				item.value = "";
				return false;
			} else
				return true;
		}
	} else
		return true;
}

// Telefone
function formataFone(item) {
	var fone = "";
	var fonesemsep = separadorDigito(item.value);
	var x = 0;
	for (x = 0; x < fonesemsep.length; x++){
		switch(x) {
			case 4 :
				fone = fone + "-" + fonesemsep.charAt(x);
				break
			default :
				fone = fone + fonesemsep.charAt(x);
		}
	}

	item.value = fone;
	return true;
}

function verificaFone(item) {
	var str = item.value;
	var erro = "O número para contato está inválido!";

	if(str != "") {
		parte1 = str.indexOf("-");
		parte2 = str.length;

		if (!((parte1 == 4) && (parte2 == 9))) {
			alert(erro);
			item.value = "";
			return false;
		} else {
			for(x = 0; x < parte2; x++) {
				if (x != 4) {
					if (isNaN(str.substring(x,x+1)) == true) {
						alert(erro);
						item.value = "";
						return false;
					} else
						return true;
				}
			}
		}
	}
	else
		return true;
}

// E-mail
function verificaEmail(item) {
	var str = item.value;
	var erro = "O e-mail deve conter um endereço eletrônico válido!";

	if (str != "") {
		parte1 = str.indexOf("@");
		parte2 = str.indexOf(".");
		parte3 = str.length;
		if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
			alert(erro);
			item.value = "";
			return false;
		}
		else {
			var carater = new Array(".", "@", "_", "-", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "w", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "X", "W", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

			for (x = 0; x < parte3; x++) {
				cont = 0;
				for (y = 0; y <= 65; y++) {
					if (item.value.charAt(x) != carater[y])
						cont++;
				}
				if (cont != 65)
					break;
			}

			if (cont != 65) {
				alert(erro);
				item.value = "";
				return false;
			}
			else
				return true;
		}
	}
	else
		return true;
}

// Login
function verificaLogin(item) {
	var str = item.value;
	var x = str.length;
	
	if (x < 5) {
		alert('O login deve ter no mínimo 5 caracteres!');
		item.value = "";
		return false;
	}

	return true;
}

// Senha
function verificaSenha(item) {
	var str = item.value;
	var x = str.length;

	if (x < 6) {
		alert('A senha deve ter no mínimo 6 caracteres!');
		item.value = "";
		return false;
	}

	return true;
}
// ---------------------------------------------------------------------------------------- //

// Clientes :: Documentacao
function verDoc(item) {
	var doc = item.value;

	if (doc == "Fisica") {
		if (document.all)
			document.getElementById("verCPF").style.display = "inline-block";
		else
			document.getElementById("verCPF").style.display = "table-row";

		document.getElementById("cnpj").value = "";
		document.getElementById("verCNPJ").style.display = "none";
	} else if (doc == "Juridica") {
			if (document.all)
				document.getElementById("verCNPJ").style.display = "inline-block";
			else
				document.getElementById("verCNPJ").style.display = "table-row";

			document.getElementById("cpf").value = "";
			document.getElementById("verCPF").style.display = "none";
		} else {
			document.getElementById("cpf").value = "";
			document.getElementById("verCPF").style.display = "none";
			document.getElementById("cnpj").value = "";
			document.getElementById("verCNPJ").style.display = "none";
		}
}

// Clientes
function verifCli() {
	var nom = $('input[@id=nome]').val();
	var ema = $('input[@id=email]').val();
	var pf = document.getElementById("tipoF").checked;
	var pj = document.getElementById("tipoJ").checked;
	var doc = "";

	if (pf == true)
		doc = $('input[@id=cpf]').val();
	else if (pj == true)
		doc = $('input[@id=cnpj]').val();

	var end = $('input[@id=endereco]').val();
	var num = $('input[@id=numero]').val();
	var cep = $('input[@id=cep]').val();
	var bai = $('input[@id=bairro]').val();
	var cid = $('input[@id=cidade]').val();
	var est = $('select[@id=estado]').val();
	var ddd = $('input[@id=ddd]').val();
	var tel = $('input[@id=telefone]').val();

	var lo = $('input[@id=login]').val();
	var se = $('input[@id=senha]').val();
	var cs = $('input[@id=confirma_senha]').val();

	if (nom == "")
		alert('Informe o nome!');
	else if (ema == "")
			alert('Informe o e-mail!');
		else if (pf == false && pj == false)
				alert('Escolha um tipo de cadastro!');
			else if (doc == "")
					alert('Informe o cpf/cnpj!');
				else if (end == "")
						alert('Informe o endereço!');
					else if (num == "")
							alert('Informe o número!');
						else if (cep == "")
								alert('Informe o cep!');
							else if (bai == "")
									alert('Informe o bairro!');
								else if (cid == "")
										alert('Informe a cidade!');
									else if (est == "")
											alert('Informe o estado!');
										else if (ddd == "")
												alert('Informe o ddd!');
											else if (tel == "")
													alert('Informe o telefone!');
												else if (lo == "")
														alert('Informe o login!');
													else if (se == "")
															alert('Informe a senha!');
														else if (cs == "")
																alert('Informe a confirmação da senha!');
															else if (se != cs)
																	alert('As senhas estão diferentes! Tente novamente.');
																else {
																	if (pf == true) {
																		c = document.getElementById("cpf");
																		if (verificaCPF(c) == false)
																			return false;
																	} else if (pj == true) {
																			c = document.getElementById("cnpj");
																			if (verificaCNPJ(c) == false)
																				return false;
																		}

																	n = document.getElementById("nome");
																	ema = document.getElementById("email");
																	e = document.getElementById("endereco");
																	ce = document.getElementById("cep");
																	b = document.getElementById("bairro");
																	ci = document.getElementById("cidade");
																	t = document.getElementById("telefone");
																	lo = document.getElementById("login");
																	se = document.getElementById("senha");
																	cs = document.getElementById("confirma_senha");
																	if ((caixaAlta(n) != false) && (verificaEmail(ema) != false) && (caixaAlta(e) != false) && (verificaCEP(ce) != false) && (caixaAlta(b) != false) && (caixaAlta(ci) != false) && (verificaFone(t) != false) && (verificaLogin(lo) != false) && (verificaSenha(se) != false) && (verificaSenha(cs) != false)) {
																		$('#formCliente').submit();
																	}
																}
}

// Cliente :: Acesso
function verifAcesso() {
	var lo = $('input[@id=login]').val();
	var se = $('input[@id=senha]').val();

	if (lo == "")
		alert('Informe seu login!');
	else if (se == "")
			alert('Informe sua senha!');
		else {
			lo = document.getElementById("login");
			se = document.getElementById("senha");

			if ((verificaLogin(lo) != false) && (verificaSenha(se) != false)) {
				$('#formAcesso').submit();
			}
		}
}

// Cliente :: Lembrar Senha
function verifLS() {
	var ema = $('input[@id=email]').val();

	if (ema == "")
		alert('Por favor, digite seu e-mail!');
	else {
		e = document.getElementById("email");

		if (verificaEmail(e) != false) {
			$('#formLembrar').submit();
		}
	}
}

// Pedido :: Excluir item
function excluir(item) {
	var cod = item;
	var confirma = confirm ("Deseja realmente excluir este item?");
	if (confirma == true)
		location.href = "produtos_excluir.php?id="+cod;
	else
		return false;
}

// Pedido
function verifPedido() {
	var men = $('textarea[@id=mensagem]').val();

	if (men == "Mensagem")
		alert('Por favor, informe sua mensagem!');
	else
		$('#formPedido').submit();
}

// Contato
function verifContato() {
	var nom = $('input[@id=nome]').val();
	var ema = $('input[@id=email]').val();
	var ass = $('input[@id=assunto]').val();
	var men = $('textarea[@id=mensagem]').val();

	if (nom == "Nome" || ema == "E-mail")
		alert('Informe os seus dados!');
	else if (ass == "Assunto" || men == "Mensagem")
			alert('Informe o assunto e a mensagem!');
		else {
			e = document.getElementById("email");

			if (verifEmail(e) != false) {
				$('#formContato').submit();
			}
		}
}
