$(document).ready(function() {
	criarLinkExterno();
	
	$("#loading").ajaxStart(function(){
		$(this).fadeIn();
	});
	
	$("#loading").ajaxStop(function(){
		$(this).fadeOut();
	});
});

// Habilita os links externos para abrirem em uma nova janela
function criarLinkExterno() {
	$("a[rel='external']").click(function() {
		$(this).attr("target", "_blank");
	});
}

/* Valida os campos do formulário de Cadastro */
function validarCadastro() {
	var isError = false;
	
	$(".aviso").removeClass('aviso-ok');
	$(".aviso").hide("");
	$(".aviso").text("");

	if ( $(".cadastro-cidade").val() == "" ) {
		$(".aviso").text("Por favor, digite sua cidade.");
		$(".aviso").fadeIn("slow");
		isError = true;
	}

	if ( $(".cadastro-estado").val() == "" ) {
		$(".aviso").text("Por favor, digite seu estado.");
		$(".aviso").fadeIn("slow");
		isError = true;
	}

	cep = $(".cadastro-cep").val();
	if ( cep.length < 9 ) {
		$(".aviso").text("Por favor, digite o CEP corretamente.(apenas números)");
		$(".aviso").show();
		isError = true;
	}

	if ( document.getElementById("cadastro-masculino").checked == false && document.getElementById("cadastro-feminino").checked == false ) {
		$(".aviso").text("Por favor, escolha o sexo.");
		$(".aviso").show();
		isError = true;
	}

	if ( ! validarAno(true) ) {
		isError = true;
	}

	if ( $(".cadastro-nome").val() == "" ) {
		$(".aviso").text("Por favor, digite seu nome.");
		$(".aviso").fadeIn("slow");
		isError = true;
	}

	if ( !isEmail($(".cadastro-email").val()) ) {
		$(".aviso").text("Por favor, digite um e-mail válido.");
		$(".aviso").show();
		isError = true;
	}
	
	if ( document.getElementById('cadastro-estado').selectedIndex == 0 ) {
		$(".aviso").text("Por favor, informe o cep e o estado.");
		$(".aviso").show();
		isError = true;
	}
	
	if ( $(".cadastro-cidade").val() == "" ) {
		$(".aviso").text("Por favor, informe o cep e a cidade.");
		$(".aviso").fadeIn("slow");
		isError = true;
	}	
	
	if ( isError ) {
		moverParaMensagem();
	}
	
	return !isError;
}


function validarAno(retornar) {
	var isError = false;
	ano = $(".cadastro-nascimento").val();

	// Esta validação não é mais necessária por causa da máscara no campo
	/*if ( ano.length < 2 || isNaN(ano) ) {
		$(".aviso").text("Por favor, digite o ano de seu nascimento.(apenas números)");
		$(".aviso").show();
		isError = true;
	}*/
	
	yyyy = ano.substr(6, 4);

	if ( yyyy < 1900 || yyyy > new Date().getFullYear() ) {
		$(".aviso").text("Por favor, seu nascimento deve ser entre 1900 e " + new Date().getFullYear());
		$(".aviso").show();
		isError = true;
	}
	else
	{
		$(".aviso").text("");
		$(".aviso").hide("");	
	}
	
	if ( retornar ) {return !isError;}	
}

function isCep(cep) {
	if ( cep.length == 9 && cep.indexOf(" ") < 0) {
		return true;
	}
	
	return false;
	
}

function moverParaMensagem() {
	var targetOffset = $('.aviso').offset().top;
	$('html,body').animate({scrollTop: targetOffset}, 1000);
}

function isEmail(email) {
	var expr = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	
	if(email.search(expr) == -1)
	{
		return false;
	}
	return true;
}

function manipularCep(campo) {
	if ( campo.value.length == 9 && campo.value.indexOf(" ") < 0) {
		buscarCep();
	}	
}

function validarEmailCampo() {
	$(".aviso").removeClass('aviso-ok');
	$(".aviso").hide("");
	$(".aviso").text("");
	
	if ( !isEmail($(".cadastro-email").val()) ) {
		$(".aviso").text("Por favor, digite um e-mail válido.");
		$(".aviso").show();
		moverParaMensagem();
	}
}

function buscarCep() {
	$(".aviso").text("");
	$(".aviso").hide();	
	
	if ( ! isCep($('#cadastro-cep').val()) ) {
		$(".aviso").text("Cep inválido.");
		$(".aviso").show();
		moverParaMensagem();		
		return;
	}
	
	$('#cadastro-estado').attr('disabled', 'disabled');
	$('#cadastro-cidade').attr('readonly', 'readonly');

	$('#buscarCep').text('Carregando...');
	
	$.getJSON(
		"cep.php",
		{ cep: $('#cadastro-cep').val() },
		function(json){			
			$('#buscarCep').text('Buscar CEP');
			$('#linhaCidadeEstado').slideDown();
			if ( json == null || json.estado == null || json.estado == "") {
				$('#cadastro-estado').removeAttr('disabled');
				$('#cadastro-cidade').removeAttr('readonly');
				$('#cadastro-estado').val( '' );
				$('#cadastro-cidade').val( '' );

				$('#cadastro-estado').removeClass('campoComoTexto');
				$('#cadastro-cidade').removeClass('campoComoTexto');
				
			} else {
				$('#cadastro-estado').val( json.estado );
				$('#cadastro-cidade').val( json.cidade );

				$('#cadastro-estado').addClass('campoComoTexto');
				$('#cadastro-cidade').addClass('campoComoTexto');
			}
		}
	);	
}


function salvarCadastro() {
	if ( !validarCadastro() ) {
		return;
	}
	$('#linhaCidadeEstado').hide();
	$(".aviso").hide();
	$("#acesse_psdb").hide();

	$.getJSON(
			"cadastro.php",
			{ 
				'cadastro-email': $('#cadastro-email').val(),
				'cadastro-nome': $('#cadastro-nome').val(),
				'cadastro-nascimento': $('#cadastro-nascimento').val(),
				'cadastro-sexo': $('#cadastro-masculino').attr('checked') ? "M" : "F",
				'cadastro-cep': $('#cadastro-cep').val(),
				'cadastro-estado': document.getElementById('cadastro-estado').options[document.getElementById('cadastro-estado').selectedIndex].value,
				'cadastro-cidade': $('#cadastro-cidade').val(),
				'cadastro-filiacao': $('#cadastro-filiacao').attr('checked') ? 1 : 0
			},
			function(json){

				if ( json.sucesso == "1" ) {
					$(".aviso").addClass('aviso-ok');
					document.getElementById('formulario-cadastro').reset();
					document.getElementById('cadastro-estado').selectedIndex = 0;
					$("#acesse_psdb").show();
				} else {
					$(".aviso").removeClass('aviso-ok');
				}

				$(".aviso").text(json.mensagem);
				$(".aviso").show();
				moverParaMensagem();
			}
		);
}