Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

//pilha de requisições para "voltar"
var stack = new Array();

//carrega uma url via ajax
function carregar(url){
	iniciaRequisicao();
	empilharUrl(url);	
	/*$("#conteudo").load(url, function(){							   
		                       menuCemPorCento();		                       
	                         });
	*/                       
	$.ajax({
		  url: url,		  
		  contentType: 'application/x-www-form-urlencoded; charset=ISO-8859-1',
		  success: function(html){
		    $("#conteudo").html(html);
		    menuCemPorCento();
		  }
	});			                         
}

function carregarPost(url, params){
	iniciaRequisicao();
	empilharUrl(url);	
	/*$("#conteudo").load(url, function(){							   
		                       menuCemPorCento();		                       
	                         });
	*/                       
	$.ajax({
		  url: url,
		  data: params,
		  type: 'POST',
		  contentType: 'application/x-www-form-urlencoded; charset=ISO-8859-1',
		  success: function(html){
		    $("#conteudo").html(html);
		    menuCemPorCento();
		  }
	});			                         
}

function empilharUrl(url){
	stack[stack.length] = url;
}

//faz uma máscara pra o campo input de data
function mascaraData(campoData){
    var data = campoData.value;
	if (data.length == 2){
        data = data + '/';
        campoData.value = data;
		return true;              
    }
    if (data.length == 5){
	    data = data + '/';
	    campoData.value = data;
	    return true;
	}
	if(data.length >= 10){
		data = data.substring(0,10);
		campoData.value = data;
		return true;
	}
}

//realiza cálculos para ajustar o gif animado no centro da tela
function prepararTelaBloqueio(){
	var height = document.body.clientHeight;
	var width = document.body.clientWidth;	
	var top = (height/2)-16; // 16 é a metade do gif animado.
	var left = (width/2)-16;		
    $.extend($.blockUI.defaults.pageMessageCSS, { width:'32px', margin:'0px', top: top+'px', left: left+'px', textAlign:'center', color:'#000', backgroundColor: '#fff', opacity: '0.5', border:'0px solid #fff' });            
	bloqueiaTela(); 
}

//carrega as linhas de pesquisa
function carregarLinhasPesquisa(cdGrupoPesquisa){
	if(cdGrupoPesquisa != -1){
		prepararTelaBloqueio();	            
		//bloqueiaTela(); 
		$("#selectLinhaPesquisa").load("projetoPesquisa.listaLinhasPesquisa.logic?grupoPesquisaVO.nrSequencial="+cdGrupoPesquisa, function(){desbloqueiaTela();});	
		document.getElementById("selectLinhaPesquisa").disabled = false;
	}													                                                              
}

//carrega os projetos de pesquisa no seu respectivo <select>
function carregarProjetosPesquisa(cdLinhaPesquisa){
    if(cdLinhaPesquisa != -1){
	    prepararTelaBloqueio();
		//bloqueiaTela();	
		$("#selectProjetoPesquisa").load("projetoPesquisa.listaProjetosPesquisa.logic?linhaPesquisaVO.cdLinhaPesquisa="+cdLinhaPesquisa, function(){desbloqueiaTela(); liberarBotaoProjeto("selectProjetoPesquisa", "botaoProjetoPesquisa");});
    }	
}

//libera ou bloqueia o botão de seleção dos projetos (pesquisa e extensão)
function liberarBotaoProjeto(selectId, buttonName){
	if(document.getElementById(selectId).length == 1 && document.getElementById(selectId).options[0].value == "-1"){
		document.getElementById(buttonName).disabled = true;
	}else{
		document.getElementById(buttonName).disabled = false;
	}
}

//o atributo tipoProjeto serve para escrever o título da página "Projeto de [Pesquisa] ou [Extensão]"
function carregarInformacaoProjetoPesquisa(nrAnoCdProjeto, tipoProjeto){
	//split pelo separador "%%"
	var splited = nrAnoCdProjeto.split("%%");
	var anoProjeto = splited[0];
	var cdProjeto = splited[1];
	//carregar ajax                                                                                                                          
	carregar('projetoPesquisa.seleciona.logic?projetoIdentificacaoVO.nrAnoProjeto='+anoProjeto+'&projetoIdentificacaoVO.nrProjeto='+cdProjeto);		
}

function bloqueiaTela() {
	$.blockUI('<img src="imagens/icones/ajax_loader.gif"/>');
}

function desbloqueiaTela(){
	$.unblockUI();
}

function voltarAjax(){	
	if(stack.length > 1){
		var url = stack[stack.length-2];		
		carregar(url);		
		//precisa remover o pai e o filho das últimas requisições
		stack.remove(stack.length-1);
		stack.remove(stack.length-1);		
	}
}

function carregarProjetosExtensao(cdAreaTematica){
	if(cdAreaTematica != -1){
		prepararTelaBloqueio();
		//bloqueiaTela();	
	    $("#selectProjetoExtensao").load("projetoExtensao.listaProjetosExtensao.logic?eixoTematicoVO.cdEixoTematico="+cdAreaTematica, function(){desbloqueiaTela(); liberarBotaoProjeto("selectProjetoExtensao","botaoProjetoExtensao");});
	}	
}

function iniciaRequisicao() {
	// adiciona div e exibe mensagem "carregando"
	$("#conteudo").html('<div id="carregando">Carregando</div>');
}

function enviarEmailContato(nome, email, mensagem){
	if(nome == '' || email == '' || mensagem == ''){
		alert('Os campos NOME, E-MAIL e MENSAGEM são obrigatórios');
	}else{
  		carregar(escape('contato.envia.logic?contato.nome='+nome+'&contato.email='+email+'&contato.mensagem='+mensagem));
	}
}

function efetuarVotoEnquete(){
	var i, aux = 0;	
	for(i = 0; i < 3; i++){
		if($("#opcoesEnquete").find("input")[i].checked == true){			
			aux = i;
		}	
	}
	var cdOpcaoVotada = $("#opcoesEnquete").find("input")[aux].value; 
	carregar('portal.efetuaVoto.logic?opcaoEnquete.id='+cdOpcaoVotada);
}

function executarBusca() {
	var filtro = document.getElementById('busca').value;
	
	var browser = navigator.appName;
    if (browser=="Microsoft Internet Explorer") {
    	filtro = encodeURI(filtro);
    }
	
	if (filtro.length > 2) {
		carregar('busca.lista.logic?paginaAtual=1&filtro=' + filtro);			
	}
	else {
		alert('O termo para a busca deve conter pelo menos 3 caracteres.');
	}
}

function executaBuscaKeyPress(e) {
	var keynum;
										
	if(!window.event) { // IE
		keynum = e.which;
		if (keynum == '13') {
			executarBusca();
		}
	}
}

function executaBuscaAvancada() {
	var autor = document.getElementById('autor').value;
	var palavraChave = document.getElementById('palavrasChave').value;
	var grupoPesquisa = '';
	var areaTematica = '';
	var tipo = ''; //está procurando em pesquisa, extensão ou em ambas?
	
	var browser = navigator.appName;
    if (browser=="Microsoft Internet Explorer") {
    	autor = encodeURI(autor);
    	palavraChave = encodeURI(palavraChave);
    }
        	
	if (document.getElementById('radioGrupoPesquisa').checked) {
		grupoPesquisa = document.getElementById('idGrupoPesquisa').value;
		tipo = 'PESQUISA'; 
	}else if (document.getElementById('radioAreaTematica').checked) {
		areaTematica = document.getElementById('idAreaTematica').value;
		tipo = 'EXTENSAO';
	}else{
		tipo = 'AMBAS';
	}
	
	var url = '?paginaAtual=1&filtroBuscaAvancada.tipo='+tipo;
	var parametroInformado = false;	
	if (autor != '') {
		url += '&filtroBuscaAvancada.autor=' + autor;
		parametroInformado = true;
	}
	
	if (palavraChave != '') {
		url += '&filtroBuscaAvancada.palavraChave=' + palavraChave;
		parametroInformado = true;
	}
	
	if (grupoPesquisa != '') {
		url += '&filtroBuscaAvancada.cdGrupoPesquisa=' + grupoPesquisa;
		parametroInformado = true;
	}
	
	if (areaTematica != '') {
		url += '&filtroBuscaAvancada.cdEixoTematico=' + areaTematica;
		parametroInformado = true;
	}
	
	if (parametroInformado) {
		carregar('buscaAvancada.executaBusca.logic' + url);
	}
	else {
		alert('Informe pelo menos um filtro de busca.');
	}
}

function loginSipex() {
	var user = document.getElementById('usuario').value;
	var url = 'https://www.furb.br/pqex/?j_username=' + user;
	document.location.assign(url);
}

function paramStr(param) {
	var browser = navigator.appName;
    if (browser=="Microsoft Internet Explorer") {
    	return encodeURI(param);
    }    
    return param;
}
