function Utils() {
	this.siteRoot = "http://" + window.location.toString().split("/")[2];
	this.init = function(){
		this.fontSize();
		this.hoverie6();
		this.ie6selectvalidation();
		this.genericTools();
	}

	this.validatorContact = function(){

		$("#pp_full_res form").validate({
			rules: {
				nome: {
					required:true 
				},
				from: {
					required: true,
					email: true
				},
				receiver: {
					required:function(){
						if($("#receiver")!= null){
							return true
						}else{
							return false
						}
					} 
				},
				to: {
					required: true,
					email:function(){
						if($("#pp_full_res #tos").parents("form").attr('id')!= 'comunicar_erro'){
							return true
						}
					} 
				},
				email: {
					required: true,
					email: true
				},
				msg: {
					required: true
				}
			},
			errorPlacement: function(error, element) {
		        $(".errorMsg").css("visibility","visible")
		    },
		    submitHandler : function(form) {
		    	/*var url = $(form).attr("action") + "?" + $(form).serialize();
		    	$("#pp_full_res form").load(url);
		    	return false;*/
				$.ajax({
					type: "post",
					cache: false,
					url:$(form).attr("action"),
					data:$(form).serialize(),
					contentType: "application/x-www-form-urlencoded; charset=utf-8",
					beforeSend: function(){
						
					},
					success: function(html) {
						$("#pp_full_res form input#captchaText").removeClass("error");
						$("#pp_full_res form").html(html)
					},
					error: function(xhr){
						$("#pp_full_res form label.erro").html("Campo inválido");
						$("#pp_full_res form input#captchaText").addClass("error");
						utils.changeCaptcha();
					}
				});
		    }
		
		});
	}
	this.changeCaptcha = function(){
		var captcha = $("#pp_full_res form div#captcha");
		if(captcha != null){
			$.ajax({
				url: "/captcha.generate.action",
				success: function(html){
					$("#pp_full_res form img").remove();
					var image = $("<img/>");
					image.attr("src", "/captcha.generate.action?rnd=" + Math.random()).appendTo(captcha);
				}
			});
		}		
	}
	this.ie6selectvalidation = function(){
		$("form#contact select").blur(function(){
			if(navigator.appVersion.indexOf("MSIE")>0){
					if($("form#contact select").hasClass("error")){
						$("form#contact select.error").siblings().css("color","red");
					}else{
						$("form#contact select.valid").siblings().css("color","#727272");
					}
				}
		})
		
	}
	/**
	 * validação do formulário de fale conosco
	 */
	this.faleconoscoValidate = function() {
		
		$("form#contact").validate({
			rules: {
				nome: "required",
				from: {
					required: true,
					email: true
				},
				subject: "required"
			},
			errorPlacement: function(error, element) {
		        $(".errorMsg").css("visibility","visible")
				if(navigator.appVersion.indexOf("MSIE")>0){
					if($("form#contact select").hasClass("error")){
						$("form#contact select.error").siblings().css("color","red");
					}else{
						$("form#contact select.valid").siblings().css("color","#727272");
					}
				}
				
		    }
		});
	}
	
	this.genericTools = function() {
		$("footer.main .toolbar a#print").click(function(){
			window.print();
			return false;
		});
	}
	
	this.fontSize = function(){
		$('#fontSize a').click(function(){
			$('#fontSize a').removeClass('selected');
			$(this).addClass('selected');
			//$('.contentview article:first').css('font-size', $(this).attr('rel')+'px');
			$('body').css('font-size', $(this).attr('rel')+'px');
		})
	}
	
	this.hoverie6 = function(){
		// hover dos menus
		$('div.cidadao section.pageContent .menuHome li,.left .cidadao li').hover(function(){ $(this).addClass('menuHomehovera');} , function(){$(this).removeClass('menuHomehovera'); });
		$('div.gestor section.pageContent .menuHome li,.left .gestor li').hover(function(){ $(this).addClass('menuHomehoverb');} , function(){$(this).removeClass('menuHomehoverb'); });
		$('div.profissional_da_saude section.pageContent .menuHome li,.left .profissional_da_saude li').hover(function(){ $(this).addClass('menuHomehoverc'); } , function(){$(this).removeClass('menuHomehoverc'); });
		// hover do menu de perfil
		$('#perfil .gestor').hover(function(){ $(this).addClass('gestorhover'); } , function(){ $(this).removeClass('gestorhover'); });
		$('#perfil .cidadao').hover(function(){ $(this).addClass('cidadaohover'); } , function(){ $(this).removeClass('cidadaohover'); });
		$('#perfil .profissional_da_saude').hover(function(){ $(this).addClass('saudehover'); } , function(){ $(this).removeClass('saudehover'); });
		// selected do menu de perfil
		if($('#page').attr('class').indexOf('cidadao') != -1) { $('li.cidadao').css('backgroundPosition','0px -28px'); }
		if($('#page').attr('class').indexOf('gestor') != -1) { $('li.gestor').css('backgroundPosition','-260px 0px;'); }
		if($('#page').attr('class').indexOf('profissional_da_saude')!= -1) { $('li.profissional_da_saude').css('backgroundPosition','-520px 0px;'); }
		
		// hover dos botoes
		$('.submit, .button, #rateYes input, #rateNo input, #send').hover(function(){ $(this).css({'background':'#000','text-decoration':'underline'}); } , function(){ $(this).css({'background':'#666','text-decoration':'none'}); });
		$('#main').hover(function(){$('.main_view').css('zIndex','1')}, function(){ $('.main_view').css('zIndex','-1')});
	}
	
	this.paginacao = function()	{
		var gal = 0;
		
		if($('.paging_gallery a').length > 5) $('#gal_next').show();
		
		for(i=5; i <= $('.paging_gallery a').length; i++) $('.paging_gallery a').eq(i).hide(); 
		
		$('.paging_gallery a').click(function() { 
			gal = $(this).text() - 1;
			
			if($(this).text() > 1) $('#gal_prev').show(); else  $('#gal_prev').hide();
		});	

		// botao avancar
		$('#gal_next').click(function() {
			$('.paging_gallery a').eq(gal + 1).click();
				
			for(i=0; i < gal; i++) {
				if($('.paging_gallery a:visible').length < 5) break; 
				
				$('.paging_gallery a').eq(i - 1).hide();
				$('.paging_gallery a').eq(i + 5).show();
			}
			
			if($('.paging_gallery a:last').is(':visible')) $('#gal_next').hide(); 
		});	

		// botao voltar
		$('#gal_prev').click(function()	{
			if(gal != 0)	{ 
				$('.paging_gallery a').eq(gal - 1).click(); 
			
				if(!$('.paging_gallery a').eq(gal).is(':visible'))	{
					$('.paging_gallery a').eq(gal).show();
					$('.paging_gallery a:visible:last').hide();
				}
			
				if(!$('.paging_gallery a:last').is(':visible')) $('#gal_next').show();
			}
			
			else $('#gal_prev').hide(); 
		});

		if(lista > 2) $('#gal_next').show();
						
		for(i=8; i <= $('#gallery_grid li').length; i++) $('#gallery_grid li').eq(i).hide();

		// clique do link de pasta
		$('.pag_t').click(function()	{
			$('.pag_t').css('border','none');
			$(this).css('border','1px solid #4E4E50');
			
			pag_atual = $(this).attr('rel');
			
			
			if($(this).text() > 1) $('#gal_prev').show(); else $('#gal_prev').hide();

			for(i=0; i < pag_atual; i++) $('#gallery_grid li').eq(i).hide();

			pag_avv = eval(parseInt(pag_atual) + parseInt(8));

			for(i=pag_atual; i < pag_avv; i++) $('#gallery_grid li').eq(i).show();

			for(i=pag_avv; i < total; i++) $('#gallery_grid li').eq(i).hide();
		});
	}
	
	/**
	 * exibe mensagem de carregando
	 */
	this.showLoadingMsg = function(status) {
		if(status) {
			if($("#ajaxLoading").size()==0)
				$("body").append("<div id=\"ajaxLoading\">Aguarde, carregando...</div>");
		} else {
			$("#ajaxLoading").remove();
		}
	}
}

function Faq() {
	this.init = function()	{
		$('#menu_faq ul').addClass('agenda');
		
		$('#menu_faq ul li:even').each(function(){
			var title = $(this).html();
			$(this).html('<span class="span_faq span_faq_on" title="Expandir resposta"></span><a href="#" title="Expandir resposta">'+ title +'</a>');
		})
		$('#menu_faq ul li:odd').each(function(){
			var content = $(this).html();
			$(this).html('<div>'+ content +'</div>').addClass('faq').children().css('width','537px');
		})
		
		$('#menu_faq li').toggle(
			function() {
				$(this).find('span.span_faq').addClass('span_faq_off').attr('title', 'Recolher Resposta');
				$(this).next('.faq').slideDown(500);
			},
			function()	{
				$(this).find('span.span_faq').removeClass('span_faq_off').attr('title', 'Expandir Resposta');
				$(this).next('.faq').slideUp(500);
			}
		);
	}
}

function LightBox() {
	this.gallery = function()	{
		$("a[rel^='prettyPhoto'], button[rel^='prettyPhoto']").prettyPhoto({
			changepicturecallback : function() {
				utils.validatorContact();
				utils.changeCaptcha();
			}
		});
		
		//utils.validatorContact();
		
		$('.detail_gallery_off').click(function(){
			$('.paging_grid').hide();
			 $(this).removeClass('detail_gallery_off').addClass('detail_gallery_on');
			 $('#span_grid').removeClass('grid_gallery_on').addClass('grid_gallery_off');
			 $('#gallery_grid').fadeOut(0);
			 $('#gallery_detail').fadeIn(700);
			 $.cookie('gallery["type"]', 'details');
		});
		 
		$('.grid_gallery_off').click(function()	{
			$('.paging_grid').show();
			 $(this).removeClass('grid_gallery_off').addClass('grid_gallery_on');
			 $('#span_detail').removeClass('detail_gallery_on').addClass('detail_gallery_off');
			 $('#gallery_detail').fadeOut(0);
			 $('#gallery_grid').fadeIn(700);
			 $.cookie('gallery["type"]', 'grid');
		});
		
		var galleryType = $.cookie('gallery["type"]');
		
		if(galleryType == 'details'){  
			$('.detail_gallery_off').click();
		}else{
			$('.grid_gallery_off').click();
		}
	}
}

function Resources(url, page, objectId, template){
	var url = url + '?template='+template+'&page='+page;
	this.init = function(){
		var thisClass = this;
		$('#listCategories').html('<li><a href="#">Carregando categorias...</a></li>');
		$('.date-pick').datepicker({
			dateFormat: 'dd/mm/yy', 
			monthNames : ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], 
			dayNamesMin: ["D", "S", "T", "Q", "Q", "S", "S"],
			prevText: "&#x25C4;",
			nextText: "&#x25BA;"
		});

		$('#exactDate').change(function(){
			$('#replicateExactDate').val($(this).val());
		})
		
		/*
		$('#mainResources').load(url, function(){
			$('#mainResources a[rel^="prettyPhoto"]').prettyPhoto();
		});
		*/
		
		//validação do form de busca por keywords e submit do mesmo
		$("form#downloadForm").validate({
			rules: {
				keywords: "required"				
			},
			messages: {
				keywords: "Campo obrigatório"
			}
			
		});
		
		$("form#downloadForm").ajaxForm({ 
	        target: '#mainResources',
	        beforeSubmit: function() {
	        	utils.showLoadingMsg(true);
	        	if($("input#startPublicationDate").val()!="")
	        		$("form#downloadForm input.startPublicationDate").val($("input#startPublicationDate").val());
	        	if($("input#endPublicationDate").val()!="")
	        		$("form#downloadForm input.endPublicationDate").val($("input#endPublicationDate").val());
	        	var str = thisClass.getMimeTypes().toString();
	        	$("form#downloadForm input.hiddenmn").val(str);
	        	
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	        	$("input#firstsubmit").val("false");
	        } 
	    });
		
		
		coreService.listTagsResource(objectId,{
			callback:function(tags) {
				$('#listCategories').html('');
				for ( var i in tags ){
					$('#listCategories').append('<li><a href="'+ tags[i] +'">'+ tags[i] +'</a></li>');
					
				}
				if(tags == '' || tags == null) {
					$('#div_categ').hide();
				}
			}
		});
		
		
		$('aside.typeSearch form#tagForm').ajaxForm({ 
	        target: '#mainResources',
	        beforeSubmit : function() {
	        	utils.showLoadingMsg(true);
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	            $('#mainResources').fadeIn('slow');
	            $('html, body').animate({scrollTop:0}, "fast");
	        } 
	    });
	    
		
		$('.pagination a').live('click', function() {
			utils.showLoadingMsg(true);
			$('#mainResources').load($(this).attr('href')+'&template=downloads/ajax', function(){
				utils.showLoadingMsg(false);
				$('#mainResources a[rel^="prettyPhoto"]').prettyPhoto();
			});
			return false;
		});
		
		//validação da busca por período
		$("form#buscaperiodoform").validate({
			rules: {
				startPublicationDate: "required",
				endPublicationDate: "required"
			},
			messages: {
				startPublicationDate: "Campo obrigatório",
				endPublicationDate: "Campo obrigatório"
			}
		});
		
		$("form#buscaperiodoform").ajaxForm({ 
	        target: '#mainResources',
	        beforeSubmit: function() {
	        	utils.showLoadingMsg(true);
	        	var str = thisClass.getMimeTypes().toString();
	        	$("form#buscaperiodoform input.hiddenmn").val(str);
	        	$("form#buscaperiodoform input[name='keywords']").val($("form#downloadForm input[name='keywords']").val());
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	        } 
	    });
		
		//busca por tipo de arquivos
		$("form#mimeTypeForm input").click(function() {
			var arr = thisClass.getMimeTypes();
			if(arr.length==0)
				return;
			$("input[name='mimeTypes']").val(arr.toString());
			if($("form#downloadForm input[name='keywords']").val()!=""){
				$("form#mimeTypeForm input[name='keywords']").val($("form#downloadForm input[name='keywords']").val());
			}
			else{
				$("form#mimeTypeForm input[name='keywords']").val("*")
			}
			if($("input#startPublicationDate").val()!="")
        		$("form#mimeTypeForm input.startPublicationDate").val($("input#startPublicationDate").val());
        	if($("input#endPublicationDate").val()!="")
        		$("form#mimeTypeForm input.endPublicationDate").val($("input#endPublicationDate").val());
			
			$("form#mimeTypeForm").submit();
			
		});
		
		$("form#mimeTypeForm").ajaxForm({ 
	        target: '#mainResources',
	        beforeSubmit : function() {
	        	utils.showLoadingMsg(true);
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	        	$('html, body').animate({scrollTop:0}, "fast");
	        } 
	    });
		
		/*
		$('#downloadForm .keyword').val('*');
		$('#downloadForm').submit();
		$('#downloadForm .keyword').val('');
		*/
		
		$("#mainResources").load(url);
	}
	
	/**
	 * retorna os mimetypes
	 */
	this.getMimeTypes = function() {
		var arr = [];
		$("input.checks").each(function() {
			if($(this).is(':checked')) { arr.push($(this).val()); }
		});
		return arr;
	}
}

/**
 * para página de busca
 * @returns {Busca}
 */
function Busca() {
	
	this.init = function() {
		$('.date-pick').datepicker({
			dateFormat: 'dd/mm/yy', 
			monthNames : ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], 
			dayNamesMin: ["D", "S", "T", "Q", "Q", "S", "S"],
			prevText: "&#x25C4;",
			nextText: "&#x25BA;"
		});
		
		//validação para o form superior e cópia dos valores dos campos de data
		$("form#buscaform").validate({
			rules: {
				keywords: "required"				
			},
			messages: {
				keywords: "Campo obrigatório"
			}
		});
		
		$("form#buscaform input[type='submit']").click(function() {
			$("form#buscaform input#startDate").val($("input#date2").val());
			$("form#buscaform input#endDate").val($("input#date3").val());
		});
		
		$("form#buscaperiodoform").validate({
			rules: {
				startPublicationDate: "required",
				endPublicationDate: "required"
			},
			messages: {
				startPublicationDate: "Campo obrigatório",
				endPublicationDate: "Campo obrigatório"
			}
		});
		
		$("form#buscaperiodoform input[type='submit']").click(function() {
			$("form#buscaperiodoform input[name='keywords']").val($("form#buscaform input[name='keywords']").val());
			
		});
	}
}


/**
 * para as páginas de Atualizações
 */
function Atualizacoes() {
	
	this.init = function(startObjectId, noIds, name, parentf) {
		var action = "/atualizacoes/search.action";
		var pars = "method=newSearch" +
				   "&startObjectId=" + startObjectId +
				   "&notStartObjectId=" + noIds +
				   "&sortSearch=lastEditionDate"  +
				   "&searchInAllField=true" +
				   "&searchType=2" +
				   "&search=true" +
				   "&page=0" +
				   "&keywords=*" +
				   "&name=" + name +
				   "&parentf=" + parentf +
				   "&filterSearch=contents";
		utils.showLoadingMsg(true);
		$("section.pageUpdates").load(action + "?" + pars, function() {
			utils.showLoadingMsg(false);
		});
	}
	
}

function Agenda(){
	this.currentDate = null;
	this.currentType = null;
	this.init = function(type, data){
	
		$('.date-pick').datepicker({
			dateFormat: 'dd/mm/yy', 
			monthNames : ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], 
			dayNamesMin: ["D", "S", "T", "Q", "Q", "S", "S"],
			prevText: "&#x25C4;",
			nextText: "&#x25BA;"
		});
		this.currentDate = data;
		this.currentType = type;
		
		//define data mínima e máxima pelo tipo de página (agenda ou aconteceu)
		var arr = data.split("/");
		var date = new Date(arr[2], arr[1] - 1, arr[0]);
		if(type == 'aconteceu')
			$('.date-pick').datepicker("option", "maxDate", date);
		else
			$('.date-pick').datepicker("option", "minDate", date);
		
		$('.pagination a').live('click', function() {
			utils.showLoadingMsg(true);
			$('#internalAgenda').load($(this).attr('href'), function() {
				utils.showLoadingMsg(false);
			});
			return false;
		})
		
		//validação do form de busca por keywords e submit do mesmo
		$("form#agendaForm").validate({
			rules: {
				keywords: "required"				
			},
			messages: {
				keywords: "Campo obrigatório"
			}
			
		});
		$("form#agendaForm").ajaxForm({ 
	        target: '#internalAgenda',
	        beforeSubmit: function() {
	        	if($('#agendaForm .keyword').val()=="") {
	        		return false;
	        	}
	        	utils.showLoadingMsg(true);
	        	if($("input#startArchiveDate").val()!="")
	        		$("aside.typeSearch form input.startArchiveDate").val($("input#startArchiveDate").val());
	        	if($("input#endArchiveDate").val()!="")
	        		$("aside.typeSearch form input.endArchiveDate").val($("input#endArchiveDate").val());
	        	
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	        	$("input#firstsubmit").val("false");
	        } 
	    });
		
		//validação do form de busca por período
		$("form#agendaperiodoform").validate({
			rules: {
				startArchiveDate: "required",
				endArchiveDate: "required"
			},
			messages: {
				startArchiveDate: "Campo obrigatório",
				endArchiveDate: "Campo obrigatório"
			}
		});
		$("form#agendaperiodoform").ajaxForm({ 
	        target: '#internalAgenda',
	        beforeSubmit: function() {
	        	utils.showLoadingMsg(true);
	        	if($('#agendaForm .keyword').val()=="") {
	        		$("form#agendaperiodoform input.keyword").val("*");
	        	} else {
	        		$("form#agendaperiodoform input.keyword").val($('#agendaForm .keyword').val());
	        	}
	        },
	        success: function() {
	        	utils.showLoadingMsg(false);
	        } 
	    });
		
		
		$('#uniqueDate').change(function(){
			$('#replicateEndDate').val($(this).val());
		})
		
		//submit inicial, no load da página
		$('#agendaForm .keyword').val('*');
		if(type == 'aconteceu'){
			$('#agendaForm .startArchiveDate').val('01/01/1800');
			$('#agendaForm .endArchiveDate').val(data);
		} else {
			$('#agendaForm .startArchiveDate').val(data);
			$('#agendaForm .endArchiveDate').val("31/12/2099");
		}
		$('#agendaForm').submit();
		$('#agendaForm .keyword').val('');
	}

}

function rateContent(id){
	var thisClass = this;
	this.id = id;
	this.init = function(){
		$('#formRateYes').submit(function(){
			$(this).ajaxSubmit({target: '#noResponse', success: thisClass.voted()});
			return false;
		})
		
		$('#submitNo').live('click', function(){
			$(this).parent().ajaxSubmit({target: '#noResponse', success: thisClass.success()});
			return false;
		})
		
		$('#rateYes').click(function(){
		    $('#formRateYes').submit(); 
		})
		
		if($.cookie(thisClass.id) == 'true'){
			thisClass.voted();
		}
	}
	
	this.success = function(){
		$('.pp_close').click();
		window.setTimeout('$(\'#openModalOk\').click()', 700);
		thisClass.voted();
	}
	
	this.voted = function(){
		$.cookie(thisClass.id, 'true');
		$('#rateYes').hide();
		$('#rateNo').hide();
		$('#contentHelp').html('Obrigado por avaliar este conteúdo');
	}
}

$(document).ready(function(){
	utils = new Utils();
	utils.init();
	lightbox = new LightBox();
	lightbox.gallery();
	
	var statusMenu = 0;
	$('#perfil li').hover(
		function(){
			if($(this).attr('class').indexOf('select') != -1) { statusMenu =1; } 
			else $(this).addClass('selected');} ,
	
		function(){ if(statusMenu != 1) $(this).removeClass('selected'); statusMenu = 0; });
			
		$('.sf-menu').superfish();
			
		$('#menu ul li ul, #menuSubHome ul li ul').each(function(){
			var max = 0;
			$(this).css({ position: 'absolute', display: 'block' });
			$(this).children().each(function(){
				if($(this).width() > max)
					max = $(this).width();
			})
			$(this).css({ position: '', display: 'none' });
			$(this).children().attr('style', 'width: '+ max +'px!important');
		});
			
	});

function send(f)
{
var chosen;
chosen = f.selectbox_goto.options[f.selectbox_goto.selectedIndex].value;
if (chosen != "null") {
window.open(chosen);
return false;
}
else {
return false;
}
} 
