function slideIt(element, controlBack, controlNext){
	// ****************************************
	// Slider de conteúdo
	// 
	
	$(element).each(function(i) {
		/*	@curPosition = posição atual da páginação
		 *	@tDuration = duração da animação em ms
		 *	@tOffset = largura do container 
		 *	@totalWidth = largura total ocupada pelos elementos (width + margins-laterais)
		 * 	@numPages = numero total de páginas a serem exibidos
		 */
		var curPosition = 0;
		var tDuration = 1500;
		var tOffset = parseInt($(element).parent().css("width"));
		var totalSize = 0;
		$(element).find("li").each(function(i){
			totalSize += parseInt($(this).outerWidth(true));
		});
		var numPages = Math.ceil(totalSize / tOffset);	
		// altera a largura da lista de acordo com a quantidade de itens e suas larguras
		$(element).css("width", totalSize);	

		// setup do slide, disabilita o primeiro item
		$(controlBack).addClass("disabled");
		if (numPages < 2) {
			$(controlNext).addClass("disabled");
		}
		$(controlNext).click(function(){
			if (!$(this).hasClass("disabled")) {
				curPosition = (curPosition + 1) % numPages;
				$(element).stop().animate({marginLeft: (-1 * tOffset * curPosition)}, tDuration);
				if (curPosition == (numPages -1)) {
					$(this).addClass("disabled");
				}
				$(controlBack).removeClass("disabled");
			}
			return false;			
		});
		$(controlBack).click(function(){
			if (!$(this).hasClass("disabled")) {
				curPosition = (curPosition - 1) % numPages;
				$(element).stop().animate({marginLeft: (-1 * tOffset * curPosition)}, tDuration);
	
				if (curPosition < 1) {
					$(this).addClass("disabled");	
				}
				$(controlNext).removeClass("disabled");
			}
			return false;
		});

	});
	// 
	// fim slider
	// ************************************
}


// Criar abas
function makeTab(element, controls, content, start) {
	
	$(element).each(function(i) {
		/* @element = elemento pai onde contém o componente
		 * @controls = lista onde contém os elementos seletores da aba (orelhas)
		 * @content = lista onde está contido cada fold da aba
		 * @start = posição inicial da aba (inclui marcador e conteúdo) (primeira posição = 1)
		 */
		var selectors = $(controls +"> li");
		var tabItens = $(content +"> li");
		var setupItem = tabItens.eq(start -1);

		tabItens.hide();
		selectors.removeClass("active").eq(start -1).addClass("active");
		setupItem.show();
		
		// Eventos
		selectors.on({
		click: function(ev) {
			ev.preventDefault();
			
			// Alternar abas somente se o item não estiver selecionado já
			if (!$(this).hasClass("active")) {
				tabItens.hide();
				selectors.removeClass("active");

				$(this).addClass("active");
				tabItens.eq($(this).index()).fadeIn("fast",
															function(){
																$(this).show(); }
															);
			}
		},
		mouseenter: function() {
			$(this).addClass("hover");
		},
		mouseleave: function() {
			$(this).removeClass("hover");	
		}		
		});
	});
}
function makeTicker(element, tickDirection, tickInterval, tickAnimationInterval) {

	$(element).each(function(i){
		var _mouseOver = false;
		var curPosition = 0;
		var tickController = $(element + " > ul");
		var tickItens = $(element + " > ul > li");
		var numItens = $(tickItens).length;
		var tickOffset = (tickDirection == "horizontal") ? parseInt(tickController.css("width")) : parseInt(tickItens.first().css("height"));

		// cria o evento "passTicker" responsável pela açõa de acionar o Ticker
		$(tickController).on({
			passticker: function() {
			if (!_mouseOver) {
				curPosition = (curPosition + 1) % numItens;
				// Ticker horizontal
				if (tickDirection == "horizontal") {
					$(tickItens).css({
									float: "left",
									width: tickOffset								
									});
					$(tickController).css({
									width: tickOffset * numItens
									})
					$(this).stop().animate({marginLeft: (-1 * tickOffset * curPosition)}, tickAnimationInterval);
				}

				// Ticker vertical
				else {
					$(tickItens).css({
						float: "left"
					});
					$(this).stop().animate({marginTop: (-1 * tickOffset * curPosition)}, tickAnimationInterval);				
				}
			} // fim if (!_mouseOver)
		},
		mouseenter: function(){
			_mouseOver = true;
		},
		mouseleave: function(){
			_mouseOver = false;	
		}
		});
		
		// Ativa o timer para execução do ticker
		var interval = setInterval(function() {
			$(tickController).trigger('passticker');
		}, tickInterval);

	});
}

function searchUtils(){
	var valueField = $('#text-utils').val();
	var idSec = $('#id_sec').val();
	$("#utilities .results").addClass("loading");
	if((valueField.length>=3) && (valueField!='')) 
		getPage4(urlUtils+'?q='+valueField+'&id_sec='+idSec, 'results-utils', setTimeout(function() {
																					$("#utilities .results").trigger('refreshcontrols').removeClass("loading");
																				}, 100)
	);
	return false;
}
function countInnerHeight(element) {
	var sumHeight = 0;
	$(element).children().each(function() {
		sumHeight += $(this).outerHeight();
	});
	return sumHeight;
}

function autoScroll(element, controls, controlBack, controlNext) {
	$(element).each(function(i) {
		var amountTime = 0;
		var scrollInterval;
		var totalHeight, delta, deltaPage, scrollAmount = 0;
		
		$(this).on({
			refreshcontrols: function() {
				totalHeight = countInnerHeight($(element));
				$(controlBack +","+ controlNext).addClass("disabled").removeClass("hover");

				if ($(this).scrollTop() > 0)
					$(controlBack).removeClass("disabled");
				if (totalHeight > $(this).height())
					$(controlNext).removeClass("disabled");
			},
			rolldown: function() {
				totalHeight = countInnerHeight($(element));
				delta = totalHeight - $(this).height();
				if (amountTime <= delta) {
					amountTime += 1;
					$(controlBack).removeClass("disabled");
					$(this).scrollTop(amountTime);
					$(controlNext).addClass("hover");
				}
				else {
					clearInterval(scrollInterval);
					$(controlNext).addClass("disabled").removeClass("hover");
				}
			},
			rollup: function() {
				if (amountTime > 0) {
					amountTime -= 1;
					$(this).scrollTop(amountTime);
					$(controlNext).removeClass("disabled");
					$(controlBack).addClass("hover");
				}
				else {
					clearInterval(scrollInterval);
					$(controlBack).addClass("disabled").removeClass("hover");
				}

			}
		});

// 		inicializa o plugin
		$(this).trigger('refreshcontrols')

		$(controlNext).hover(
			function() {
// mouseenter()
//				inicia a rolagem
				if (!$(this).hasClass("disabled")) {
					scrollInterval = setInterval(function() {
						$(element).trigger('rolldown');
					}, 10);
				}
			},
			function() {
// mouseleave()
//				cancela a rolagem
				$(this).removeClass("hover");
				clearInterval(scrollInterval);
			}).click(function() {
				deltaPage = parseInt(totalHeight - $(element).scrollTop() - $(element).height());
				scrollAmount = deltaPage > $(element).height() ? $(element).height() : deltaPage;
				amountTime += scrollAmount;
		});
		$(controlBack).hover(
			function() {
// mouseenter()
//				inicia a rolagem
				if (!$(this).hasClass("disabled")) {
					scrollInterval = setInterval(function() {
						$(element).trigger('rollup');
					}, 10);
				}
			},
			function() {
// mouseleave()
//				cancela a rolagem
				$(this).removeClass("hover");
				clearInterval(scrollInterval);
			}).click(function() {
				scrollAmount = amountTime > $(element).height() ? $(element).height() : amountTime;
				amountTime -= scrollAmount-1;
		});
	});
}

function createPagination(element, controls, itensByPage) {
	$(element).each(function(i) {
		
		var total, pageNumber, count, counTT, htmlBuffer;
		var listedItens = $(element).children("li");
		total = listedItens.size();
		
		$(controls).click(function(ev){
			var $this = $(ev.target);
			if (ev.target.nodeName == "A") {
				ev.preventDefault();
				if ($this.parent("li").hasClass("back")) {
					pageNumber--;
					$(element).trigger('goToPage');
				}
				else {
					if ($this.parent("li").hasClass("next")) {
						pageNumber++;
						$(element).trigger('goToPage');
					}
					else {
						pageNumber = $this.closest("li").index();
						$(element).trigger('goToPage');
					}
				}
			}
		});
		
		$(this).on({
			setup: function() {
				pageNumber = 1;
				if (total > itensByPage)
					$(element).trigger('goToPage');
			},
			makeIt: function() {
				htmlBuffer = pageNumber == 1 ? '<li class="back"><span>Anterior</span></li>' : '<li class="back"><a href="#">Anterior</span></li>';
				count = 0;
				counTT = "00";
				do {
					count++;
					counTT = count < 10 ? '0'+count : count;
					htmlBuffer += '<li>';
					htmlBuffer += count == pageNumber ? '<span class="active">'+counTT+'</span></li>' : '<a href="#">'+counTT+'</a>';
					htmlBuffer += '\n';
				} while (count*itensByPage < total);
				htmlBuffer += pageNumber < count ? '<li class="next"><a href="#">Pr&oacute;ximas</a></li>' : '<li class="next"><span>Pr&oacute;ximas</span></li>';
				$(controls).find("ul").html(htmlBuffer);
			},
			goToPage: function() {
				listedItens.hide().slice((pageNumber-1)*itensByPage, pageNumber*itensByPage).show();
				$(window).scrollTop($(element).offset().top - 100);
				$(element).trigger('makeIt');
			}
		});
		
		
		$(this).trigger('setup');
		
	});
}

function ALERTA(message) {
	$("#alerta").text(message);	
}
$(document).ready(function(){

	var navegador = $.browser;
	// Detectando o navegador IE para desativar animações com opacidade:
	var alphaTypeEffects = navegador.msie && navegador.version < 9 ? false : true;

		
	$("#special li").hover(function(){
		$(this).addClass("active");
		if (alphaTypeEffects)
		{
			$("#special li").stop().animate({opacity: 0.3 });
			$(this).stop().animate({opacity: 1 });
		}
		
	}, function() {
		$(this).removeClass("active");
	});

	$("#special").mouseleave(function(){
		if (alphaTypeEffects) {
			$("#special li").stop().animate({opacity: 1 });
		}
	});
	
	/// Drop down
	$("li.dropdown > ul").css("opacity",0).hide();
	$("li.dropdown").mouseenter(function(){
		$(this).addClass("hover-class");
		$(this).find("ul").show().stop().animate({opacity: 1}, 200);
	}).mouseleave(function(){
		$(this).removeClass("hover-class");
		$(this).find("ul").stop().animate({opacity: 0}, 200, function(){ $(this).hide(); });
	});

	slideIt("#quick-menu ul.tab-contents li.campanhas ul","#quick-menu li.campanhas .back", "#quick-menu li.campanhas .next");
	slideIt("#quick-menu ul.tab-contents li.servicos ul","#quick-menu li.servicos .back", "#quick-menu li.servicos .next");
	slideIt("#quick-menu ul.tab-contents li.sites ul","#quick-menu li.sites .back", "#quick-menu li.sites .next");
	makeTab("#quick-menu",".tab-names", ".tab-contents",1);
	makeTicker("#ticker .roll-container", "vertical", 5000, 300);
	autoScroll("#utilities .results", "#utilities .controls", "#utilities .controls .back", "#utilities .controls .next");
	createPagination("#search-results #search-list > ul", "#search-results .pagination", 15);
	
	/// Live Search
	
	$("#q").on({
		keyup: function(){
			var valueField = $(this).val();
			if((valueField.length>=3) && (valueField!='')) {
				getPage(urlSearch+'?q='+valueField+'&id_sec='+$("#id_sec").val(),'q-container');
				$("#q-container-wraper").fadeIn("fast");
			}
			else
				$("#q-container-wraper").fadeOut("fast");
		},
		mouseenter: function(){
			if($("#q-container").children("li").size() > 0) {
				$("#q-container-wraper").fadeIn("fast");
				searchPosActive = true;
			}
		},
		mouseleave: function(){
			searchPosActive = false;
		}
	});
	// Comportamento do combo Live Search
	$("#main-search").on({
		mouseleave: function(){
			setTimeout(function() {
				if (!searchPosActive) {
					$("#q-container-wraper").fadeOut("fast");
					searchPosActive = true;
				}
			}, 50);
		}
	});

	$(".q-suggested").live('click',function(e){
		e.preventDefault();
		
		$("#q").val($(this).attr("title"));
		$("#q-container-wraper").fadeOut("fast");
		return false;
	});
	$("#utilities .results li h4").live("click", function() {
		$("#utilities .results li.expanded").removeClass("expanded");
		$(this).parent("li").addClass("expanded");
		$("#utilities .results").trigger('refreshcontrols');
	});
	
	
	$("#info-paint-container").hide();
	$("#info-paint .info").mouseenter(function(){
		$("#info-paint-container").show().animate({opacity: 1}, "fast");
	});
	$("#info-paint").mouseleave(function(){
		$("#info-paint-container").stop().animate({opacity: 0}, "fast", function() { $(this).hide(); });
	});
	
	$("#btn-submit-utils").click(function(){
		searchUtils();
	});

	$('.pagin').click(function(){
		$("#"+ $(this).attr("rel")).toggle();
		return false;
	});

	$('.collapse-button').click(function() {
		$(this).toggleClass("collapsed not-collapsed").parent().find('ul').slideToggle();
	});

});


