<%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
my $query = $m->comp("/_shared/procs/get_query.m"); 
$query =~ s/^\s+(.*)/$1/;
$query =~ s/(.*)\s+$/$1/;
$query =~ s/\%//g;
$query = $m->comp('/_shared/procs/utils/get7bitstr.m', str=>$query);

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

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

		#---------------------------------------------------------------------
		# 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;
		#---------------------------------------------------------------------
		# 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/ne_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{'novas_empresas'} = $m->comp("/_shared/procs/ne_dosearchname.m", srchargs=>\%srchargs, filters=>$filters);
			if (!$global_results{'novas_empresas'}->{err}){
				
				$contents{'main'} = 'novas_empresas';
		
			}else{
				$contents{'main'} = 'sem_resultados';
			}
					
		}else{
			$global_results{'novas_empresas'} = $m->comp("/_shared/procs/dosearchnovasempresas.m", srchargs=>\%srchargs, filters=>$filters, showresults=>0);
			if (!$global_results{'novas_empresas'}->{err}){
			
				$contents{'main'} = 'default';
		
			}else{
				$contents{'main'} = 'sem_resultados';
			}

		} # no query
	} # filters err
	
	$cookies{'sr'} = $contents{'main'};
	
</%init>				
<& PARENT:initvars, bspecs=>[$bannerloc, $node, 0],  srchargs=>\%srchargs, options=>$options, filters=>$filters &>
</%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 'default'){

	$m->comp("/_shared/procs/showresults_novas_empresas.m", request=>'ndir', node=>$node, cod_rubrica => $global_results{'novas_empresas'}->{'code'}, resultset=>$global_results{'novas_empresas'}->{'resultset'}, filters=>$global_results{'filters'}, srchargs=>\%srchargs); 

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

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

#---------------------------------------------------------------------
# pesquisa com resultados
#---------------------------------------------------------------------
}else{
	
	$m->comp("/_shared/procs/showresults_novas_empresas.m", request => 'nsearch', resultset=>$global_results{'novas_empresas'}->{'resultset'}, filters=>$global_results{'filters'}, srchargs=>\%srchargs); 

}
</%init>
%#---------------------------------------------------------------------
<%method nav_path>
%#---------------------------------------------------------------------
<%perl>
#---------------------------------------------------------------------
# query limpo
#---------------------------------------------------------------------
my $query = $m->comp("/_shared/procs/get_query.m");
#---------------------------------------------------------------------
# depende do resultado da pesquisa
#---------------------------------------------------------------------
if ($node && ($node !~ /\,/)){
	
	$m->comp("/_shared/templates/dirpath.html", node=>$node, request => 'ndir');
	
}else{
	
	my $label = $m->comp("/_shared/procs/utils/localize.m", str=>"pesquisa");
	$m->comp("/_shared/templates/dirpath.html", path=>["pesquisa:$label " . $query ]);

}
</%perl>
</%method>
%#--------------------------------------------------------------------------------------
<%method main_ctrl>
%#--------------------------------------------------------------------------------------
<& PARENT:main_ctrl, node=>0 &>
</%method>
