//==================================================================//
//==================================================================//
//jQuery personalizado

(function($) {
	$.fn.extend({
	//==================================================================//
	//destaques
	
		slides: function(tempo) {
			
			//variáveis
			tempo = tempo || false;
			
			//para cada objeto do seletor
			$(this).each(function() {			
			
				//variáveis do objeto
				var objeto = $(this);
				var itens = objeto.children();
				var total = itens.size();
				
				//------------------------------------------------------------------//
				//preparar slides
				
				itens.hide();
				
				//------------------------------------------------------------------//
				//caso haja mais de um slide
				
				if(total > 1) {
				
					//------------------------------------------------------------------//
					// navegar
					
					var navegar = $("<div class='navegar' />")
					.append($("<a class='anterior' title='Anterior'><b></b></a>").click(function() { slide.navegar("anterior"); slide.timer(); }))
					.append($("<a class='proximo' title='Próximo'><b></b></a>").click(function() { slide.navegar("proximo"); slide.timer(); }))
					.insertAfter(objeto);
					
					// dimensionar
					if($(window).width() < 1100) { navegar.addClass("mini"); }
				
					//------------------------------------------------------------------//
					//criar índice
					
					var indice = $("<div class='indice' />").appendTo(objeto.parent());

					itens.each(function(index) {
					
						var item = $("<a />").text(index+1)
						.click(function() { slide.navegar(index); slide.timer(); })
						.appendTo(indice);

						if(index == 0) { item.addClass("on"); }
						
					});

				}
				
				//------------------------------------------------------------------//
				//função que aciona slides
				
				var slide = {

					num : 0,

					navegar : function(quem) {		
						
						var ultimo = total - 1;
						
						//setar próximo slide
						switch(quem) {
							
							case "anterior" : slide.num = (slide.num == 0) ? ultimo : (slide.num - 1); break;
							case "proximo" : slide.num = (slide.num == ultimo) ? 0 : (slide.num + 1); break;
							case "primeiro" : slide.num = 0; break;
							case "ultimo" : slide.num = ultimo; break;
							default : slide.num = eval(quem);
						
						}
						
						var atual = itens.eq(slide.num);
						
						//------------------------------------------------------------------//
						//animar sildes
						
						var delay = ($.browser.msie) ? 0 : 1000;
						
						objeto.children(":visible").fadeOut(delay);
						atual.fadeIn(delay);
						
						//------------------------------------------------------------------//
						// atualizar índice
						
						indice.children().removeClass("on").eq(slide.num).addClass("on");
					
					},
					
					timer : function(acao) {
					
						acao = acao || false;
					
						//caso haja tempo
						if(tempo) {
						
							//zerar timer
							if(slide.show) { slide.show = window.clearInterval(slide.show); }
						
							//setar timer
							if(!acao) {
								slide.show = window.setInterval(function() {
									slide.navegar("proximo");
								}, (tempo * 1000));
							}
							
						}
						
					}
					
				}
				
				//------------------------------------------------------------------//
				//acionar ao carregar imagens
				
				var carregar = ($.browser.msie) ? $(window) : itens.filter(":first").find("img");
				
				// exibir o primeiro
				carregar.load(function() {
					slide.navegar("primeiro");
					slide.timer();
				});
				
			});

			//retornar seletor
			return this;

		},
		
	//==================================================================//
	// Galerias de fotos

		galeria: function() {
			
			//para cada objeto do seletor
			$(this).each(function() {
			
				//variáveis do objeto
				var objeto = $(this);
				var itens = objeto.find("ul a");
				var total = itens.size();
				var figura = (objeto.find("figure").size() > 0) ? objeto.find("figure") : $("<figure />").insertBefore(objeto.find("ul"));
				
				//------------------------------------------------------------------//
				// manipular itens
				
				itens.click(function(event) {
				
					event.preventDefault();
					
					// atualizar ítens
					itens.removeClass("on");
					var foto = $(this).addClass("on").attr("href");
					
					// trocar imagem
					var imagem = figura.find("img");
					
					imagem.css({ "width": imagem.width(), "height": imagem.height() })
					.attr("src", "interface/imagens/alpha.gif").attr("src", foto)
					.load(function() {
						$(this).removeAttr("style")
						.removeAttr("height").removeAttr("width");
					});
					
					// posicionar
					var posicao = objeto.offset().top - 20;
					if(posicao < $(window).scrollTop()) {
						$("html, body").stop().animate({ scrollTop : posicao });
					}
					
				});
				
				//------------------------------------------------------------------//
				// caso haja mais de um slide
				
				if(total > 1) {
				
					// navegação
					var navegar = $("<div class='navegar'><a class='proximo' title='Próximo' /a><a class='anterior' title='Anterior' /></div>")
					.appendTo(objeto)
					.find("a").click(function() {
						
						var atual;
						var ultimo = total-1;
						itens.each(function(index) { if($(this).is(".on")) { atual = index; } });
						
						//setar atual
						if($(this).attr("class") == "anterior") { atual = (atual == 0) ? ultimo : (atual - 1); }
						else { atual = (atual == ultimo) ? 0 : (atual + 1); }
					
						// acionar
						itens.eq(atual).trigger("click");
						
					});
					
				}
				
				//------------------------------------------------------------------//
				// acionar o primeiro
				
				$("<img />").attr("src", itens.first().addClass("on").attr("href"))
				.appendTo(figura);
			
			});

			//retornar seletor
			return this;

		},
		
	//==================================================================//
	//Validar formulário
	
		validar: function() {
		
			//para cada objeto do seletor
			$(this).each(function() {
			
				$(this).submit(function() {
				
					var formulario = $(this);
					var campos = formulario.find("fieldset");

					//verificar campos
					campos.filter(".check, .erro, .ok").each(function() {
					
						var classe;
					
						// validar email
						if ($(this).children("input").is("[name=email]")) {
						
							var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
							classe = (emailPattern.test($(this).children("input").val())) ? "ok" : "erro";
							
						}
						// validar preenchidos
						else {
						
							classe = ($(this).children("input:text, input:password, textarea").val().length > 0) ? "ok" : "erro";
							
						}					
						
						//aplicar resultado
						$(this).removeClass("erro ok").addClass(classe);
						
					});
					
					//se estiver ok
					if(!campos.is(".erro")) {
						$(this).find("button").text("Enviando");
					}
					else { return false; }
					
				});
				
			});
			
			//retornar seletor
			return this;
		
		},
	
	//==================================================================//
	// Igualar
	
		igualar : function() {
			
			var maxH = 0;
			
			//setar maior altura
			$(this).each(function() {
				//encontrar maior valor
				if(maxH < $(this).height()) { maxH = $(this).height(); }
			})
			.css("min-height", maxH);
			
			//hack IE6
			if ($.browser.msie && $.browser.version == "6.0") { $(this).css("height", maxH); }
	
			//retornar seletor
			return this;

		}
	
	//==================================================================//
	});
})(jQuery);

//==================================================================//
