<%ARGS>
$query => ''
$st => ''
</%ARGS>
<%shared>
my $global_results;
my %contents;
my %argscpy = $m->top_args;
my %srchargs;
my ($result_categorias, $result_nomes);
my ($bannerloc, $node) = ("TRP",0);
my $request = "search";
my $reserved_query;
</%shared>
<%method initvars>
<%init>

my $options;
my $filters; # options after validation
#foreach my $key ( keys %srchargs){
#	
#	$m->out($key . ":" . $srchargs{$key} . "<br>");
#	
#}
#---------------------------------------------------------------------
# verificar pesquisas reservadas
#---------------------------------------------------------------------
my $query = $m->comp("/_shared/procs/get_query.m"); 
$query =~ s/^\s+(.*)/$1/;
$query =~ s/(.*)\s+$/$1/;
$query =~ s/\%//g;
my $ptitle = $query;
$query = $m->comp('/_shared/procs/utils/get7bitstr.m', str=>$query);
my @reserved = qw(cambio concurso download);

foreach my $word (@reserved){
	
	if ($query =~ m/$word/i){
	
		$reserved_query = $word . "s";
		last;
		
	}
	
}

#---------------------------------------------------------------------
# pesquisas reservada
#---------------------------------------------------------------------
if ($reserved_query){
	
	$request = "home"; # para fundo da área central (ver set_tablelock)
	$contents{'main'} = 'reserved';

#---------------------------------------------------------------------
# pesquisa normal
#---------------------------------------------------------------------
}else{
	
	#---------------------------------------------------------------------
	# verificar opções de pesquisa
	#---------------------------------------------------------------------
	$options = $m->comp("/_shared/procs/get_searchoptions.m");

	#---------------------------------------------------------------------
	# se não foram especificadas no painel de opçoes, procurar no query
	#---------------------------------------------------------------------

		#---------------------------------------------------------------------
		# procurar opção com email incluída no query
		#---------------------------------------------------------------------
		my $options_inquery;
		
		if (($query =~ s/\b(sem|com|with|without)*\s*email+(s)*\b//ig) && $$options{options} != 1){
			$options_inquery = 1;
			if ($1 =~  m/(sem|without)/i){
				$$options{'net1'} = 0;
			}else{
				$$options{'net1'} = 1;
				$$options{'options'} = 2;
			}
		}
	#	$m->out("test email: query: $query<br>");
		
		#---------------------------------------------------------------------
		# procurar agentes económicos incluídos no query
		#---------------------------------------------------------------------
		my $agents = $m->comp("/_shared/data/agents.m");
		my %agents_inquery;
		
		foreach my $key (keys %$agents){
			
			next if ($$agents{$key} =~ /^servi/i);
			next if ($$agents{$key} =~ /^ag/i);	# conflito com 'Agentes de Aderencia'
			
			my $word = $m->comp('/_shared/procs/utils/get7bitstr.m', str=>$$agents{$key});
			
			if ($query =~ s/\b$word(s|es)*\b//ig){
				
				$agents_inquery{$key} = 1;
	#			$m->out("key: $key<br>");
				
			}
		}
		
	#	$m->out("test agn query: $query<br>");
		
		if ((keys %agents_inquery) && ($$options{options} != 1)){
			
			$options_inquery = 1;
			delete $$options{'agnlist'};
			$$options{'options'} = 2;
	
			foreach my $key (keys %$agents){
				
	#			$m->out("test key: $key: ");
				
				if (exists $agents_inquery{$key}){
					
					$$options{$key} = 1;
	#				$m->out("in<br>");
				
				}else{
					delete $$options{$key};
	#				$m->out("out<br>");
				}
			}
		}
		
		#---------------------------------------------------------------------
		# limpar query (menos particulas de localização)
		#---------------------------------------------------------------------
		$query =~ s/ SA$| LDA$| SUC$| CRL$| SGPS$| SA[\-\(]| SA \(| LDA[\-\(]| LDA \(| SUC[\-\(]| SUC \(| CRL[\-\(]| CRL \(| SGPS[\-\(]| SGPS \(/ /igo;
		$query =~ s/\»|\«|\>|\<|\/|&|,|;|-|_|\*|\(|\)|\'|\"|:|º|ª|%|®|\+ |\+$/ /igo;
		$query =~ s/ AO(?= )| AS(?= )| COM(?= )| DA(?= )| DAS(?= )| DE(?= )| DO(?= )| DOS(?= )| OS(?= )| OU(?= )| PARA(?= )| POR(?= )| SEM(?= )| AND(?= )| AT(?= )| FOR(?= )| IN(?= )| OF(?= )| ON(?= )| OR(?= )| THE(?= )| THEM(?= )| WITH(?= )| WITHOUT(?= )| AL(?= )| LA(?= )| LAS(?= )| LO(?= )| LOS(?= )| CON(?= )| EL(?= )| EN(?= )| DEL(?= )| SIN(?= )//igo;
		#$query =~ s/ AO(?= )| AS(?= )| CRL$| DA(?= )| DAS(?= )| DE(?= )| DO(?= )| DOS(?= )| SUC$| LDA$| OS(?= )| PARA(?= )| POR(?= )| SEM(?= )| COM(?= )| PRE(?= )| THE(?= )| AND(?= )| OF(?= )| FOR(?= )| ON(?= )| WITH(?= )| WITHOUT(?= )| THEM(?= )| IN(?= )| SGPS$//go;
		#'
		#---------------------------------------------------------------------
		# procurar opção zona geográfica incluída no query
		#---------------------------------------------------------------------
		my $querycpy = $query;
		if (($querycpy =~ s/\b(em|no|nos|na|nas|at|from)\s+(.+)$//ig) || ($versao == 2 && $querycpy =~ s/\b(anywhere)\b//i)){
			
			my $iszone;
			
			my ($zone, $err, $zcod, $zdsc, $vRgnFilter, $RgnStr);
			$zdsc = $2;
			$zdsc =~ s/^\s+(.*)/$1/;
			$zdsc =~ s/(.*)\s+$/$1/;
			#$m->out("zdsc: $zdsc<br>");
			
			if ($zdsc !~ m/^(PO|RAMA|MADEIRA)$/i){
			
				if (($zdsc =~ m/\btodo o pais\b/i) || ($versao == 2 && $zdsc =~ m/\banywhere\b/i)){
					#$m->out("zdsc: $zdsc<br>");
					if ($$options{options} != 1){
						$$options{'zone'} = "all";
						$$options{'zcod'} = 0;
						$$options{'zdsc'} = "";
						$options_inquery = 1;
					}
					$query = $querycpy;
				}elsif ($zdsc =~ m/distrito/i){
					$zone = 'dst';
					($err, $zcod, $zdsc, $vRgnFilter, $RgnStr) =  $m->comp("/_shared/procs/processzone.m", vLang=>$versao, zone=>$zone, zcod=>$zcod, zdsc=>$zdsc, table=>'tdistconc', textfield=>'descricao', codefield=>'cod_distrito', matchcodeindx=>1, returncodeindx=>1, errors=>[-9004,-9005], label_pt=>undef, label_uk=>undef);
					$iszone = 1 unless ($err == -9004);
				}elsif ($zdsc =~ m/concelho/i){
					$zone = 'cnc';
					($err, $zcod, $zdsc, $vRgnFilter, $RgnStr) =  $m->comp("/_shared/procs/processzone.m", vLang=>$versao, zone=>$zone, zcod=>$zcod, zdsc=>$zdsc, table=>'tdistconc', textfield=>'descricao', codefield=>'cod_concelho', matchcodeindx=>0, returncodeindx=>0, errors=>[-9006, -9007], label_pt=>'concelho', label_uk=>'district');
					$iszone = 1 unless ($err == -9006);
				}else{
					$zone = 'lcl';
					($err, $zcod, $zdsc, $vRgnFilter, $RgnStr) =  $m->comp("/_shared/procs/processzone.m", vLang=>$versao, zone=>$zone, zcod=>$zcod, zdsc=>$zdsc, table=>'tlocalidades', textfield=>'descricao', codefield=>'cod_localidade', matchcodeindx=>0, returncodeindx=>0, errors=>[-9008, -9009], label_pt=>'localidade', label_uk=>'locality');
					$iszone = 1 unless ($err == -9008);
				}
		#			$m->out("zcod: $zcod<br>");
			
				if ($iszone){
					if ($$options{options} != 1){
						$$options{'options'} = 2;
						$$options{'zone'} = $zone;
						$$options{'zcod'} = $zcod;
						$$options{'zdsc'} = $zdsc;
						$options_inquery = 1;
					}
					$query = $querycpy;
				}
			}
		}
		
		

	#---------------------------------------------------------------------
	# validar agora as opções de pesquisa
	#---------------------------------------------------------------------
	$filters = $m->comp('/_shared/procs/getfilters.m', srchargs=>$options);

	#---------------------------------------------------------------------
	# erros relacionados com as opções de pesquisa
	#---------------------------------------------------------------------
	if ($filters->{err}){
		
		$$global_results{'filters'} = $filters;
		$contents{'main'} = 'filter_errors';
		%srchargs = (%argscpy, %$options);
		$srchargs{query} = lc($query);
	
	}else{


	#	$m->out("test zdsc query: $query<br>");
	
		#---------------------------------------------------------------------
		# limpar agora o query das particulas de localização
		#---------------------------------------------------------------------
		$query =~ s/ EM(?= )| NA(?= )| NO(?= )| NAS(?= )| AT(?= )| FROM(?= )//go;

		#---------------------------------------------------------------------
		# fechar painel de opcoes sempre que exista uma qualquer opção
		#---------------------------------------------------------------------
		$$options{'options'} = 2 if $filters->{str};
		%srchargs = (%argscpy, %$options);
	
		#---------------------------------------------------------------------
		# adaptar query
		#---------------------------------------------------------------------
		$srchargs{'orig_query'} = $query;
		#$query =~ s/^\s+(.*)/$1/;
		#$query =~ s/(.*)\s+$/$1/;
		$srchargs{query} = lc($query);
		#$argscpy{query} = lc($query); # ???

		my $qrcd = $srchargs{qrcd};
		my ($tipo_item, $itemid) = $m->comp("/_shared/procs/utils/parseqrcd.m",qrcd=>$qrcd);
	
		if ($query || $qrcd){
				
			######################################################################
			#---------------------------------------------------------------------
			# pesquisa global
			#---------------------------------------------------------------------
			$global_results = $m->comp("/_shared/procs/gn_search.m", srchargs=>\%srchargs, filters=>$filters);
		
			#---------------------------------------------------------------------
			# pesquisa por telefone
			#---------------------------------------------------------------------
			if (exists $$global_results{'telefone'}){
				
				if (!$$global_results{'telefone'}->{err}){
					$contents{'main'} = 'telefone';
				}else{
					$contents{'main'} = 'sem_resultados';
				}
				
			#---------------------------------------------------------------------
			# pesquisa por email
			#---------------------------------------------------------------------
			}elsif (exists $$global_results{'email'}){
				
				if (!$$global_results{'email'}->{err}){
					$contents{'main'} = 'email';
				}else{
					$contents{'main'} = 'sem_resultados';
				}
				
			#---------------------------------------------------------------------
			# outras pesquisas
			#---------------------------------------------------------------------
			}else{
				
				my $err_catc = 	$$global_results{'rubrica_codigo'}->{'err'}; $err_catc = -1 unless defined($err_catc);
				my $err_cat1 = 	$$global_results{'rubrica_inicial'}->{'err'}; $err_cat1 = -1 unless defined($err_cat1);
				my $err_cat2 = 	$$global_results{'rubrica'}->{'err'}; $err_cat2 = -1 unless defined($err_cat2);
				my $err_name = 	$$global_results{'nome'}->{'err'}; $err_name = -1 unless defined($err_name);
				my $err_name1 = $$global_results{'nome_inicial'}->{'err'}; $err_name1 = -1 unless defined($err_name1);
				#my $err_name2 = $$global_results{'nome_parcial'}->{'err'}; $err_name2 = -1 unless defined($err_name2);
				my $err_key;
				
				#---------------------------------------------------------------------
				# Se a pesquisa por rubrica aponta para uma rubrica directa
				# enquanto que a pesquisa inicial tem resultados, ignorar a 
				# rubrica directa e usar resultados da pesquisa por rubrica inicial,
				#---------------------------------------------------------------------
				# um exemplo é a pesquisa 'vinho' cujo único resultado directo
				# 'Depósitos para Vinho' ofuscava todas as rubricas 
				# que começam por vinho. 
				#---------------------------------------------------------------------
				# isto acontece porque o resultado da primeira pesquisa
				# (por titulo inicial) é ignorado na segunda pesquisa
				# ver /_shared/procs/gn_search.m
				#---------------------------------------------------------------------
				if ($err_cat2 == 0 && $err_cat1 != -1){
					
					$err_cat2 = $err_cat1;
					$$global_results{'rubrica'} = $$global_results{'rubrica_inicial'};
					
				}
				
#				$m->out("<!--");
#				$m->out("err_catc: rubrica_codigo:$err_catc<br>");
#				$m->out("err_cat1: rubrica_inicial:$err_cat1<br>");
#				$m->out("err_cat2: rubrica:$err_cat2<br>");
#				$m->out("err_name: nome:$err_name<br>");
#				$m->out("-->");
			
				
				$result_categorias = (($err_cat1 != -1) || ($err_cat2 != -1));
				$result_nomes = 	 ($err_name == 0); 
				my $no_results = (!$result_categorias && !$result_nomes);
				
				#---------------------------------------------------------------------
				# Se não houver resultados, tentar pesquisa por palavra chave 
				# em nomes e rubricas em simultaneo
				#---------------------------------------------------------------------
			#	if ($no_results){
					
					# OFF
			#		$$global_results{'keywords'} = $m->comp("/_shared/procs/search_keywords.m",srchargs=>\%srchargs);
			#		$err_key = 	$$global_results{'keywords'}->{'err'};
			#		$err_key = -1 unless defined($err_key);
			#		$no_results = ($err_key == -1);
					
			#	}
				
				my $st = $srchargs{'st'};
				
				#---------------------------------------------------------------------
				# classificar resultados
				#---------------------------------------------------------------------
				# Pesquisa de rubrica por código (a partir do directório)
				#---------------------------------------------------------------------
				if ($err_catc == 0){
					
					$contents{'main'} = 'rubrica_codigo';
					$bannerloc = $$global_results{'rubrica_codigo'}->{'bannerloc'};
					$node = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{'rubrica_codigo'}->{'code'});
				
				#---------------------------------------------------------------------
				# Pesquisa sem resultados
				#---------------------------------------------------------------------
				}elsif ($no_results && $query){
					
					
					#---------------------------------------------------------------------
					# novas empresas (apenas se mais nada deu resultados)
					#---------------------------------------------------------------------
					if (!$$global_results{'novas_empresas'}->{err}){
						
						$contents{'main'} = 'novas_empresas';
				
					}else{
						
						#---------------------------------------------------------------------
						# pesquisar por marcas (apenas se mais nada deu resultados)
						#---------------------------------------------------------------------
							
						$$global_results{'marcas'} = $m->comp("/_shared/procs/dosearchmarca.m",srchargs=>\%srchargs, filters=>$$global_results{'filters'});
				
						if (!$$global_results{'marcas'}->{err}){
							$contents{'main'} = 'marcas';
						}else{
							$contents{'main'} = 'sem_resultados';
							$node = $m->comp("/_shared/procs/getnodeid.m",itemid=>$itemid, tipo_item=>$tipo_item) if (exists $srchargs{'qrcd'});
						}
						
					}
					
				#---------------------------------------------------------------------
				# Pesquisa com resultados, determinar relevância
				#---------------------------------------------------------------------
				}else{
					
					#-----------------------------------------------------
					# Ordem de relevância de resultados
					#-----------------------------------------------------
					# A. Tipo de pesquisa especificado pelo utilizador
					#------------------------------------------------------
					# 1. Nomes
					#------------------------------------------------------
					if ($st eq 'nomes'){
						
						if ($result_nomes){
							$contents{'main'} = 'nomes';
						}else{
							$contents{'main'} = 'sem_resultados';
						}
				
						$contents{'aux'} = 'rubricas_grupos';
						
					#------------------------------------------------------
					# 2. Categorias
					#------------------------------------------------------
					}elsif ($st eq 'categorias'){		
					
						$contents{'aux'} = 'nomes';
						
						#------------------------------------------------------
						# 1. Apenas uma rubrica
						#------------------------------------------------------
						if ($err_cat2 == 0){
							
							$contents{'main'} = 'rubrica_directa';
					
							#------------------------------------------------------
							# projectar pesquisa em rubricas de cliente para
							# determinar tipo de banner a mostrar
							#------------------------------------------------------
							$argscpy{'qrcd'} = 'I'.$$global_results{'rubrica'}->{'code'};
							$argscpy{'node'} = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{'rubrica'}->{'code'});
							$$global_results{'rubrica_directa'} = $m->comp('/_shared/procs/dosearchrubcli.m', srchargs=>\%argscpy, filters=>$$global_results{'filters'}); #, cod_rubrica=>$code, titulo=>$desc);
					
							$bannerloc = $$global_results{'rubrica_directa'}->{'bannerloc'};
							$node = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{'rubrica_directa'}->{'code'});
							# validar novamente a pesquisa, pois as opcoes 
							# podem fazer com que nao hajam resultados
							if ($$global_results{'rubrica_directa'}->{'err'}){
								$contents{'main'} = 'sem_resultados';
							}
							
						#-----------------------------------------------------
						# 2. conjuntos de rubricas e grupos
						#------------------------------------------------------
						}elsif (($err_cat2 == -2) || ($err_cat2 == -4)){
							#$m->out("here");
							$contents{'main'} = 'rubricas_grupos';
							$$global_results{'rubricas_grupos'} = $m->comp('/_shared/procs/getmultichoice.m', 
														rubricas => $$global_results{'rubrica'}->{'rubricas'}, 
														grupos	 =>$$global_results{'rubrica'}->{'grupos'}, 
														query	 =>$query, 
														remissivosderubrica=>$$global_results{'rubrica'}->{'remissivos'},
														srchargs=>\%srchargs, 
														filters=>$$global_results{'filters'}
														);
				
							# FIXME apos contagens
						}
					
					}else{
						
						#------------------------------------------------------
						# B. Tipo de pesquisa não especificado
						#------------------------------------------------------
						my $partialsearch = $$global_results{'rubrica'}->{'partialsearch'};
								
						#------------------------------------------------------
						# 1. Apenas uma rubrica (apenas parcial)
						#------------------------------------------------------
						if ($err_cat2 == 0){
							
							my $key = "rubrica";
							
							$contents{'main'} = 'rubrica_directa';
							$contents{'aux'} = 'nomes';
							
	#						if (my $remissivos = $$global_results{$key}->{'remissivos'}){
	#							
	#							$contents{'remissivo'} = $$remissivos{(keys %$remissivos)[0]};
	#							
	#						}
							
							
							$argscpy{'qrcd'} = 'I'.$$global_results{$key}->{'code'};
							$argscpy{'node'} = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{$key}->{'code'});
							$$global_results{'rubrica_directa'} = $m->comp('/_shared/procs/dosearchrubcli.m', srchargs=>\%argscpy, filters=>$$global_results{'filters'}); 
							$bannerloc = $$global_results{'rubrica_directa'}->{'bannerloc'};
							
							
							$node = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{'rubrica_directa'}->{'code'});
						
							# validar novamente a pesquisa, pois as opcoes 
							# podem fazer com que nao hajam resultados
							#-----------------------------------------------------
							# existem rubricas começadas por 'query'
							#------------------------------------------------------
							if (!$partialsearch && ($err_cat1 != -1)){
								$contents{'main'} = 'rubrica_directa';
								$contents{'aux'} = 'nomes';
							#-----------------------------------------------------
							# ou não, dá-se prioridade aos nomes
							# começados por 'query', se existirem
							# (e forem clientes - 2003-03-10)
							#------------------------------------------------------
							}elsif ($result_nomes){
					
								my ($main, $aux) = $m->comp("/_shared/procs/defineresultspriority.m", nomes=>$$global_results{'nome_inicial'},
																									rubricas=>[[$$global_results{'rubrica_directa'}->{'code'}]],
																									tagrubricas=>'rubrica_directa',
																									err_name=>$err_name1,
																									query=>$query);
																									
								$contents{'main'} = $main;
								$contents{'aux'} = $aux;
	
	
							}
	
							if ($$global_results{'rubrica_directa'}->{'err'}){
								$contents{'main'} = 'sem_resultados'; # FIXME ?????
							}
				
						#-----------------------------------------------------
						# 2. apenas um grupo
						#------------------------------------------------------
						}elsif ($err_cat2 == -4){

								#-----------------------------------------------------
								# o grupo começa por 'query'
								#------------------------------------------------------
								if (!$partialsearch){
									$contents{'main'} = 'rubricas_grupos';
									$contents{'aux'} = 'nomes';

									$$global_results{'rubricas_grupos'} = $m->comp('/_shared/procs/getmultichoice.m', 
														rubricas => $$global_results{'rubrica'}->{'rubricas'}, 
														grupos	 =>$$global_results{'rubrica'}->{'grupos'}, 
														query	 =>$query, 
														remissivosderubrica=>$$global_results{'rubrica'}->{'remissivos'},
														srchargs=>\%srchargs, 
														filters=>$$global_results{'filters'}
														);
								
								#-----------------------------------------------------
								# ou não, dá-se prioridade aos nomes
								# começados por 'query', se existirem
								# (e forem clientes - 2003-03-10)
								#------------------------------------------------------
								}else{
							
									my ($main, $aux) = $m->comp("/_shared/procs/defineresultspriority.m", nomes=>$$global_results{'nome_inicial'},
																										rubricas=>$$global_results{'rubricas_grupos'}->{'rubricas'},
																										tagrubricas=>'rubricas_grupos',
																										err_name=>$err_name1,
																										query=>$query);
																										
									$contents{'main'} = $main;
									$contents{'aux'} = $aux;
									
									if ($main eq 'rubricas_grupos'){
										
										$$global_results{'rubricas_grupos'} = $m->comp('/_shared/procs/getmultichoice.m', 
														rubricas => $$global_results{'rubrica'}->{'rubricas'}, 
														grupos	 =>$$global_results{'rubrica'}->{'grupos'}, 
														query	 =>$query, 
														remissivosderubrica=>$$global_results{'rubrica'}->{'remissivos'},
														srchargs=>\%srchargs, 
														filters=>$$global_results{'filters'}
														);

										
									}
									
								}
							
						#-----------------------------------------------------
						# 2. conjuntos de rubricas e grupos
						#------------------------------------------------------
						}elsif ($err_cat2 == -2){
						
							$$global_results{'rubricas_grupos'} = $m->comp('/_shared/procs/getmultichoice.m', 
																			rubricas => $$global_results{'rubrica'}->{'rubricas'}, 
																			grupos	 =>$$global_results{'rubrica'}->{'grupos'}, 
																			query	 =>$query, 
																			remissivosderubrica=>$$global_results{'rubrica'}->{'remissivos'},
																			srchargs=>\%argscpy, 
																			filters=>$$global_results{'filters'}
																			);
																			
							#---------------------------------------------------
							# depois de cruzar com opções de pesquisa
							# podem não existir resultados, ou os resultados
							# apontarem para uma rubrica directa
							#---------------------------------------------------
							if ($$global_results{'rubricas_grupos'}->{total_items} == 0){
								$contents{'main'} = 'sem_resultados';
							}elsif ($$global_results{'rubricas_grupos'}->{total_items} == 1 && $$global_results{'rubricas_grupos'}->{total_rubricas} == 1){
								$srchargs{'qrcd'} = 'I'.$$global_results{'rubricas_grupos'}->{rubrica_directa};
								$global_results = $m->comp("/_shared/procs/gn_search.m", srchargs=>\%srchargs);
								$contents{'main'} = 'rubrica_codigo';
								$bannerloc = $$global_results{'rubrica_codigo'}->{'bannerloc'};
								$node = $m->comp("/_shared/procs/getnodeid.m",itemid=>$$global_results{'rubrica_codigo'}->{'code'});
							}else{
							#---
					
								my $codelist = $$global_results{'rubricas_grupos'}->{'codelist'};
								$node = join "," , @$codelist;
								
								#-----------------------------------------------------
								# existem rubricas começadas por 'query'
								#------------------------------------------------------
								if (!$partialsearch && ($err_cat1 != -1)){
									$contents{'main'} = 'rubricas_grupos';
									$contents{'aux'} = 'nomes';
								#-----------------------------------------------------
								# ou não, dá-se prioridade aos nomes
								# começados por 'query', se existirem
								# (e forem clientes - 2003-03-10)
								#------------------------------------------------------
								}else{
									
									my ($main, $aux) = $m->comp("/_shared/procs/defineresultspriority.m", nomes=>$$global_results{'nome_inicial'},
																										rubricas=>$$global_results{'rubricas_grupos'}->{'rubricas'},
																										tagrubricas=>'rubricas_grupos',
																										err_name=>$err_name1,
																										query=>$query);
																										
									$contents{'main'} = $main;
									$contents{'aux'} = $aux;
									if ($main eq 'nomes'){
										$bannerloc = "NOP";
										$bannerloc = 0;
									}
									
								}
							}
						#--------------------------------------------------------
						# 3. nomes (começados por 'query' ou que contêm 'query')
						#--------------------------------------------------------
						}elsif ($result_nomes){
							
							$contents{'main'} = 'nomes';
					
						#-----------------------------------------------------
						# 5. last resort:
						# nomes ou rubricas contêm query 
						# (pesquisa especial por palavra-chave) FIXME OFF for now
						#------------------------------------------------------
						}else{
							
							#$contents{'main'} = 'keywords';
							$contents{'main'} = 'sem_resultados';
			
							
						}
					}
				}
			}
		}else{
			$contents{'main'} = 'sem_resultados';
		} # no query
	} # filters err
	
	$cookies{'sr'} = $contents{'main'};
	
} # reserved query
</%init>				
<& PARENT:initvars, bspecs=>[$bannerloc, $node, 0],  srchargs=>\%srchargs, options=>$options, filters=>$filters, ptitle=>$ptitle &>
%#<& PARENT:set_tablelock, request=>'search' &>
</%method>
<%init>
my $err_filters;
#---------------------------------------------------------------------
# atençao: a pesquisa é executada no método initvars
# o resultado está na hash 'global_results'
#---------------------------------------------------------------------
# no método initvars é também definido o layout, o banner a mostrar
# e o que é para mostrar na coluna da esquerda e na coluna do meio
#---------------------------------------------------------------------
# a coluna da esquerda é mostrada no método left_area
# a coluna central é mostrada agora
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Mostrar resultados
#---------------------------------------------------------------------
# erros relacionados com as opções de pesquisa
#---------------------------------------------------------------------
if ($contents{'main'} eq 'filter_errors'){
	
	my $resrecord = $$global_results{'filters'};

	$m->comp("/_shared/templates/search/results/header.html");
	$srchargs{'err'} = $$resrecord{'err'};
	#$srchargs{'qrcd'} = $$resrecord{'code'}; # FIXME verificar isto (não activar)
	$m->comp("/_shared/procs/filtererrors.m", srchargs=>\%srchargs, from=>'search');	
	$m->comp("/_shared/procs/showresultfooter.m",startrec=>-1, tnpt=>0, currrec=>0, recsinsel=>-1);

#---------------------------------------------------------------------
# pesquisa sem resultados, quer por nome quer por rubrica
#---------------------------------------------------------------------
}elsif ($contents{'main'} eq 'sem_resultados'){

	$m->comp("/_shared/procs/noresults.m",srchargs=>\%srchargs);

#---------------------------------------------------------------------
# pesquisa com resultados
#---------------------------------------------------------------------
}else{
	
#---------------------------------------------------------------------
# rubrica por codigo
#---------------------------------------------------------------------
	if ($contents{'main'} eq 'rubrica_codigo'){

		$m->comp("/_shared/procs/showresults_rubrica.m",cod_rubrica => $$global_results{'rubrica_codigo'}->{'code'}, resultset=>$$global_results{'rubrica_codigo'}->{'resultset'}, filters=>$$global_results{'filters'}, srchargs=>\%srchargs); 

#---------------------------------------------------------------------
# rubrica directa
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'rubrica_directa'){

		$m->comp("/_shared/procs/showresults_rubrica.m",cod_rubrica => $$global_results{'rubrica_directa'}->{'code'}, resultset=>$$global_results{'rubrica_directa'}->{'resultset'}, filters=>$$global_results{'filters'}, srchargs=>\%srchargs); 
	
	
#---------------------------------------------------------------------
# apenas um grupo ou mais que uma rubrica seleccionada
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'rubricas_grupos'){

		$m->comp('/_shared/procs/showitemlist.m', headerandfooter=>1, itemlist=>$$global_results{'rubricas_grupos'}->{'itemlist'}, srchargs=>\%srchargs);

#---------------------------------------------------------------------
# nomes com resultados
# compilar resultados de forma a mostrar primeiro os resultados
# por nome inicial com renda (2005-09-14)
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'nomes'){

		$m->comp("/_shared/procs/showresults_name.m", resultset=>$$global_results{'nome'}->{'resultset'}, filters=>$$global_results{'filters'}, srchargs=>\%srchargs); #FIXME filters
	
#---------------------------------------------------------------------
# telefone/fax com resultados
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'telefone'){
	
		$m->comp("/_shared/procs/showresults_name.m",resultset=>$$global_results{'telefone'}->{'resultset'}, filters=>$$global_results{'filters'}, , srchargs=>\%srchargs); #FIXME filters
	
#---------------------------------------------------------------------
# email com resultados
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'email'){
	
		$m->comp("/_shared/procs/showresults_name.m",resultset=>$$global_results{'email'}->{'resultset'}, filters=>$$global_results{'filters'}, , srchargs=>\%srchargs); #FIXME filters
	
#---------------------------------------------------------------------
# novas empresas com resultados
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'novas_empresas'){
	
		$m->comp("/_shared/templates/messages/novas_empresas.html", srchargs=>\%srchargs);
	
#---------------------------------------------------------------------
# marcas com resultados
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'marcas'){
	
		$m->comp("/_shared/procs/showresults_marca.m",resultset=>$$global_results{'marcas'}->{'resultset'}, srchargs=>\%srchargs);
	
#---------------------------------------------------------------------
# palavra-chave global com resultados - nao é usado...
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'keywords'){
	
		$m->comp("/_shared/procs/showresults_name.m",resultset=>$$global_results{'keywords'}->{'resultset'}, filters=>$$global_results{'filters'}, , srchargs=>\%srchargs); #FIXME filters
	
#---------------------------------------------------------------------
# pesquisas reservadas: cambios, concursos
#---------------------------------------------------------------------
	}elsif ($contents{'main'} eq 'reserved'){
	
		$m->comp("/_shared/templates/search/results/errors/$reserved_query.html");

	}
}
</%init>
%#---------------------------------------------------------------------
<%method nav_path>
%#---------------------------------------------------------------------
<%perl>
#---------------------------------------------------------------------
# query limpo
#---------------------------------------------------------------------
my $query = $m->comp("/_shared/procs/get_query.m");
#---------------------------------------------------------------------
# depende do resultado da pesquisa
#---------------------------------------------------------------------
# rubrica por codigo ou rubrica directa
#---------------------------------------------------------------------
if (($contents{'main'} eq 'rubrica_codigo') || ($contents{'main'} eq 'rubrica_directa')){

#	my $remissivo = $contents{'remissivo'};
	$m->comp("/_shared/templates/dirpath.html", node=>$node);

#---------------------------------------------------------------------
# outros resultados
#---------------------------------------------------------------------
}elsif (($contents{'main'} eq 'nomes') || ($contents{'main'} eq 'telefone') || ($contents{'main'} eq 'email')){

	my $label = $m->comp("_shared/procs/utils/localize.m", str=>"pesquisa");
	$m->comp("/_shared/templates/dirpath.html", path=>["pesquisa:$label " . $query ]);

	#---------------------------------------------------------------------
	# mostrar apontador para novas empresas
	#---------------------------------------------------------------------
	if ($$global_results{'novas_empresas'}->{err} == 0){
	
		$m->comp("/_shared/templates/nav_searchptr.html", node=>$node, query=>$query, st=>'ne');
	
	}


}elsif ($node && ($node !~ /\,/)){
	
	$m->comp("/_shared/templates/dirpath.html", node=>$node);
	
}else{
	
	my $label = $m->comp("/_shared/procs/utils/localize.m", str=>"pesquisa");
	$m->comp("/_shared/templates/dirpath.html", path=>["pesquisa:$label " . $query ]);

}

if (1){
#---------------------------------------------------------------------
# mostrar apontador para pesquisa por nome
#---------------------------------------------------------------------
if (($result_nomes) && ($contents{'aux'} eq 'nomes')){

	$m->comp("/_shared/templates/nav_searchptr.html", query=>$query, st=>'nomes');

#---------------------------------------------------------------------
# mostrar apontador para pesquisa por rubrica, se aplicável
#---------------------------------------------------------------------
 }elsif (($result_categorias) && ($contents{'aux'} =~ /rubrica/)){
	
	$m->comp("/_shared/templates/nav_searchptr.html", query=>$query, st=>'categorias');
	
}

#---------------------------------------------------------------------
# mostrar apontador para pesquisa internacional
#---------------------------------------------------------------------
#if ($$global_results{'rubrica_directa'}->{international} != 0){
#
#	$m->comp("/_shared/templates/nav_searchptr.html", node=>$node, query=>$query, st=>'internacional');
#
#}

}
</%perl>
</%method>
%#<%method set_tablelock>
%#<& PARENT:set_tablelock, request=>$request &>
%#</%method>
