var ale = ale || {};
ale.utils = {};
ale.inits = {};

ale.dadosPosto = [];

function tiraAcento(text) { 
  text = text.replace(new RegExp('[ÁÀÂÃãâ]','gi'), 'A'); 
  text = text.replace(new RegExp('[ÉÈÊ]','gi'), 'E'); 
  text = text.replace(new RegExp('[ÍÌÎ]','gi'), 'I'); 
  text = text.replace(new RegExp('[ÓÒÔÕ]','gi'), 'O'); 
  text = text.replace(new RegExp('[ÚÙÛ]','gi'), 'U'); 
  text = text.replace(new RegExp('[Ç]','gi'), 'C'); 
  return text; 
} 

/**
 * Inicialização para todas as páginas
 */
ale.init = function() {
	if (typeof(jsInit) != 'undefined') {
		try {
			ale.inits[jsInit].call(false,false);
		} catch(e) {

		}
	}
};

ale.inits['home'] = function() {
	$('.ctRecoverButton').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		$('.ctLogin').hide();
		$('.ctRecuperar').show();
	});
	$('.ctShowLoginButton').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		$('.ctLogin').show();
		$('.ctRecuperar').hide();
	});

	$('.ctInputEmail,.ctInputSenha').focus(function() {
		var val = $(this).val();
		if ($(this).is('.ctInputEmail')) {
			if (val == 'Email') {
				$(this).val('');
			}
		} else if ($(this).is('.ctInputSenha')) {
			if (val == 'Senha') {
				$(this).val('');
			}
		}
	});

	$('.ctInputEmail,.ctInputSenha').blur(function() {
		var val = $(this).val();
		if ($(this).is('.ctInputEmail')) {
			if (val == '') {
				$(this).val('Email');
			}
		} else if ($(this).is('.ctInputSenha')) {
			if (val == '') {
				$(this).val('Senha');
			}
		}
	});

};

ale.inits['livro'] = function() {
	$('.ctaval-active img').click(function() {
		var ctStar = $(this).attr('class').replace(/av_/gim,'');
		var bcid = $('#bcidlivro').val();
		var url = '/json/addnota.js?bcid='+bcid+'&nota='+ctStar+'';
		$.getJSON(url,function(data) {			
			if (data.status == '403') {
				alert('Para adicionar uma nota, você precisa estar logado no site.');
			} else {
				$('#labelAcaoLivro').html('Se quiser, deixe seu comentário sobre o livro');
				$('#controlMeustatus').hide();
				$('#btAddStatus').hide();
				$('#spacerBotaoAcao').hide();
				$('#btAddComentario').show();
			}
		});							
	});

	$('#btAddStatus').click(function(e) {
		e.stopPropagation();
		e.preventDefault();

		var fglido = $('#meuLivroLido:checked').length ? true : false;
		var fglendo = $('#meuLivroLendo:checked').length ? true : false;
		var fgpretendido = $('#meuLivroPretendido:checked').length ? true : false;

		if (fglendo || fglido || fgpretendido) {
			var tipo = '';

			if (fglido) {
				tipo = 'lido';
			} else if(fglendo) {
				tipo = 'lendo';
			} else if(fgpretendido) {
				tipo = 'pretendido';
			}

			var bcid = $('#bcidlivro').val();
			var url = '/json/addmeulivro.js?bcid='+bcid+'&tipo='+tipo+'';

			$.getJSON(url,function(data) {
				if (data.status == '403') {
					alert('Para adicionar aos seus livros, você precisa estar logado no site.');
				} else {
					$('#labelAcaoLivro').html('Se quiser, deixe seu comentário sobre o livro');
					$('#controlMeustatus').hide();
					$('#btAddStatus').hide();
					$('#spacerBotaoAcao').hide();
					$('#btAddComentario').show();
				}
			});
		} else {
			alert('Por favor, escolha uma das opções.');
		}


	});

	$('#btAddComentario').click(function(e) {
		e.stopPropagation();
		e.preventDefault();

		$('#labelAcaoLivro').html('Adicionar aos meus livros:');
		$('#controlMeustatus').show();
		$('#btAddStatus').show();
		$('#spacerBotaoAcao').show();
		$('#btAddComentario').hide();

		$('.livro_bloco_listacomentario').hide();
		$('.livro_bloco_comentario').show();
	});

	$('#actionComentario').click(function(e) {
		e.stopPropagation();
		e.preventDefault();

		var dia = $('#dtleitura_dia option:selected').val();
		var mes = $('#dtleitura_mes option:selected').val();
		var ano = $('#dtleitura_ano option:selected').val();

		var dtleitura = '';

		if (dia && mes && ano) {
			dtleitura = ano+'-'+mes+'-'+dia;
		}
		var bcid = $('#bcidlivro').val();

		var comentario = $('#comentario_livro').val();
		var recomendacao = $('#recomendacao_livr').val();

		if (comentario == '') {
			alert('Por favor, informe o comentário');
		} else {			
			$.post('/json/verificacomentario.js', {'bcid':bcid}, function(data) {
				if(data.status == 'update') {
					if(confirm("Você irá sobreescrever seu comentário anterior, deseja continuar?")) {
						$.post('/json/addcomentario.js', {'bcid':bcid,'comentario':comentario,'dtleitura':dtleitura,'recomendacao':recomendacao}, function(data) {
							if (data.status == '403') {
								alert('Para adicionar um comentário, você precisa estar logado no site.');
							} else {
								window.location = window.location;
							}
						}, "json");
					}
				}else{
					$.post('/json/addcomentario.js', {'bcid':bcid,'comentario':comentario,'dtleitura':dtleitura,'recomendacao':recomendacao}, function(data) {
						if (data.status == '403') {
							alert('Para adicionar um comentário, você precisa estar logado no site.');
						} else {
							window.location = window.location;
						}
					}, "json");
				}
			}, "json");			
		}
	});

};



/**
 * Event Delegation para os input button
 */
ale.utils.buttonEvents = function() {
	$('input[type=button]').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		if ($(this).is('.btn-goencontrar')) {
			window.location = '/encontrar';
		} else if ($(this).is('.btn-golibertar')) {
			window.location = '/libertar';
		} else if ($(this).is('.btn-goregistrar')) {
			window.location = '/registrar';
		}
	});
};

/**
 * Inicializa os controles de seleção de estado / cidade
 */
ale.utils.initEstadoCombo = function() {
	$('.control-estado').change(function(e) {
		var uf = $(this).find('option:selected').val();
		var ctCidade = $(this).parents('form').find('.control-cidade');

		var filterPosto = $(this).is('.filter-posto') ? '&filterPosto=true' : '';

		if (ctCidade.length && uf != '') {
			ctCidade.find('option:gt(0)').remove();
			$.getJSON('/json/cidades.js?uf='+uf+filterPosto,function(data) {
				if (data.status == '200') {
					var buff = [];
					for (var i = 0; i < data.dados.length; i++) {
						var cidade = data.dados[i];
						buff.push('<option value="'+ cidade.cidade_cida+'">'+cidade.cidade_cida+'</option>');
					}
					ctCidade.append(buff.join(''));
				} else {
					ctCidade.append('<option value="0" selected="selected">Nenhum resultado</option>');
				}
			});
		}
	});
	$('.control-estado').trigger('change');
};


/**
 * Inicializa os controles de seleção de estado / cidade
 */
ale.utils.initCidadePostoTrocaCombo = function() {
	$('.control-cidade-postotroca').change(function(e) {
		var uf = $(this).parents('form').find('.control-estado').eq(0).find('option:selected').val();
		var cidade = $(this).find('option:selected').val();
		cidade = tiraAcento(cidade);

		var ctPostotroca = $(this).parents('form').find('.control-postotroca');

		if (ctPostotroca.length && uf != '' && cidade != '') {
			ctPostotroca.find('option').remove();
			
			jQuery.getJSON( '/json/postostroca.js?uf='+uf+'&cidade='+ cidade,function(data) {				
				if (data.status == '200') {
					var buff = [];
					buff.push('<option value="">Selecione</option>');
					ale.dadosPosto = data.dados;
					for (var i = 0; i < data.dados.length; i++) {
						var postotroca = data.dados[i];
						buff.push('<option value="'+postotroca.cod_post+'" class="ctpost_'+i+'">'+postotroca.titulo_post+'</option>');
					}
					ctPostotroca.append(buff.join(''));
					$('.control-postotroca').trigger('change');
				} else if (data.status == '404') {
					alert("Não foram encontrados pontos de libertação para o estado e cidade selecionados.\nSelecione a opção \"Informar novo ponto de libertação\".");
				} else {
					alert('Houve um erro ao carregar a lista de cidades.');
				}
			});
		}
	});
	$('.control-cidade-postotroca').trigger('change');


	if ($('.control-postotroca').is('.populate-posto-dados')) {
		$('.control-postotroca').change(function() {
			var idx = $(this).find('option:selected').attr('class').replace(/ctpost_/gim,'');
			if (idx) {
				var dadosPosto = ale.dadosPosto[idx];
				$('input[name=cep]').val(dadosPosto.cep_post);
				$('input[name=rua]').val(dadosPosto.rua_post);
				$('input[name=numero]').val(dadosPosto.numero_post);
				$('input[name=bairro]').val(dadosPosto.bairro_post);
			}
		});

		$('.control-postotroca').trigger('change');

	}
};

ale.utils.initStarControl = function() {
	$('.ctaval')
		.filter('.ctaval-active')
		.find('img')
		.click(function(e) {
			var ctStar = parseInt($(this).attr('class').replace(/av_/gim,''));
            $field=$(this).parent().prev();
            $field.val(ctStar);
			$(this).parent()
                .removeClass('aval_0')
				.removeClass('aval_1')
				.removeClass('aval_2')
				.removeClass('aval_3')
				.removeClass('aval_4')
				.removeClass('aval_5')
				.addClass('aval_'+ctStar);
		});
};

ale.utils.initTopSearch = function() {
	$('#ctTopSearchBt').click(function() {
		$('#topFormSearch').trigger('submit');
	});

	$('#topFormSearch').submit(function(e) {
		var strSearch = $('#q').val();
		if ($.trim(strSearch).length < 3) {
			alert('Por favor, informe ao menos 3 caracteres para efetuar sua busca');
			e.preventDefault();
			return false;
		}
		return true;
	});
	
/*
 * Validações
 */	

	listaVal=new Array();
	listaVal['apelido']="Apelido";
	listaVal['bairro']="Bairro";
	listaVal['cep']="CEP";
	listaVal['cpf']="CPF";
	listaVal['cidade']="Cidade";
	listaVal['celular']="Celular";
	listaVal['email']="Email";
	listaVal['estado']="Estado";
	listaVal['imagem']="Foto de exibição";
	listaVal['nascimento']="Nascimento";
	listaVal['nome']="Nome";
	listaVal['numero']="Número";
	listaVal['rua']="Rua";
	listaVal['senha']="Senha";
	listaVal['senha_confirm']="Confirmar Senha";
	listaVal['site']="Site ou Blog";
	listaVal['titulo']="Título";
	listaVal['nome_ponto']="Nome do ponto";

/*
 * Participe passo 1:
 */

	$('#cadUsuarioPass1').submit(function(e) {
		var dados = $(this).find('input');
		var vazio = "";
		for (var i = 0; i < dados.length; i++) {
			if ((this[i].value == 0)) {
				vazio += listaVal[this[i].name] + "\n";
			}
		}
		if (vazio != "") {
			alert("Campos em branco: \n" + vazio);
			return false;
		} else if (!$('input[name=email]').val().match(/.+\@.+\..+/gim)) {
			alert("Campo de e-mail inválido");
			return false;
		} else if ($('input[name=senha]').val() != $('input[name=senha_confirm]').val()) {
			alert("Confirmação de senha informada é inválida");
			return false;
		}
	});
/*
 * Participe passo 2:
 */
	$('#cadUsuarioPass2').submit(function(e) {
		var dados = $(this).find('input');
		var vazio = "";

		for (var i = 0; i < dados.length; i++) {
			if (this[i].value == 0) {
				if ((this[i].name != 'celular') && (this[i].name != 'imagem') && (this[i].name != 'site')){
					vazio += listaVal[this[i].name] + "\n";
				}
			}
		}

		if (vazio != "") {
			alert("Campos em branco: \n" + vazio);
			return false;
		} else if (!$('input[name=nascimento]').val().match(/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/gim)) {
			alert('Campo de Nascimento com formato inválido. Utilize o formato dd/mm/aaaa');
			return false;
		} else if (!$('input[name=cep]').val().match(/^[0-9]{5}\-[0-9]{3}$/gim)) {
			alert('Campo de Cep com formato inválido. Utilize o formato 99999-999');
			return false;
		} else if (!$('input[name=cpf]').val().match(/[0-9]{2,3}\.[0-9]{3}\.[0-9]{2,3}\-[a-zA-Z0-9]{1,2}/gim)) {
			alert('Campo de CPF com formato inválido. Utilize o formato 999.999.999-99');
			return false;
		} 

		if($('input[name=celular]').val().length > 0){
			if (  !$('input[name=celular]').val().match(/\+[0-9]{2}\s[0-9]{4}\-[0-9]{4}/gim)) {
				alert('Campo de Celular com formato inválido. Utilize o formato +11 9999-9999');
				return false;
			}
		}

	});

/*
 * Pág Achei um livro passo 1
 */
	$('#formAcheiLivroPass1').submit(function(e) {
		var dados = $(this).find('input:text');
		if (dados[0].value == 0) {
			alert("Favor informar o RG do livro.");
			return false;
		}
		if (dados[0].value == 0) {
			alert("Formato de RG do livro inválido, por favor insira uma número válido.");
			return false;
		}
	});

/*
 * Pág Encontrar Livro - Por Livro
 */
	$('#formEncontrarLivro').submit(function(e) {
		var dados = $(this).find('input:text');
		if ((dados[0].value == 0)&&((dados[1].value == 0))) {
			alert("Favor preencher pelo menos um dos campos.");
			return false;
		}

	});
/*
 * Pág Encontrar Livro - Por Ponto de Troca
 */
	$('#formEncontrarPontoTroca').submit(function(e) {
/*
		var dados = $('select.control-postotroca option:selected');
		if ((dados.text() == 0)) {
			alert("Favor selecione o Ponto de Troca.");
			return false;
		}
*/
	});

/*
 * Pág Encontrar Livro - Por RG
 */
	$('#formEncontrarRG').submit(function(e) {
		var dados = $(this).find('input:text');
		if (dados[0].value == 0) {
			alert("Favor preencher o RG do livro.");
			return false;
		}
	});
/*
 * Pág Encontrar Livro - Por Apelido
 */
	$('#formEncontrarApelido').submit(function(e) {
		var dados = $(this).find('input:text');
		if (dados[0].value == 0) {
			alert("Favor preencher o Apelido.");
			return false;
		}
	});
/*
 * Pág Pontos de Troca
 */
	$('#formPostoTrocaCadastro').submit(function(e) {
		var dadosText = $(this).find('input');
		var vazio = "";

		for (var i = 0; i < dadosText.length; i++) {
		    if(this[i].name == 'cep') // ignorar este campo
	            continue;

			if ((this[i].value == 0)) {
				if( listaVal[this[i].name] != 'CEP' && listaVal[this[i].name] != 'Número' ){
					vazio += listaVal[this[i].name] + "\n";
				}
			}
		}

		var dadosSelect = $(this).find('select option:selected');

		for (var i = 0; i < dadosSelect.length; i++) {
			if ((dadosSelect.text() == 0)) {
				vazio += listaVal[dadosSelect[i].parent().name] + "\n";
			}
		}

		if (vazio != "") {
			alert("Campos em branco: \n" + vazio);
			return false;
		}
	});
};
function utf8_encode( s )
{
  return unescape( encodeURIComponent( s ) );
}

function utf8_decode( s )
{
  return decodeURIComponent( escape( s ) );
}

$(document).ready(function() {
	ale.init();
	ale.utils.buttonEvents();
	ale.utils.initEstadoCombo();
	ale.utils.initCidadePostoTrocaCombo();
	ale.utils.initStarControl();
	ale.utils.initTopSearch();
});
