// JavaScript Document
$(document).ready(function(){
	//lightbox das imagens	
	$(".link_imagem_principal").lightBox({
		overlayBgColor: '#003',
		overlayOpacity: 0.8,
		containerResizeSpeed: 350,
		keyToPrev: 'a',
		keyToNext: 'p',
		txtImage: 'Imagem',
		txtOf: 'de',
		imageBtnClose: 	'arquivos/light/close.gif',
		imageLoading: 	'arquivos/light/loading.gif',
		imageBtnPrev: 	'arquivos/light/prev.gif',
		imageBtnNext: 	'arquivos/light/next.gif'			
	});	
	//album dos produtos
	$("#thumbs_detalhes img").each(function(i){
		$(this).click(function(){
			$("#produtos_grandes img").each(function(j){
				if (j==i) {
					$(this).fadeIn("slow");	
				} else {
					$(this).fadeOut("slow");
				}
			})
		});
	});
	//adicionar onsubmit ao formulário de cadastro
	$("#form_contato, #form_oportunidade").submit(function(){
		return validaContato($(this));				
 	});			
	$("#form_contato :input[type!=button][type!=submit][type!=reset]").focus(function(){
		$(this).addClass("campo_selecionado").removeClass("campo_errado");
	}).blur(function(){
		$(this).removeClass("campo_selecionado");									 
	});	
	$("#form_telefone").mask("(99)9999-9999");
	//verifica se na página existe o select 'form_busca_grupo'
	if ($("#form_busca_grupo").val()) {
		//limpa as options do grupo
		montaLinhas(3);
		//adiciona o evento de change
		$("#form_busca_grupo").change(function(){
			var parametro = $(this).val();
				parametro = parametro.split("_");
			var campo = parametro[0];
			var valor = parametro[1];
			//muda o endereço da página
			document.location.href = "?p=dicas&"+campo+"="+valor;
		});
	}
	//mouse over das imagens iniciais
	$("a img")
		.mouseover(function(){			
			$(this).fadeTo({duration: 300, queue:false }, 0.7); 
		})
		.mouseout(function(){
			$(this).fadeTo({duration: 300, queue:false }, 1); 
		});
	//ação dos botões voltar
	$(".voltar").click(function(){
		history.back();							 
	});
	//data de nascimento
	$("#form_nascimento").datepicker({ 
		dayNamesMin: ['Do', 'Se', 'Te', 'Qu', 'Qu', 'Se', 'Sá'],
		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'],
		monthNames: ['Janeiro','Fevererio','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
		dateFormat: 'dd/mm/yy',
		// yearRange: '2000:2010',
		yearRange: '-100:+1',
		changeMonth: true,
		changeYear: true,
		minDate: new Date(1900, 0, 1),
		maxDate: '0'
	});

});
//função que valida o cadastro de cliente
function validaContato(form){	
	//variável que contém os erros de preenchimento do formulário	
	var erros = "";	
	//para cada elemento (input=text, select, textarea e button)
	// do 'form' passado por parâmetro executa as ações de validação
	$.each($(form).find(":input[title*='Campo Obrigat'], :radio[title*='Campo Obrigat']"), function(){	
																								
		//verifica o nome dado ao campo do input
		var nomeCampo = $(this).attr("title");
			nomeCampo = nomeCampo.split(" - ");
			nomeCampo = nomeCampo[0];
			
		//verifica se o campo é do tipo radio
		if ($(this).attr("type")=="radio"){			
			if (!$(this).attr("checked")){
				//incrementa a variável 'erros'
				erros += "<li>O campo "+nomeCampo+" é obrigatório</li>";
				//altera o css do campo
				$(this).addClass("campo_errado");
			}			
		//verifica se o alt do campo possui a palavra 'E-mail'
		} else if (nomeCampo.indexOf("E-mail")!=-1) {			
			//regra de expressão regular para validação de e-mail
			var regraEmail = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;	
			if ($(this).val()==""){
				//incrementa a variável 'erros'
				erros += "<li>O campo "+nomeCampo+" é obrigatório</li>";
				//altera o css do campo
				$(this).addClass("campo_errado");		
			} else if(!regraEmail.test($(this).val())) {
				//incrementa a variável 'erros'
				erros += "<li>O campo "+nomeCampo+" não é válido</li>";
				//altera o css do campo
				$(this).addClass("campo_errado");
			}						
		} else {
			//se não for um endereço de e-mail
			//verifica se foi digitado alguma coisa
			if ($(this).val()==""){
				//verifica se o campo é senha e a ação é de editar
				if ($("#acao").val()=="cadastrar" || nomeCampo.indexOf("Senha")==-1) {
					//incrementa a variável 'erros'
					erros += "<li>O campo "+nomeCampo+" é obrigatório</li>";
					//altera o css do campo
					$(this).addClass("campo_errado");	
				}
			} else {
				if (nomeCampo=="Senha" && $("#acao").val()=="cadastrar") {
					if ($("#senha_confirmacao").val()) {
						if ($(this).val()!=$("#senha_confirmacao").val()) {
							//incrementa a variável 'erros'
							erros += "<li>O valor do campo "+nomeCampo+" não confere com a confirmação.</li>";
							//altera o css do campo
							$(this).addClass("campo_errado");
							$("#senha_confirmacao").addClass("campo_errado");
						}
					}
				}
			}
		} 
	});	
	//verifica se a var 'erros' não está mais vazia
	if (erros) {
		//cria um lista um elemento do tipo lista não ordenada
		var lista = $("<ul></ul>").html(erros);
		//cria o título da lista
		var titulo = $("<h2></h2>").html("Erros encontrados:");		
		//colocar a lista e o título na div 'retorno' e depois a mostra
		$("#retorno").html("").append($(titulo), $(lista)).slideDown("slow");
		//reposiciona a barra de rolagem da página
		$.scrollTo(300, "medium");
		//retorna false para o envio do formulário
		return false;
	}  else {
		if ($(form).attr("id")=="form_contato") {			
			//cria um parágrafo para colocar na div de retorno
			var paragrafo = $("<p></p>").html("Aguarde enquanto sua mensagem é enviada.");
			//cria o título da lista
			var titulo = $("<h2></h2>").html("Enviando...");	
			//colocar a lista e o título na div 'retorno' e depois a mostra
			$("#retorno").html("").append($(titulo), $(paragrafo)).slideDown("slow");		
			//reposiciona a barra de rolagem da página
			$.scrollTo(300, "medium");	
			//envio do formulário
			var dados = ""	
			//pega os valores do formulário
			$(form).find(":input[type!=checkbox][type!=submit][type!=button][type!=reset][type!=file], input:checked").each(function(i, elemento) {
				//verifica se o i é maior que 0 e assim adiciona o &
				if (i) dados += "&";
				//monta a variável container
				dados += elemento.name+"="+$(elemento).val();
				//valores[elemento.name] = $(elemento).val();
			});	
			//mostra o preloader
			$("#preloader").show();	
			//envia a requisição		
			$.ajax({
				//url para a requisição
				url: "apoio/php/contato.php",
				//tipo de requisição
				type: "POST",
				//anula o cacha, 
				cache: false,
				//dados a serem enviados
				data: dados,
				//função de sucesso
				success:function(resposta){				
					//analisa a resposta do ajax
					if(resposta==1){
						//cria um parágrafo para colocar na div de retorno
						var paragrafo = $("<p></p>").html("Sua mensagem foi enviada corretamente. Em breve, entraremos em contato. Obrigado.");
						//cria o título da lista
						var titulo = $("<h2></h2>").html("Mensagem enviada com sucesso!");	
						//colocar a lista e o título na div 'retorno' e depois a mostra
						$("#retorno").html("").append($(titulo), $(paragrafo)).slideDown("slow");
						//limpa o formulário
						$(form).trigger("reset");
					} else {					
						//cria um parágrafo para colocar na div de retorno
						var paragrafo = $("<p></p>").html("Houve um problema técnico ao enviar sua mensagem. Por favor, tente novamente.");
						//cria o título da lista
						var titulo = $("<h2></h2>").html("Erro ao enviar a mensagem");	
						//colocar a lista e o título na div 'retorno' e depois a mostra
						$("#retorno").html("").append($(titulo), $(paragrafo)).slideDown("slow");
					}				
				},
				//função de erro
				error:function(XMLHttpRequest, textStatus, errorThrown){
					//cria um parágrafo para colocar na div de retorno
					var paragrafo = $("<p></p>").html("Houve um problema técnico ao enviar sua mensagem. Por favor, tente novamente.");
					//cria o título da lista
					var titulo = $("<h2></h2>").html("Erro ao enviar a mensagem");	
					//colocar a lista e o título na div 'retorno' e depois a mostra
					$("#retorno").html("").append($(titulo), $(paragrafo)).slideDown("slow");			
				
				}
			});
			//retorna false para o envio do formulário
			return false;
		} else if ($(form).attr("id")=="form_oportunidade") {
			return true;
		}
	}	
}
//monta um array com as linhas, categorias e subcategoria
function montaLinhas(nivel) {
	//limpa as options do grupo
	limpaOptions("form_busca_grupo", "Filtrar");
	//busca as informações das linhas
	$.ajax({
		type: "GET",
		url: "conteudo/paginas/comum/linha_categoria_subcategoria.php",
		cache: false,
		dataType: "json",
		success: function(json){
			if (nivel>=1) {
				//laço para percorrer as linhas
				var opcao_grupo = $("<optgroup></optgroup>").attr("label", "Linhas");
				$.each(json.linhas, function(i, linha) {
					//guarda o nome da linha atual
					var opcao = $("<option></option>").attr({"value":"linha_"+linha.id}).html(linha.nome);
					$(opcao_grupo).append($(opcao));
				});
				$("#form_busca_grupo").append($(opcao_grupo));
			}
			if (nivel>=2) {
				//laço para percorrer as categorias
				var opcao_grupo = $("<optgroup></optgroup>").attr("label", "Categorias");
				$.each(json.linhas, function(i, linha) {
					//guarda o nome da linha atual
					var nomeLinha = linha.nome;
					//laço para percorrer as categorias
					$.each(linha.categorias, function(j, categoria) {					
						//guarda o nome da categoria atual
						var opcao = $("<option></option>").attr({"value":"categoria_"+categoria.id}).html(nomeLinha+" > "+categoria.nome);
						$(opcao_grupo).append($(opcao));									
					});
				});
				$("#form_busca_grupo").append($(opcao_grupo));				
			}
			if (nivel>=3){
				//laço para percorrer as subcategorias
				var opcao_grupo = $("<optgroup></optgroup>").attr("label", "Subcategorias");
				$.each(json.linhas, function(i, linha) {
					//guarda o nome da linha atual
					var nomeLinha = linha.nome;
					//laço para percorrer as categorias
					$.each(linha.categorias, function(j, categoria) {					
						//guarda o nome da categoria atual
						var nomeCategoria = categoria.nome;
						//laço para percorrer as subcategorias
						$.each(categoria.subcategorias, function(k, subcategoria) {
							//alert(nomeLinha+" > "+nomeCategoria+" > "+subcategoria.nome);
							var opcao = $("<option></option>").attr({"value":"subcategoria_"+subcategoria.id}).html(nomeLinha+" > "+nomeCategoria+" > "+subcategoria.nome);
							$(opcao_grupo).append($(opcao));	
						});					
					});
				});
				$("#form_busca_grupo").append($(opcao_grupo));
				//seleciona a opção do filtro
				var opcao = location.href;
					opcao = opcao.split("&");
				if (opcao.length>1) {
					opcao = opcao[1];
					opcao = opcao.replace("=", "_");
					$("#form_busca_grupo").val(opcao);
				}
			}
		}
	});		
}
//função que retira as options de um select
function limpaOptions(id, texto) {
	$("#"+id).find("option").remove();
	$("#"+id).find("optgroup").remove();
	$("#"+id).append("<option value=\"\">"+texto+"</option>");
}
