aguardar = false;
emailInvalido = null;

function testa(alvo) {
	var ok;
	switch (alvo) {
		case 'nome':
		case 'sobrenome':
		case 'endereco':
		case 'bairro':
		case 'cidade':
			if ($('#'+alvo).val().length < 3) {
				ok = false;
			} else {
				ok = true;
			}
			if (alvo != 'nome' && alvo != 'sobrenome' && $('#'+alvo).val().length == 0) {
				ok = -1;
			}
			break;
		case 'estado':
			if ($('#estado').val().length != 2 && $('#estado').val().length != 0) {
				ok = false;
			} else if ($('#estado').val().length == 0) {
				ok = -1;
			} else {
				ok = true;
			}
			break;
		case 'email':
			tEmail = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
			if (!tEmail.test($('#email').val()) || $('#email').val() == emailInvalido) {
				ok = false;
			} else {
				ok = true;
			}
			break;
		case 'senha':
			if ($('#senha').val().length < 6) {
				ok = false;
			} else {
				ok = true;
			}
			testa('senha2');
			break;
		case 'senha2':
			if ($('#senha').val() != $('#senha2').val() || $('#senha').val().length == 0) {
				ok = false;
			} else {
				ok = true;
			}
			break;
		case 'nascimento':
			tData = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/(19|20)\d{2}$/;
			if (!tData.test($('#nascimento').val())) {
				ok = false;
			} else {
				ok = true;
			}
			break;
		case 'telefone':
		case 'celular':
		case 'cep':
			if ($('#'+alvo).val().replace(/[^0-9]/g, '').length != ((alvo == 'cep')?(8):(10)) && $('#'+alvo).val().replace(/[^0-9]/g, '').length != 0) {
				ok = false;
			} else if ($('#'+alvo).val().replace(/[^0-9]/g, '').length == 0) {
				ok = -1;
			} else {
				if (alvo == 'cep') pegaEndereco ($('#cep').val());
				ok = true;
			}
			break;
		case 'identidade':
			if ($('#identidade').val().replace(/[^0-9]/g, '').length < 5) {
				ok = false;
			} else {
				ok = true;
			}
			break;
	}
	if (ok == true) {
		$('#'+alvo).removeClass('erro').addClass('ok');
	} else if (ok == false) {
		$('#'+alvo).removeClass('ok').addClass('erro');
	} else {
		$('#'+alvo).removeClass('ok').removeClass('erro');
	}
}

function cadastrar() {
	if (aguardar == false) {
		aguardar = true;
		exibeAlerta("Enviando... Aguarde...");
		testes = new Array (
				'nome',
				'sobrenome',
				'email',
				'senha',
				'senha2',
				'identidade',
				'nascimento',
				'celular',
				'telefone',
				'cep',
				'endereco',
				'bairro',
				'cidade',
				'estado'
			);
		for (i = 0; i < testes.length; i++) {
			if ($('#'+testes[i]).hasClass('erro') == true) {
				$('#'+testes[i]).focus();
				exibeAlerta("Existem informações erradas no formulário!");
				aguardar = false;
				return false;
			}
		}
		$.post("cadastrar-post", {
			nome:			$('#nome').val(),
			sobrenome:		$('#sobrenome').val(),
			email:			$('#email').val(),
			senha:			$('#senha').val(),
			sexo:			$('#sexo').val(),
			identidade:		$('#identidade').val(),
			nascimento:		$('#nascimento').val(),
			celular:		$('#celular').val(),
			telefone:		$('#telefone').val(),
			cep:			$('#cep').val(),
			endereco:		$('#endereco').val(),
			numero:			$('#numero').val(),
			complemento:	$('#complemento').val(),
			bairro:			$('#bairro').val(),
			cidade:			$('#cidade').val(),
			estado:			$('#estado').val(),
			newsletter:		$('#newsletter').val()
		}, function (data) {
			if (data == true) {
				document.location.href = 'cadastrar-2';
			} else {
				erros = new Array();
				$.each(data, function (i, item) {
					if (item == "email") {
						alert ("E-mail "+$('#email').val()+" em uso! Favor tentar outro");
					}
					erros.push(item);
					$('#'+item).removeClass('ok').addClass('erro');
				});
				exibeAlerta("Existem informações erradas no formulário:<br/>" + erros.join(', '));
				aguardar = false;
			}
		}, 'json');
	} else {
		exibeAlerta("Enviando... Aguarde...");
	}
	return false;
}

function pegaEndereco (cep) {

	carregando = "carregando.. aguarde..";
	
	if ($('#endereco').val().length == 0) $('#endereco').val(carregando);
	if ($('#bairro').val().length == 0) $('#bairro').val(carregando);
	if ($('#cidade').val().length == 0) $('#cidade').val(carregando);
	if ($('#estado').val().length == 0) $('#estado').val(carregando);
	
	$.post('cep', {cep: $('#cep').val().replace(/[^0-9]/g, '')}, function (data) {
		if (data != 'erro') {
			if ($('#endereco').val() == carregando) $('#endereco').val(data.endereco);
			if ($('#bairro').val() == carregando) $('#bairro').val(data.bairro);
			if ($('#cidade').val() == carregando) $('#cidade').val(data.cidade);
			if ($('#estado').val() == carregando) $('#estado').val(data.estado);
			testa('endereco');
			testa('bairro');
			testa('cidade');
			testa('estado');
		} else {
			$('#endereco').val('');
			$('#bairro').val('');
			$('#cidade').val('');
			$('#estado').val('');
		}
	}, 'json');

}

function formataTexto (alvo) {
	alvo.value = alvo.value.replace(/[^a-z,^A-Z,^ áÁéÉíÍóÓúÚàÀèÈìÌòÒùÙãÃõÕñÑâÂêÊîÎôÔûÛäÄëËïÏöÖüÜç]/g, '');
}

function formataData(alvo) {
	vr = alvo.value;
	vr = vr.replace(/[^0-9]/g, '');
	tam = vr.length;
	if (tam <= 2) {
		val = vr;
	} else if (tam > 2 && tam <= 4) {
		val = vr.substr(0, 2) + '/' + vr.substr(2, 2);
	} else if (tam > 4) {
		val = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 4);
	}
	alvo.value = val;
}

function formataTel(alvo) {
	vr = alvo.value;
	vr = vr.replace(/[^0-9]/g, '');
	tam = vr.length;
	if (tam <= 2) {
		val = vr;
	} else if (tam > 2 && tam <= 6) {
		val = '(' + vr.substr(0, 2) + ') ' + vr.substr(2, 4);
	} else if (tam > 6) {
		val = '(' + vr.substr(0, 2) + ') ' + vr.substr(2, 4) + '-' + vr.substr(6, 4);
	}
	alvo.value = val;
}

function formataCep(alvo) {
	vr = alvo.value;
	vr = vr.replace(/[^0-9]/g, '');
	tam = vr.length;
	if (tam <= 2) {
		val = vr;
	} else if (tam > 2 && tam <= 5) {
		val = vr.substr(0, 2) + '.' + vr.substr(2, 3);
	} else if (tam > 5) {
		val = vr.substr(0, 2) + '.' + vr.substr(2, 3) + '-' + vr.substr(5, 3);
	}
	alvo.value = val;
}

function formataIdentidade(alvo) {
	alvo.value = alvo.value.replace(/[^0-9]/g, '');
}

function formataEstado(alvo) {
	vr = alvo.value.toUpperCase();
	vr = vr.replace(/[^A-Z]/g, '');
	tam = vr.length;
	if (tam <= 2) {
		val = vr;
	}
	alvo.value = val;
}
