Publicador de Conteúdos e Mídias

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> themeDisplay.getURLCurrent()?split("/")[2]  [in template "20102#20129#23798944" at line 359, column 41]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign friendlyURLTipoCurso = themeD...  [in template "20102#20129#23798944" in function "getTipoCursoFirendlyUrl" at line 359, column 9]
----
1<#-- 
2Name: Unidade - Tipos de Curso 
3Type: Asset Publisher Widget Template 
4Path: ROOT/assets/unidades-tipos-de-curso/widget-templates/unidades_tipos_de_curso.html 
5--> 
6<#assign prefix = "ssp" /> 
7<#assign companyId = themeDisplay.getCompanyId() /> 
8<#assign siteGroupId = themeDisplay.getSiteGroupId() /> 
9<#assign friendlyUrlTipoCurso = getTipoCursoFirendlyUrl() /> 
10<#assign friendlyUrlUnidade = getUnidadeFirendlyUrl() /> 
11 
12<#assign categoryId = 0 /> 
13 
14<#if friendlyUrlTipoCurso?contains("livre") ||  friendlyUrlTipoCurso?contains("extensao")> 
15    
16	<#assign friendlyUrlTemaFirst = getTemaFirstLevelFriendly() /> 
17	<#assign friendlyUrlTemaSecond = getTemaSecondLevelFriendly() /> 
18	<#assign friendlyUrlTemaThird = getTemaThirdLevelFriendly() /> 
19	 
20	<#if friendlyUrlTipoCurso?contains("livre") >  
21		<#assign tipoCurso = "Livre" /> 
22	<#else> 
23		<#assign tipoCurso = "Extensão" /> 
24	</#if>	 
25<#-- cursos tecnicos nao tem 2o e 3o nivel de temas conforme prototipo GCR --> 
26<#elseif  friendlyUrlTipoCurso?contains("tecnico")> 
27    <#assign tipoCurso = "Técnico" /> 
28    <#assign friendlyUrlTemaFirst = getTemaFirstLevelFriendly() /> 
29	<#assign friendlyUrlTemaSecond = "#erro#" /> 
30	<#assign friendlyUrlTemaThird = "#erro#" /> 
31 
32<#else>	 
33</#if> 
34 
35<#assign groupService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") /> 
36<#assign groupObj = groupService.fetchFriendlyURLGroup(companyId, "/"+friendlyUrlUnidade) /> 
37<#assign groupIdUnidade = groupObj.getGroupId() /> 
38 
39		<#assign journal = getJournalArticle(groupIdUnidade) > 
40		<#if !journal?contains("#erro#")> 
41			 <#assign groupIdUnidade = groupId /> 
42			 <#assign journalArticleUnidade = journal> 
43			<#assign document = saxReaderUtil.read(journalArticleUnidade.getContent()) /> 
44			<#assign rootElement = document.getRootElement() /> 
45			 
46			    <#-- Get fields --> 
47 
48					 <#--  Nome da unidade  --> 
49                    <#assign xPathSelector_nomeUnidadeParaBreadCrumb = saxReaderUtil.createXPath("dynamic-element[@name='nomeUnidade']")> 
50                    <#assign nomeUnidadeParaBreadCrumb = xPathSelector_nomeUnidadeParaBreadCrumb.selectSingleNode(rootElement).getStringValue()> 
51 
52                    <#--  Nome da unidade  --> 
53                    <#assign xPathSelector_nome = saxReaderUtil.createXPath("dynamic-element[@name='nomeUsualUnidade']")> 
54                    <#assign nomeUnidade = xPathSelector_nome.selectSingleNode(rootElement).getStringValue()> 
55 
56                    <#assign xPathSelector_codigoUnidade = saxReaderUtil.createXPath("dynamic-element[@name='codigoUnidade']")> 
57                    <#assign codigoUnidade = xPathSelector_codigoUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
58                     
59                        <#if nomeUnidade?? > 
60                            <#assign nome = nomeUnidade > 
61                            <#else> 
62                            <#assign nome = "" > 
63                        </#if> 
64 
65                <#--  Endereço 1  --> 
66 
67                        <#--  Rua  --> 
68                        <#assign xPathSelector_enderecoUnidade = saxReaderUtil.createXPath("dynamic-element[@name='enderecoUnidade']")> 
69                        <#assign enderecoUnidade = xPathSelector_enderecoUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
70 
71                            <#if enderecoUnidade?? > 
72                                <#assign endereco = enderecoUnidade > 
73                                <#else> 
74                                <#assign endereco = "" > 
75                            </#if> 
76 
77                        <#--  número  --> 
78                        <#assign xPathSelector_numEnderecoUnidade = saxReaderUtil.createXPath("dynamic-element[@name='numEnderecoUnidade']")> 
79                        <#assign numeroUnidade = xPathSelector_numEnderecoUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
80 
81                            <#if numeroUnidade?? > 
82                                <#assign numero = numeroUnidade > 
83                                <#else> 
84                                <#assign numero = "" > 
85                            </#if> 
86 
87                        <#--  Bairro  --> 
88                        <#assign xPathSelector_bairroUnidade = saxReaderUtil.createXPath("dynamic-element[@name='bairroUnidade']")> 
89                        <#assign bairroUnidade = xPathSelector_bairroUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
90 
91                            <#if bairroUnidade?? > 
92                                <#assign bairro = bairroUnidade > 
93                                <#else> 
94                                <#assign bairro = "" > 
95                            </#if> 
96                         
97                        <#--  Cidade  --> 
98                        <#assign xPathSelector_cidadeUnidade = saxReaderUtil.createXPath("dynamic-element[@name='cidadeUnidade']")> 
99                        <#assign cidadeUnidade = xPathSelector_cidadeUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
100 
101                            <#if cidadeUnidade?? > 
102                                <#assign cidade = cidadeUnidade > 
103                                <#else> 
104                                <#assign cidade = "" > 
105                            </#if> 
106 
107                        <#--  Cep  --> 
108                        <#assign xPathSelector_cepUnidade = saxReaderUtil.createXPath("dynamic-element[@name='cepUnidade']")> 
109                        <#assign cepUnidade = xPathSelector_cepUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
110 
111                            <#if cepUnidade?? > 
112                                <#assign cep = cepUnidade > 
113                                <#else> 
114                                <#assign cep = "" > 
115                            </#if>  
116 
117            <#-- Fim endereço 1 -->   
118 
119            <#--  Endereço 2  --> 
120 
121                        <#--  Rua  --> 
122                        <#assign xPathSelector_enderecoUnidade2 = saxReaderUtil.createXPath("dynamic-element[@name='enderecoUnidade2']")> 
123                        <#assign enderecoUnidade2 = xPathSelector_enderecoUnidade2.selectSingleNode(rootElement).getStringValue()?trim> 
124 
125                            <#if enderecoUnidade2?? > 
126                                <#assign endereco2 = enderecoUnidade2 > 
127                                <#else> 
128                                <#assign endereco2 = "" > 
129                            </#if> 
130 
131                        <#--  número  --> 
132                        <#assign xPathSelector_numeroUnidade2 = saxReaderUtil.createXPath("dynamic-element[@name='numeroUnidade2']")> 
133                        <#assign numeroUnidade2 = xPathSelector_numeroUnidade2.selectSingleNode(rootElement).getStringValue()?trim> 
134 
135                            <#if numeroUnidade2?? > 
136                                <#assign numero2 = numeroUnidade2 > 
137                                <#else> 
138                                <#assign numero2 = "" > 
139                            </#if> 
140 
141                        <#--  Bairro  --> 
142                        <#assign xPathSelector_bairroUnidade2 = saxReaderUtil.createXPath("dynamic-element[@name='bairroUnidade2']")> 
143                        <#assign bairroUnidade2 = xPathSelector_bairroUnidade2.selectSingleNode(rootElement).getStringValue()?trim> 
144 
145                            <#if bairroUnidade2?? > 
146                                <#assign bairro2 = bairroUnidade2 > 
147                                <#else> 
148                                <#assign bairro2 = "" > 
149                            </#if> 
150                         
151                        <#--  Cidade  --> 
152                        <#assign xPathSelector_cidadeUnidade2 = saxReaderUtil.createXPath("dynamic-element[@name='cidadeUnidade2']")> 
153                        <#assign cidadeUnidade2 = xPathSelector_cidadeUnidade2.selectSingleNode(rootElement).getStringValue()?trim> 
154 
155                            <#if cidadeUnidade2?? > 
156                                <#assign cidade2 = cidadeUnidade2 > 
157                                <#else> 
158                                <#assign cidade2 = "" > 
159                            </#if> 
160 
161                        <#--  Cep  --> 
162                        <#assign xPathSelector_cepUnidade2 = saxReaderUtil.createXPath("dynamic-element[@name='cepUnidade2']")> 
163                        <#assign cepUnidade2 = xPathSelector_cepUnidade2.selectSingleNode(rootElement).getStringValue()?trim> 
164 
165                            <#if cepUnidade2?? > 
166                                <#assign cep2 = cepUnidade2 > 
167                                <#else> 
168                                <#assign cep2 = "" > 
169                            </#if>  
170 
171            <#-- Fim endereço 2 --> 
172 
173 
174 
175                        <#--  Horário  --> 
176                        <#assign xPathSelector_horarioUnidade = saxReaderUtil.createXPath("dynamic-element[@name='horarioUnidade']")> 
177                        <#assign horarioUnidade = xPathSelector_horarioUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
178 
179                            <#if horarioUnidade?? > 
180                                <#assign horario = horarioUnidade > 
181                                <#else> 
182                                <#assign horario = "" > 
183                            </#if> 
184 
185                        <#--  DDD  --> 
186                        <#assign xPathSelector_dddUnidade = saxReaderUtil.createXPath("dynamic-element[@name='dddTelefoneUnidade']")> 
187                        <#assign dddUnidade = xPathSelector_dddUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
188 
189                            <#if dddUnidade?? > 
190                                <#assign ddd = dddUnidade > 
191                                <#else> 
192                                <#assign ddd = "" > 
193                            </#if> 
194 
195                        <#--  telefone  --> 
196                        <#assign xPathSelector_telefoneUnidade = saxReaderUtil.createXPath("dynamic-element[@name='telefoneUnidade']")> 
197                        <#assign telefoneUnidade = xPathSelector_telefoneUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
198 
199                            <#if telefoneUnidade?? > 
200                                <#assign telefone = telefoneUnidade > 
201                                <#else> 
202                                <#assign telefone = "" > 
203                            </#if>                         
204 
205                        <#--  UF  --> 
206                        <#assign xPathSelector_ufUnidade = saxReaderUtil.createXPath("dynamic-element[@name='ufUnidade']")> 
207                        <#assign ufUnidade = xPathSelector_ufUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
208 
209                            <#if ufUnidade?? > 
210                                <#assign UF = ufUnidade > 
211                                <#else> 
212                                <#assign UF = "" > 
213                            </#if> 
214 
215                        <#-- Estacionamento --> 
216                        <#assign xPathSelector_estacionamento = saxReaderUtil.createXPath("dynamic-element[@name='estacionamentoUnidade']")> 
217                        <#assign estacionamentoUnidade = xPathSelector_estacionamento.selectSingleNode(rootElement).getStringValue()>  
218 
219                            <#if estacionamentoUnidade?? > 
220                                <#assign estacionamento = estacionamentoUnidade > 
221                                <#else> 
222                                <#assign estacionamento = "" > 
223                            </#if> 
224 
225                         <#-- Estacionamento Unidade 2 --> 
226                        <#assign xPathSelector_estacionamento2 = saxReaderUtil.createXPath("dynamic-element[@name='estacionamentoUnidade2']")> 
227                        <#assign estacionamentoUnidade2 = xPathSelector_estacionamento2.selectSingleNode(rootElement).getStringValue()>  
228 
229                            <#if estacionamentoUnidade2?? > 
230                                <#assign estacionamento2 = estacionamentoUnidade2 > 
231                                <#else> 
232                                <#assign estacionamento2 = "" > 
233                            </#if>          
234 
235                        <#--  Facebook  --> 
236                        <#assign xPathSelector_facebookUnidade = saxReaderUtil.createXPath("dynamic-element[@name='facebookUnidade']")> 
237                        <#assign facebookUnidade = xPathSelector_facebookUnidade.selectSingleNode(rootElement).getStringValue()> 
238 
239                            <#if facebookUnidade?? > 
240                                <#assign facebook = facebookUnidade > 
241                                <#else> 
242                                <#assign facebook = "" > 
243                            </#if> 
244 
245                        <#--  Instagram  --> 
246                        <#assign xPathSelector_instagramUnidade = saxReaderUtil.createXPath("dynamic-element[@name='instagramUnidade']")> 
247                        <#assign instagramUnidade = xPathSelector_instagramUnidade.selectSingleNode(rootElement).getStringValue()> 
248 
249                            <#if instagramUnidade?? > 
250                                <#assign instagram = instagramUnidade > 
251                                <#else> 
252                                <#assign instagram = "" > 
253                            </#if> 
254 
255                        <#--  Maps  --> 
256                        <#assign xPathSelector_googlemapsUnidade = saxReaderUtil.createXPath("dynamic-element[@name='googlemapsUnidade']")> 
257                        <#assign googlemapsUnidade = xPathSelector_googlemapsUnidade.selectSingleNode(rootElement).getStringValue()?trim> 
258 
259                            <#if googlemapsUnidade?? > 
260                                <#assign googlemaps = googlemapsUnidade > 
261                                <#else> 
262                                <#assign googlemaps = "" > 
263                            </#if> 
264 
265                        <#assign  hasMaps = (googlemaps?trim?length > 0) > 
266 
267                         
268 
269                        <#--  Waze  --> 
270                        <#assign xPathSelector_wazeUnidade = saxReaderUtil.createXPath("dynamic-element[@name='wazeUnidade']")> 
271                        <#assign wazeUnidade = xPathSelector_wazeUnidade.selectSingleNode(rootElement).getStringValue()> 
272 
273                            <#if wazeUnidade?? > 
274                                <#assign waze = wazeUnidade > 
275                                <#else> 
276                                <#assign waze = "" > 
277                            </#if>    
278 
279                                       
280 
281                                 
282                    <#--  Imagem  --> 
283 
284                    <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagemUnidade']")> 
285 
286                        <#assign imagemStr = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
287                         
288                        <#if imagemStr?contains("{") > 
289                            <#assign 
290                                imagemJson = jsonFactoryUtil.createJSONObject(imagemStr) 
291                                imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId')) 
292                                dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
293                                dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
294                                fileEntry = dl.getFileEntry(imagemId) 
295                                imagemUrl = dlUtil.getImagePreviewURL(fileEntry, themeDisplay)  
296								imagemAlt = imagemJson.get('alt') 
297                            /> 
298                            <#else> 
299                                <#assign imagemUrl = ""> 
300                        </#if> 
301 
302						<#--  Imagem 2  -->     
303						<#assign xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@name='imagemUnidade2']")> 
304 
305                        <#assign imagemStr2 = xPathSelector2.selectSingleNode(rootElement).getStringValue()> 
306                         
307                        <#if imagemStr2?contains("{") > 
308                            <#assign 
309                                imagemJson2 = jsonFactoryUtil.createJSONObject(imagemStr2) 
310                                imagemId2 = getterUtil.getInteger(imagemJson2.get('fileEntryId')) 
311                                dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
312                                dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
313                                fileEntry = dl.getFileEntry(imagemId2) 
314                                imagemUrl2 = dlUtil.getImagePreviewURL(fileEntry, themeDisplay)  
315								imagemAlt2 = imagemJson2.get('alt') 
316                            /> 
317                            <#else> 
318                                <#assign imagemUrl2 = ""> 
319                        </#if>   
320						 
321						<#--  Estação próxima  -->                     
322						<#assign xPathSelector_estacaoProxima = saxReaderUtil.createXPath("dynamic-element[@name='estacaoProxima']")> 
323			 
324						<#assign estacaoProxima = xPathSelector_estacaoProxima.selectSingleNode(rootElement).getStringValue()> 
325			 
326						<#assign  hasEstacaoProxima = (estacaoProxima?trim?length > 0) > 
327		 	</#if> 
328 
329 <#function getJournalArticle groupId> 
330    <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
331    <#assign friendlyURL = getUnidadeFirendlyUrl()> 
332    
333    <#attempt> 
334   
335      <#if !friendlyURL?contains("fragment_collections") > 
336         
337        <#return journalArticleService.getArticleByUrlTitle(groupId,friendlyURL)> 
338         
339      </#if> 
340       
341    <#recover> 
342         
343      <#return '#erro#'> 
344    </#attempt> 
345 </#function> 
346 
347 <#function getUnidadeFirendlyUrl > 
348 	 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[1]?split("?")?first /> 
349 	 <#if friendly?contains("web") > 
350    	 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[3]?split("?")?first> 
351    </#if> 
352     
353    <#return friendly /> 
354     
355 </#function> 
356   
357 <#function getTipoCursoFirendlyUrl > 
358 	 
359 	<#assign friendlyURLTipoCurso = themeDisplay.getURLCurrent()?split("/")[2]?split("?")?first /> 
360 	<#if friendlyURLTipoCurso?contains("guest") > 
361   	 	<#assign friendlyURLTipoCurso = themeDisplay.getURLCurrent()?split("/")[4]?split("?")?first> 
362   	</#if> 
363     	 
364    <#return friendlyURLTipoCurso /> 
365     
366 </#function> 
367 
368 <#function getTemaFirstLevelFriendly > 
369 	 <#attempt> 
370	 	<#assign friendly = themeDisplay.getURLCurrent()?split("/")[1]?split("?")?first /> 
371	 	 <#if !friendly?contains("web") > 
372	 	 	 <#if themeDisplay.getURLCurrent()?split("/")?size gt 3 > 
373	 	 		<#assign friendly = themeDisplay.getURLCurrent()?split("/")[3]?split("?")?first /> 
374	 	 	<#else> 
375	 	 		<#assign friendly = "" /> 
376	 	 	</#if>	 
377	 	 		 
378		<#else> 
379			<#if themeDisplay.getURLCurrent()?split("/")?size gt 5 > 
380	    	 	<#assign friendly = themeDisplay.getURLCurrent()?split("/")[5]?split("?")?first> 
381	    	 <#else> 
382	 	 		<#assign friendly = "" /> 
383	 	 	</#if> 
384	     </#if> 
385	      	  
386	    <#return friendly /> 
387    <#recover> 
388     	<#return '#erro#'> 
389    </#attempt> 
390     
391</#function>  
392 
393 <#function getTemaSecondLevelFriendly > 
394 	 <#attempt> 
395	 	 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[1]?split("?")?first /> 
396	 	 
397	 	 <#if !friendly?contains("web") > 
398	 		 <#if themeDisplay.getURLCurrent()?split("/")?size gt 4 > 
399	 		 	<#assign friendly = themeDisplay.getURLCurrent()?split("/")[4]?split("?")?first /> 
400	 		 <#else> 
401	 	 		<#assign friendly = "" /> 
402	 	 	</#if>		 
403		<#else> 
404			 <#if themeDisplay.getURLCurrent()?split("/")?size gt 6 > 
405	    		 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[6]?split("?")?first> 
406    		<#else> 
407	 	 		<#assign friendly = "" /> 
408	 	 	</#if>	  
409	    </#if> 
410	 
411	    <#return friendly /> 
412    <#recover> 
413     	<#return '#erro#'> 
414    </#attempt> 
415     
416</#function>  
417  
418 <#function getTemaThirdLevelFriendly > 
419 	 <#attempt> 
420	 	 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[1]?split("?")?first /> 
421	 	  
422	 	 <#if !friendly?contains("web") > 
423	 	 	<#if themeDisplay.getURLCurrent()?split("/")?size gt 5 > 
424	 	 		<#assign friendly = themeDisplay.getURLCurrent()?split("/")[5]?split("?")?first /> 
425	 	 	<#else> 
426	 	 		<#assign friendly = "" /> 
427	 	 	</#if>	 
428		<#else> 
429			<#if themeDisplay.getURLCurrent()?split("/")?size gt 7 > 
430	    	 	<#assign friendly = themeDisplay.getURLCurrent()?split("/")[7]?split("?")?first> 
431	    	<#else> 
432	 	 		<#assign friendly = "" /> 
433	 	 	</#if> 	 
434	    </#if> 
435		    <#return friendly /> 
436    <#recover> 
437     	<#return '#erro#'> 
438    </#attempt> 
439     
440</#function>  
441 
442<style> 
443 
444.stop-scrolling { 
445	height: 100%; 
446	overflow: hidden; 
447
448 
449/*Header Unidade*/ 
450 
451.ssp-header-unidade__content-info-body{ 
452	padding-top:30px; 
453
454 
455.ssp-header-unidade__atendimento-container > p > a { 
456    color:white!important; 
457
458 
459.ssp-header-unidade__atendimento-container > p > a:hover { 
460    color:white!important; 
461    font-weight: normal!important; 
462
463 
464.creditoFotoMob{ 
465 
466    margin: 0 auto; 
467    background: #FFF7D6; 
468    font-family: 'Montserrat'; 
469    font-size: 14px; 
470    line-height: 1.6em; 
471    border-radius: 3px; 
472    max-width: 240px; 
473    height: auto; 
474    color: #4F596F; 
475    padding: 5px; 
476    position: relative;     
477    float: right;     
478    top: 70%; 
479    max-height: 40px; 
480    font-weight: 500; 
481    right: 15%; 
482    flex-wrap: unset; 
483
484 
485.creditoFotoMob:after{ /*Triangulo*/ 
486    content: ""; 
487    width: 0; 
488    height: 0; 
489    position: absolute; 
490    border-left: 10px solid transparent; 
491    border-right: 10px solid transparent; 
492    /*Faz seta "apontar para baixo. Definir o valor como 'top' fará ela "apontar para cima" */ 
493    /*Aqui entra a cor da "aba" do balão */ 
494    border-bottom: 10px solid #FFF7D6; 
495    top: -9px; /*localização. Experimente alterar para 'bottom'*/ 
496    left: 20%; 
497
498.tooltip-inner { 
499    max-width: 230px; 
500    padding: 0.75rem 0.75rem; 
501    color: #4F596F; 
502    text-align: center; 
503    background-color: #FFF7D6; 
504    border-radius: 0.3125rem; 
505
506.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { 
507    top: 0; 
508    border-width: 0.4rem 0.4rem 0; 
509    border-top-color: #FFF7D6; 
510
511.ssp-header-title-bloco { 
512    font-size: 20px; 
513    font-weight: 600; 
514
515 
516.ssp:not(.liferay-instance) .ssp-header-unidade__imagem-box-imagem{ 
517    height:100%; 
518
519/*#slider { 
520    width: 80%; 
521    max-width: 500px; 
522    height: 25vw; 
523    max-height: 150px; 
524 
525    position: relative; 
526}*/ 
527 
528#slider .ssp-header-unidade__imagem-box-imagem{ 
529    opacity: 0; 
530    position: absolute; 
531    /*width: 100%; 
532    height: 100%;*/ 
533    object-fit: cover; 
534    transition: opacity 2000ms; 
535
536 
537#slider .ssp-header-unidade__imagem-box-imagem.selected {  
538    opacity: 1; 
539
540 
541@media only screen and (max-width: 1024px) { 
542     
543#slider .ssp-header-unidade__imagem-box-imagem{  
544    margin-top: -240px; 
545    height: 248px; 
546 
547
548 .ssp-header-unidade__container-info { 
549    margin-top: 240px!important; 
550
551 
552
553 
554 @media only screen and (max-width: 768px){ 
555 
556  .ssp:not(.liferay-instance) .ssp-header-unidade__imagem-box-imagem{ 
557    height:228px; 
558
559  .ssp-header-title-bloco { 
560    font-size: 14px;     
561}    
562 
563  .creditoFotoMob{ 
564    font-size: 9px!important; 
565    max-width: 161px!important; 
566    max-height: 30px!important; 
567    padding: 8.5px 9.5px!important; 
568    line-height: 0.6em!important; 
569     
570
571}  
572 
573/* Final Header Unidade*/ 
574 
575.btn-nivel-livre-ead{ 
576        background-color: #ff9057; 
577        border-color: #ff9057; 
578        box-shadow: none; 
579
580 
581    .icon-ao-vivo{ 
582    font-size:12px; 
583    margin:0 3px; 
584
585 
586 
587.subtema-ativo{ 
588 
589    color:#fcc080!important; 
590
591 
592.separador-subtemas{ 
593	width:100% !important; 
594	margin-top: -1em !important; 
595    margin-bottom: 2.25rem!important; 
596
597 
598.bg-nivel-extensao { 
599    background-color: #3ECCA6 !important; } 
600    a.bg-nivel-extensao:hover, a.bg-nivel-extensao:focus, 
601    button.bg-nivel-extensao:hover, 
602    button.bg-nivel-extensao:focus { 
603    background-color: #3ECCA6 !important; } 
604 
605 
606/*novo forma de exibir o menu de areas*/ 
607 
608.ssp:not(.liferay-instance) .ssp-section-tema__container-menu-item .tema { 
609	font-size: 15px; 
610	color: #454F63; 
611
612 
613 
614 
615.ssp:not(.liferay-instance) .ssp-section-tema__container-menu { 
616    flex-wrap: wrap; 
617
618 
619.tema i{ 
620	margin-right: 8px; 
621
622     
623 
624</style> 
625 
626<#if tipoCurso == "Livre"> 
627 
628	<style> 
629		.ssp:not(.liferay-instance) .ativo{ 
630		background-color: #FF9057!important; 
631		color:white!important; 
632		font-weight: 600!important; 
633
634		 
635		.tema-ativo{ 
636		background-color: #FF9057!important; 
637		color:white!important; 
638		font-weight: 600!important; 
639
640 
641		.ssp:not(.liferay-instance) .ssp-section-tema__container-menu-item .tema:hover { 
642			background-color: #FF9057; 
643			color: white; 
644			font-weight: 600 !important; 
645
646		.subtema.btn-nivel-3.subtema-ativo { 
647			background: #FF9057!important; 
648			color: white!important; 
649			border-color: #FF9057!important; 
650
651	</style> 
652 
653<#elseif tipoCurso == "Técnico"> 
654 
655 
656	<style> 
657/* curso tecnico */	   
658		.ssp:not(.liferay-instance) .ativo{ 
659		background-color: #F7BD23!important; 
660		color:white!important; 
661		font-weight: 600!important; 
662
663		 
664		.tema-ativo{ 
665		background-color: #F7BD23!important; 
666		color:white!important; 
667		font-weight: 600!important; 
668
669 
670		.ssp:not(.liferay-instance) .ssp-section-tema__container-menu-item .tema:hover { 
671			background-color: #F7BD23; 
672			color: white; 
673			font-weight: 600 !important; 
674
675		.subtema.btn-nivel-3.subtema-ativo { 
676			background: #F7BD23!important; 
677			color: white!important; 
678			border-color: #F7BD23!important; 
679
680	</style> 
681 
682<#else> 
683 
684    <style> 
685/* curso extensao */ 
686		.ssp:not(.liferay-instance) .ativo{ 
687		background-color: #3ECCA6!important; 
688		color:white!important; 
689		font-weight: 600!important; 
690
691		 
692		.tema-ativo{ 
693		background-color: #3ECCA6!important; 
694		color:white!important; 
695		font-weight: 600!important; 
696
697 
698		.ssp:not(.liferay-instance) .ssp-section-tema__container-menu-item .tema:hover { 
699			background-color: #3ECCA6; 
700			color: white; 
701			font-weight: 600 !important; 
702
703		.subtema.btn-nivel-3.subtema-ativo { 
704			background: #3ECCA6!important; 
705			color: white!important; 
706			border-color: #3ECCA6!important; 
707
708    </style> 
709 
710</#if> 
711 
712<style> 
713 
714/* css para link no nome da unidade */ 
715 
716.ssp-header-unidade__title a{ 
717     
718    text-decoration: none!important; 
719    font-family: Montserrat; 
720    font-size: 44px; 
721    max-width: 440px; 
722    font-weight: 600!important; 
723    line-height: 1.23; 
724    text-align: left; 
725    color: white; 
726
727 
728.ssp-section-tema__subtitle-curso-section { 
729 
730	margin-left: 40px!important; 
731 
732
733 
734.ssp-page-busca__section-resultado__ver-todos{ 
735	margin-right: 40px!important; 
736
737 
738.submenu-tema-ativo{ 
739  background-color: #34495e!important; 
740  color:white!important; 
741  font-weight: 600!important; 
742
743 
744.submenu-tema-ativo-hover{ 
745  background-color: #34495e!important; 
746  color:white!important; 
747  font-size:50px; 
748  font-weight: 600!important; 
749
750 
751.slider-curso>.slick-area__item{ 
752 
753width:100%; 
754	 
755
756 
757.custom-card-curso-tema{ 
758  
759 height:288px!important;  
760   
761
762 
763@media only screen and (max-width: 768px){ 
764	 
765  .ssp:not(.liferay-instance) .custom-card-curso-tema { 
766      width: 100% !important; 
767      height:auto!important; 
768
769   
770   
771  .ssp-page-busca__section-resultado__ver-todos { 
772    display:none; 
773
774   
775  .filtroInscBolsa{ 
776  	display:none!important; 
777
778   
779
780   
781.ssp:not(.liferay-instance) .ssp-container__cursos-sem-slick { 
782    display: flex; 
783    justify-content: center; 
784    flex-wrap: wrap; 
785
786 
787/*Novas funcionalidades*/ 
788	#filtro-temas-nivel-3{ 
789		padding-bottom: 2em; 
790
791	 
792 .switch { 
793          position: relative; 
794          display: inline-block; 
795          width: 63px; 
796          height: 31.5px; 
797          margin: 0; 
798
799         
800        .switch input {  
801          opacity: 0; 
802          width: 0; 
803          height: 0; 
804
805         
806        .slider { 
807          position: absolute; 
808          cursor: pointer; 
809          top: 0; 
810          left: 0; 
811          right: 0; 
812          bottom: 0; 
813          background-color: #454F63; 
814          -webkit-transition: .4s; 
815          transition: .4s; 
816
817         
818        .slider:before { 
819          position: absolute; 
820          content: ""; 
821          height: 21px; 
822          width: 21px; 
823          left: 7px; 
824          bottom: 5.5px; 
825          background-color: #454F63; 
826          -webkit-transition: .4s; 
827          transition: .4s; 
828
829         
830        input:checked + .slider { 
831          background-color: #2967F4; 
832
833         
834        input:focus + .slider { 
835          box-shadow: 0 0 1px #2967F4; 
836
837         
838        input:checked + .slider:before { 
839          -webkit-transform: translateX(26px); 
840          -ms-transform: translateX(26px); 
841          transform: translateX(26px); 
842
843         
844        /* Rounded sliders */ 
845        .slider.round { 
846          border-radius: 35px; 
847
848         
849        .slider.round:before { 
850          border-radius: 50%; 
851
852 
853        /* content filter */ 
854 
855        .ssp-slider-check__container{ 
856 
857            display: flex; 
858            justify-content: flex-end; 
859 
860
861 
862 
863	 
864	 .ssp-slider-check__content-itens{ 
865 
866            display: flex; 
867            width: 800px!important; 
868         
869            justify-content: flex-end!important; 
870             
871
872         
873         .ssp-slider-check__content-item{ 
874 
875            display: flex; 
876            align-items: center; 
877            padding: 0 20px; 
878
879         
880        
881        .ssp-slider-check__label{ 
882 
883            font-family: Montserrat; 
884            color: #78849E; 
885            font-size: 16px; 
886            padding-left: 10px; 
887            font-weight: 600; 
888 
889
890		 
891        .ssp-section-tema__container-menu { 
892            padding-bottom: 15px; 
893
894 
895		.ssp-section-tema__subtitle-desconto{ 
896			display: block; 
897			font-size: 30px; 
898
899 
900        @media only screen and (max-width: 1024px) { 
901 
902			.ssp-section-tema__subtitle-desconto{ 
903				font-size: 19px; 
904
905 
906			.ssp-header-unidade__title a{ 
907				 
908				font-size: 24px; 
909
910 
911			.ssp-section-tema__subtitle-curso-section { 
912 
913				margin-left: 0px!important; 
914 
915
916 
917            #filtro-ativo-nivel-2{ 
918                justify-content: center; 
919
920 
921            .ssp-slider-check__label{ 
922 
923                font-size: 11px; 
924 
925
926 
927            .tema-slick-area { 
928     
929                display: flex; 
930                align-items: center; 
931                justify-content: flex-start; 
932                font-size: 0; 
933                flex-wrap: wrap; 
934
935 
936            /* custom  itens */ 
937			 
938			 
939            .ssp-unidade-temas__label-filtre-por{ 
940                font-size: 15px!important; 
941    			padding-left: 5px!important; 
942
943            
944 
945            .ssp-section-tema__container-menu { 
946                height: auto!important; 
947
948 
949            .tema-slick-area-mobile { 
950                display: flex; 
951                align-items: center; 
952                justify-content: center; 
953                font-size: 0; 
954                flex-wrap: wrap; 
955
956 
957            .ssp-section-tema__container-submenu-nivel3 { 
958 
959                justify-content: center; 
960
961             
962             .ssp-slider-check__container{ 
963            	padding-top:10px!important; 
964
965      }      
966</style> 
967 
968<#if tipoCurso == "Livre" || tipoCurso == "Extensão"> 
969 
970	<style>     
971		@media only screen and (max-width: 768px){      
972			.tema-ativo::after{ 
973				font-family: "Font Awesome 5 Free";  
974				font-weight: 900;  
975				content: "\f00d"; 
976				font-size: 12px; 
977				margin: 0 5px; 
978
979
980	</style>             
981</#if> 
982<style> 
983		@media only screen and (max-width: 768px){      
984			.subtema-ativo::after{ 
985				font-family: "Font Awesome 5 Free";  
986				font-weight: 900;  
987				content: "\f00d"; 
988				font-size: 12px; 
989				margin: 0 5px; 
990
991             
992            .ssp:not(.liferay-instance) .ssp-page-busca__section-resultado__ver-todos-mobile { 
993			    font-family: Montserrat; 
994			    font-size: 16px; 
995			    font-weight: 600; 
996			    line-height: 1.21; 
997			    color: #78849e; 
998			    text-decoration: none !important; 
999			    transition: 0.3s; 
1000			    text-align: center !important; 
1001   				 padding-left: 7em; 
1002
1003			 
1004			.ssp:not(.liferay-instance) .ssp-page-busca__section-resultado__ver-todos-mobile::after { 
1005			    font-family: FontAwesome; 
1006			    font-weight: 900; 
1007			    content: '\f054'; 
1008			    font-size: 12px; 
1009			    margin-left: 5px; 
1010
1011 
1012
1013 
1014        /* Custom css para unidades */ 
1015 
1016        .ssp-unidade-temas__label-filtre-por{ 
1017 
1018            font-family: Montserrat; 
1019            font-size: 20px; 
1020            font-weight: 600; 
1021            padding: 15px; 
1022            padding-left: 30px; 
1023            color: #78849E; 
1024 
1025
1026 
1027        .ssp-section-tema__container-submenu-nivel3 .btn-nivel-3 { 
1028            margin: 15px 10px; 
1029           
1030
1031 
1032 
1033        .ssp-line-nivel-divisor { 
1034            width: 100%; 
1035            height: 1px; 
1036            background: #78849E; 
1037            margin: 15px 0; 
1038
1039 
1040     .ssp-header-unidade__content-info{ 
1041            z-index: 0!important; 
1042
1043 
1044        .ssp-btn-tema-mobile--active{ 
1045            background-color: #FE9057!important; 
1046            color: white!important; 
1047
1048 
1049        .ssp-btn-tema-mobile--active::after{ 
1050            font-family: "Font Awesome 5 Free";  
1051            font-weight: 900;  
1052            content: "\f00d"; 
1053            font-size: 12px; 
1054            margin: 0 5px; 
1055
1056 
1057        .ssp-btn-subtema-mobile--active{ 
1058            background-color: #78849E!important; 
1059            color: white!important; 
1060
1061         
1062        
1063 
1064        /* Botão Visualizar mais */ 
1065 
1066        .ssp-btn__visualizar-mais-content{ 
1067            display: flex; 
1068            flex-wrap: nowrap; 
1069            align-items: center; 
1070            justify-content: center; 
1071
1072 
1073        .ssp-btn__visualizar-mais{ 
1074            cursor: pointer; 
1075            font-size: 14px; 
1076
1077         
1078        #visualizar-mais{ 
1079        	font-family:montserrat; 
1080
1081		 
1082		.tema{ 
1083			box-shadow: none !important; 
1084
1085		.separador-subtemas{ 
1086			margin:10px 0px 30px 0px!important; 
1087
1088		 
1089		.py-5{ 
1090			padding-bottom: 0px!important; 
1091			padding-top: 5px!important; 
1092
1093		 
1094		.ssp-section-tema__title{ 
1095			margin: 40px 0px 25px 0px!important; 
1096
1097@media only screen and (min-width: 1025px){ 
1098	.ssp-section-tema__container-submenu-nivel3 .btn-nivel-3 { 
1099		margin-bottom: 20px!important; 
1100
1101	 
1102	.filtroTextoMobile{ 
1103		display: none; 
1104
1105}    
1106 
1107/* novo botao ver todos os cursos */ 
1108 
1109.ver-todos-cursos-link{ 
1110	color: #78849E!important; 
1111
1112 
1113.ver-todos-cursos-link:hover{ 
1114	color: #515A6B!important; 
1115
1116 
1117.ver-todos-cursos-link:hover p{ 
1118	color: #515A6B!important; 
1119
1120 
1121.custom-card-curso-tema{ 
1122  
1123 height:282px!important;  
1124   
1125
1126 
1127.container-fluid .row{ 
1128	margin: 0 !important; 
1129
1130 
1131 
1132.container-fluid .col-md-12{ 
1133	padding: 0 !important; 
1134
1135 
1136.ver-todos-no-click{ 
1137	text-decoration: none !important; 
1138	pointer-events: none !important; 
1139
1140 
1141.slick-area__item.card-curso-nivel-2 .custom-card-curso-tema__title{ 
1142	height: 70px; 
1143
1144 
1145#slider .ssp-header-unidade__imagem-box-imagem img{ 
1146    position: absolute; 
1147    width: 100%; 
1148    height: 100%; 
1149    object-fit: cover; 
1150
1151 
1152/* Transporte próximo */ 
1153 
1154.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento { 
1155    display:block; 
1156    padding-top: 5px; 
1157
1158 
1159.ssp:not(.liferay-instance) .ssp-header-unidade__endereco-container { 
1160    display: flex; 
1161    align-items: center; 
1162    justify-content: space-between; 
1163    flex-flow: column; 
1164    align-items: flex-start; 
1165    gap: 15px; 
1166
1167 
1168.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento a{ 
1169    color:white; 
1170
1171 
1172.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento a:hover{ 
1173    font-weight:normal!important; 
1174
1175 
1176.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento p{ 
1177    display:inline-block; 
1178    margin: 0; 
1179
1180 
1181.ssp:not(.liferay-instance) .ssp-header-unidade__endereco { 
1182    max-width: 100%; 
1183
1184 
1185@media only screen and (max-width: 768px){ 
1186 
1187    .ssp:not(.liferay-instance) .ssp-header-unidade__container-info .container { 
1188        padding: 0; 
1189
1190 
1191    .ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento p{ 
1192        display:inline; 
1193        font-size: 13px; 
1194
1195
1196     
1197 
1198</style>     
1199 
1200 
1201<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
1202<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
1203<#assign groupId = themeDisplay.getSiteGroupId()> 
1204 
1205<#assign vocabularyTemaMercadologico = assetVocabularyLocalService.getGroupVocabulary(groupId, "Tema(Mercadológico)")> 
1206 
1207<input type="hidden" id="ssp-vocabulary-id-tema-mercadologico" value="${vocabularyTemaMercadologico.getVocabularyId()}"> 
1208      
1209      
1210<#--  Header da Unidade  --> 
1211 
1212 
1213<section style="position:relative;"> 
1214    <div class="ssp-header-unidade__imagem-box">     
1215        <div class="ssp-header-unidade__imagem-box-box-linha"></div> 
1216 
1217        <div class="ssp-header-unidade__imagem-box-box-linha2"></div> 
1218 
1219		<div id="slider">      
1220 
1221			<div class="ssp-header-unidade__imagem-box-imagem selected">  
1222 
1223                <img src="${imagemUrl}" loading="lazy" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> >  
1224               
1225            </div> 
1226        
1227            <#if endereco2?length != 0> 
1228 
1229				<div class="ssp-header-unidade__imagem-box-imagem"> 
1230					<img src="${imagemUrl2}" loading="lazy" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> >   
1231				</div>  
1232 
1233            </#if>     
1234                         
1235                 
1236        </div> 
1237        <!--div class="ssp-header-unidade__imagem-box-imagem" style="background-image: url(img/bg-fale-com-gente.jpg)"></div--> 
1238 
1239		<#--  dados de compartilhamento  --> 
1240		<@liferay_util["html-top"]> 
1241			<meta name="image" property="og:image" content="${imagemUrl}"> 
1242			<meta property="og:image:width" content="1024"> 
1243		</@> 
1244		<#--  dados de compartilhamento  --> 
1245	 
1246		<#if tipoCurso == "Livre" > 
1247			<div class="ssp-header-tema__tag-tipo-curso"></div> 
1248		<#elseif tipoCurso == "Técnico"> 
1249        	<!-- Tag de Tipo de Curso --> 
1250        	<div class="ssp-header-tema__tag-tipo-curso bg-nivel-tecnico"></div> 
1251			 
1252        <#else> 
1253            <!-- Tag de Extensão --> 
1254            <div class="ssp-header-tema__tag-tipo-curso bg-nivel-extensao"></div> 
1255             
1256        </#if> 
1257        <div class="ssp-header-unidade__container-info"> 
1258 
1259            <div class="container"> 
1260 
1261                <div class="ssp-header-unidade__content-info" style="height: auto;"> 
1262 
1263                    <div class="ssp-header-unidade__content-info-container"> 
1264 
1265                        <div> 
1266 
1267                            <div> 
1268                                <small class="ssp-header-unidade__subtitle">Senac</small> 
1269                            </div> 
1270 
1271                            <div class="ssp-header-unidade__title-container"> 
1272 
1273                                <div> 
1274 
1275                                    <h1 class="ssp-header-unidade__title"> 
1276										<a href="https://www.sp.senac.br/${friendlyUrlUnidade}"> 
1277											${nome} 
1278										</a>	 
1279									</h1> 
1280									 
1281 
1282								</div> 
1283								 
1284                                <#-- o código da unidade é usado para referência de unidade no --> 
1285                                <span id="codUnidadeReferencia" class="d-none">${codigoUnidade}</span> 
1286                                <span id="friendlyUnidade" class="d-none">${friendlyUrlUnidade}</span> 
1287                                <span id="friendlyTipoCurso" class="d-none">${friendlyUrlTipoCurso}</span> 
1288                                <span id="nomeUnidadeParaBreadCrumb" class="d-none">${nomeUnidadeParaBreadCrumb}</span> 
1289								 
1290								<#if friendlyUrlTipoCurso?contains("livre")> 
1291                                 	<span id="tipoCursoText" class="d-none">Livre</span> 
1292                                <#elseif friendlyUrlTipoCurso?contains("tecnico")> 
1293                                  	<span id="tipoCursoText" class="d-none">Técnico</span> 
1294                                <#else> 
1295                                	 <span id="tipoCursoText" class="d-none">Extensão</span>	 
1296                               </#if> 
1297                            	<#if friendlyUrlTemaFirst?contains("#erro#")> 
1298                                 	<span id="friendlyTemaNv1" class="d-none"></span> 
1299                                 <#else> 
1300                                  	<span id="friendlyTemaNv1" class="d-none">${friendlyUrlTemaFirst}</span> 
1301                               </#if> 
1302                                <#if friendlyUrlTemaSecond?contains("#erro#")> 
1303                                 	<span id="friendlyTemaNv2" class="d-none"></span> 
1304                                <#else> 
1305                                  <span id="friendlyTemaNv2" class="d-none">${friendlyUrlTemaSecond}</span> 
1306                               </#if> 
1307                               <#if friendlyUrlTemaThird?contains("#erro#")> 
1308                                 	<span id="friendlyTemaNv3" class="d-none"></span> 
1309                                 <#else> 
1310                                 	 <span id="friendlyTemaNv3" class="d-none">${friendlyUrlTemaThird}</span> 
1311                               </#if> 
1312                                
1313                            </div> 
1314 
1315                        </div> 
1316 
1317                        <div class="ssp-header-unidade__endereco-container"> 
1318 
1319                            <div class="d-flex flex-wrap"> 
1320                                 
1321								<div> 
1322								 
1323									<#if endereco2?length != 0> 
1324										<span class="ssp-header-title-bloco">Bloco I</span><br> 
1325									</#if> 
1326 
1327									<address class="ssp-header-unidade__endereco"> 
1328										${endereco}, ${numero}<br>  
1329										${bairro}, ${cidade} - ${UF}, ${cep} 
1330									</address> 
1331 
1332									<span class="ssp-header-unidade__estacionamento"> 
1333 
1334									<i class="fas fa-car"></i> 
1335 
1336										<#if estacionamento?contains("true")> 
1337											<strong>Possui estacionamento?</strong> Sim 
1338											<#else> 
1339											<strong>Possui estacionamento?</strong> Não 
1340										</#if> 
1341 
1342									</span> 
1343								</div> 
1344 
1345								<#if endereco2?length != 0> 
1346 
1347									<div class="pt-5"> 
1348										<span class="ssp-header-title-bloco">Bloco II</span><br> 
1349										<address class="ssp-header-unidade__endereco"> 
1350											${endereco2}, ${numero2}<br>  
1351											${bairro2}, ${cidade2}, ${cep2} 
1352										</address> 
1353										<span class="ssp-header-unidade__estacionamento"> 
1354											<i class="fas fa-car"></i> 
1355 
1356												<#if estacionamento2?contains("true")> 
1357													<strong>Possui estacionamento?</strong> Sim 
1358													<#else> 
1359													<strong>Possui estacionamento?</strong> Não 
1360												</#if> 
1361 
1362										</span> 
1363									</div> 
1364 
1365								</#if> 
1366 
1367								<#if hasEstacaoProxima> 
1368                                            
1369									<span class="ssp-header-unidade__estacionamento"> 
1370										<i class="fa-solid fa-train-subway" aria-hidden="true"></i> 
1371										<strong>Estação mais próxima:</strong> 
1372										${estacaoProxima} 
1373									</span> 
1374							 
1375								</#if>  
1376 
1377							</div>   
1378 
1379                            <div class="ssp-header-unidade__content-info-maps"> 
1380 
1381 
1382                                <a class="btn btn-nivel border-white ssp-header-unidade__btn" href="${googlemaps}" target="_blank"> 
1383                                    <i class="fas fa-map-marker-alt mr-2 ssp-header-unidade__btn-icon"></i>Google Maps 
1384                                </a> 
1385 
1386	                            <a class="btn btn-nivel border-white ml-2  d-sm-inline-block d-md-none d-lg-none d-xl-none ssp-header-unidade__btn" href="${waze}" target="_blank"> 
1387                                    <i class="fab fa-waze mr-2 ssp-header-unidade__btn-icon"></i>Waze 
1388                                </a> 
1389 
1390                            </div>                         
1391                             
1392                        </div> 
1393 
1394                    </div> 
1395 
1396                    <div class="ssp-header-unidade__content-info-body"> 
1397 
1398                        <div class="ssp-header-unidade__atendimento-container"> 
1399                            <p><strong>Atendimento:</strong></p> 
1400	                        <p>${horario}</p> 
1401                        </div> 
1402                         
1403                    </div> 
1404 
1405                     
1406            </div> 
1407             
1408        </div> 
1409 
1410        </div>  
1411                     
1412    </div> 
1413         
1414 
1415<script> 
1416     
1417    if ( $.trim($('.ssp-header-unidade__title').html()) === 'Santo Amaro'){ 
1418 
1419    $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac') 
1420 
1421    } else if ( $.trim($('.ssp-header-unidade__title').html()) === 'Campos do Jordão'){ 
1422 
1423        $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac') 
1424 
1425    } else if ( $.trim($('.ssp-header-unidade__title').html()) === 'Águas de São Pedro'){ 
1426 
1427        $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac') 
1428 
1429
1430 
1431//Animação de Crédito da imagem 
1432 
1433$(document).ready(function(){   
1434 
1435    let larguraTela = $(window).width(); 
1436 
1437    if(larguraTela < 1024){ 
1438 
1439        animateCreditImage() 
1440 
1441        $(window).scroll(function() { 
1442            ScrollPagina() 
1443        }); 
1444 
1445    }else{ 
1446 
1447        $(".ssp-header-unidade__imagem-box-imagem" ).mouseover(function() { 
1448            $(".creditoFotoMob").removeClass('d-none') 
1449         
1450        });   
1451 
1452        $(".ssp-header-unidade__imagem-box-imagem" ).mouseout(function() { 
1453                $(".creditoFotoMob").addClass('d-none') 
1454                 
1455        });  
1456 
1457
1458 
1459    //verifica posição do Top 
1460 
1461    function ScrollPagina(){ 
1462 
1463        let scrollPage = $(window).scrollTop(); 
1464 
1465        if(scrollPage == 0){ 
1466 
1467            animateCreditImage() 
1468 
1469
1470
1471 
1472    function animateCreditImage(){ 
1473 
1474        $( ".creditoFotoMob" ).removeClass('d-none').fadeIn( 200 ).delay( 2500 ).fadeOut( 5000 ); 
1475 
1476
1477 
1478    //anima Slider fotos unidades de 
1479 
1480    let time = 5000, 
1481        currentImageIndex = 0, 
1482        images = document 
1483                    .querySelectorAll("#slider .ssp-header-unidade__imagem-box-imagem") 
1484        max = images.length; 
1485 
1486    function nextImage() { 
1487 
1488        images[currentImageIndex] 
1489            .classList.remove("selected") 
1490 
1491        currentImageIndex++ 
1492 
1493        if(currentImageIndex >= max) 
1494            currentImageIndex = 0 
1495 
1496        images[currentImageIndex] 
1497            .classList.add("selected") 
1498
1499 
1500    function start() { 
1501 
1502        let enderecos = document.querySelectorAll('address'); 
1503 
1504        if(enderecos.length >= 2){     
1505 
1506            setInterval(() => { 
1507                // troca de image 
1508                nextImage() 
1509            }, time) 
1510
1511        
1512
1513 
1514    window.addEventListener("load", start) 
1515 
1516});  
1517     
1518</script> 
1519	 
1520 
1521     
1522</section> 
1523 
1524<!--  Fim Header Unidade --> 
1525 
1526 
1527      
1528<#--  Conteúdo dinâmico que carrega os temas, subtemas e cursos  --> 
1529 
1530<section> 
1531 
1532	<div> 
1533 
1534		<h2 class="ssp-section-tema__title"> 
1535			<#if tipoCurso == "Livre"> 
1536 
1537				Cursos Livres 
1538 
1539				<!-- <span class="ssp-section-tema__subtitle-desconto"> 
1540					<span style="color: #ff9057">30% de desconto</span> com opções imperdíveis de parcelamento 
1541				</span> --> 
1542				 
1543			<#elseif tipoCurso == "Técnico">	 
1544 
1545				Cursos Técnicos 
1546 
1547				<!-- <span class="ssp-section-tema__subtitle-desconto"> 
1548					<span style="color:#f7bd23">99 reais mensais.</span> O seu futuro por menos de 4 reais por dia 
1549				</span>			 --> 
1550				 
1551            <#else>  
1552 
1553                Extensão Universitária 
1554 
1555                <!--<span class="ssp-section-tema__subtitle-desconto"> 
1556                    <span style="color:#3ECCA6">30% de desconto</span> e muito mais tempo para pagar  
1557                </span>         --> 
1558                 
1559            </#if> 
1560		</h2> 
1561 
1562		<div class="container"> 
1563 
1564			<div> 
1565				<span class="ssp-unidade-temas__label-filtre-por">Selecione uma área:</span> 
1566			</div> 
1567 
1568			<div id="temas" class="ssp-section-tema__container-menu"> 
1569 
1570				<div class="ssp-section-tema__container-menu-item"> 
1571					<a href="#a" class="tema todos" data-nvl="0"> 
1572						<i class="fa-solid fa-dice-d6"></i> 
1573						Todos 
1574					</a> 
1575				</div> 
1576 
1577			</div> 
1578 
1579			<!-- Botão Visualizar Mais --> 
1580 
1581			<div class="ssp-btn__visualizar-mais-content d-md-none d-lg-none d-xl-none"> 
1582 
1583				<p id="visualizar-mais" class="ssp-btn__visualizar-mais">Visualizar mais</p> 
1584 
1585				<i class="fas fa-chevron-down mx-2 visualizar-mais-seta" style="font-size: 14px;"></i> 
1586				 
1587			</div> 
1588 
1589			<!-- filtros ativos para Mobile --> 
1590 
1591			<div id="filtro-ativo" class="tema-slick-area-mobile py-2"> 
1592 
1593				<!-- filtro nivel 1 --> 
1594				<div id="filtro-ativo-nivel-1" class="ssp-section-tema__container-menu-item mega-menu"> 
1595					 
1596				</div> 
1597 
1598				<div id="filtro-ativo-nivel-2" class="container ssp-section-tema__container-submenu-nivel3"> 
1599							 
1600				</div> 
1601 
1602			</div> 
1603 
1604		</div> 
1605 
1606	</div> 
1607 
1608</section> 
1609 
1610<section  id="tema-nivel2-container" 
1611	style="background-color: #e4e8f0;"> 
1612	 
1613	<h2 id="tema-atual" class="ssp-section-tema__title"></h2> 
1614		 
1615	<#--   
1616	<div id="subtemas-lista-mobile" 
1617		class="container d-none ssp-section-tema__container-submenu-nivel3"></div>  --> 
1618 
1619	<div id="filtro-temas-nivel-2" class="container ssp-section-tema__container-submenu-nivel3 d-none"></div> 
1620	 
1621	<div id="filtro-temas-nivel-3" class="container ssp-section-tema__container-submenu-nivel3 d-none"></div> 
1622 
1623</section> 
1624 
1625<section id="cursos-por-categoria-container" 
1626	style="background-color: #e4e8f0;padding-bottom:30px"> 
1627 
1628	<section class="py-5" style="background-color: #e4e8f0;"> 
1629 
1630		<div class="container"> 
1631			<!-- <hr class="filtroInscBolsa"> --> 
1632			<div class="filtroTextoMobile">  
1633				<span style="font-family: 'Montserrat';font-size: 15px;font-weight: 600;color: #454F63;" > Filtrar por:</span>  
1634			</div> 
1635			<div class="ssp-slider-check__container" style="padding: 20px 0px;" id="container-filtros"> 
1636				<div class="ssp-slider-check__content-itens"> 
1637					<div class="ssp-slider-check__content-item filtroInscBolsa"> 
1638 
1639                   		 <span style="font-family: 'Montserrat';font-size: 18px;font-weight: 600;color: #454F63;" >Filtre por: </span> 
1640                    </div> 
1641 
1642					<div class="ssp-slider-check__content-item">	 
1643		 
1644						<label id="inscricao-aberta" class="switch">	 
1645							<input id="chkInscricao" type="checkbox">	 
1646							<span class="slider round"></span>	 
1647						</label>	 
1648						 
1649						<span class="ssp-slider-check__label">Comprar agora</span> 
1650							 
1651					</div> 
1652					 
1653				<#if tipoCurso == "Livre" || tipoCurso == "Técnico"> 
1654				 
1655					<div class="ssp-slider-check__content-item"> 
1656	 
1657						<label id="bolsas-estudo" class="switch"> 
1658							<input id="chkBolsa" type="checkbox"> 
1659							<span class="slider azul round"></span> 
1660						</label> 
1661			 
1662						<span class="ssp-slider-check__label">Bolsas de estudo</span> 
1663	 
1664					</div> 
1665				</#if> 
1666				</div>     
1667 
1668			</div> 
1669 
1670			<!-- <hr class="filtroInscBolsa"> --> 
1671		</div> 
1672		 
1673		<div id="curso-sem-slick" class="ssp-container__cursos-sem-slick container" style="margin-top:15px;"></div> 
1674 
1675 
1676	</section> 
1677	<div id="filtroSemCurso" class="ssp-bolsa-formulario__card-aviso-atencao d-none container text-left" style="width: 100%;"> 
1678                     
1679        <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i> 
1680     
1681        <div class="ssp-bolsa-formulario__card-aviso-texto"><p>Sem cursos para o filtro selecionado</p> 
1682        </div> 
1683     
1684     </div> 
1685	 
1686	 
1687</section> 
1688 
1689 
1690<#-- Template para card de cursos por categoria --> 
1691<section id="cursos-por-categoria-template" 
1692	class="cursos-por-categoria ssp-section container d-none"> 
1693 
1694 
1695	<div class="ssp-page-busca__section-resultado-container" 
1696		id="container-slider-cursos-livres"> 
1697 
1698		<a href="#a" data-nvl="" data-tema="" 
1699		class="ver-todos-cursos-link d-none-mobile"> 
1700	<p 
1701		class="ssp-page-busca__section-resultado__title-outros tema-nome ssp-section-tema__subtitle-curso-section"></p></a> 
1702		 
1703	</div> 
1704 
1705	<div class="slider-curso" style="display: flex;"></div> 
1706 
1707</section> 
1708 
1709<#--  Estrutura com botões de tipos de curso -  os únicos que precisam ser dinâmicos são Livre e Técnico  --> 
1710 
1711<section class="ssp-section ssp-section-lg-top"> 
1712 
1713 
1714    <div class="container text-left"> 
1715 
1716        <h2 class="ssp-section-title"> 
1717            <lfr-editable id="title" type="rich-text"> 
1718                Cursos oferecidos 
1719            </lfr-editable> 
1720        </h2> 
1721     
1722        <div class="ssp-btns-horizontal-area"> 
1723 
1724			<#function getCategorias primaryKey> 
1725   
1726			<#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
1727			<#attempt> 
1728		   
1729				<#return categoryService.getCategories("com.liferay.journal.model.JournalArticle", primaryKey)> 
1730		   
1731			<#recover> 
1732			   
1733			  <#return '#erro#'> 
1734			</#attempt> 
1735		  </#function> 
1736 
1737			<#assign  
1738			 
1739 
1740				categoriesList = getCategorias(journal.getResourcePrimKey())  
1741				normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil")  
1742				vocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
1743				vocabularies = vocabularyLocalService.getAssetVocabularies(-1,-1) 
1744				 
1745			/> 
1746 
1747 
1748			<#list vocabularies as vocabulary > 
1749			<#if vocabulary.getName() == 'Unidades'> 
1750				 
1751				<#assign  
1752					xPathSelector_nomeUsualUnidade = saxReaderUtil.createXPath("dynamic-element[@name='nomeUsualUnidade']") 
1753					  nomeUsual = xPathSelector_nomeUsualUnidade.selectSingleNode(rootElement).getStringValue() 
1754					  categories = vocabulary.getCategories() 
1755
1756				<#list categories as category> 
1757					<#if  category.getName()?trim == nomeUsual?trim> 
1758						 
1759						<#assign categoryId = category.getCategoryId() > 
1760					</#if> 
1761				</#list> 
1762			</#if> 
1763		</#list> 
1764 
1765 
1766 
1767		<#-- Prefixo EAD--> 
1768        <#assign xPathSelector_urlEAD = saxReaderUtil.createXPath("dynamic-element[@name='prefixourlead']")> 
1769        <#assign prefixoURLEAD = xPathSelector_urlEAD.selectSingleNode(rootElement).getStringValue()> 
1770 
1771        <#assign  hasPrefixoUrlEad = (prefixoURLEAD?trim?length > 0) > 
1772 
1773 
1774			<#list categoriesList![] as category> 
1775  
1776                <#assign vocabularyName = vocabularyLocalService.getVocabulary(category.getVocabularyId()).getTitle("pt-br")?trim /> 
1777  
1778                <#if normalizer.normalize(vocabularyName) == "tipo-de-curso"> 
1779					<#assign normalizedCategoryName = normalizer.normalize(category.getName()) /> 
1780					 
1781					<#if category.getName() == "Livre EAD"> 
1782                    <a href="#" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo</a> 
1783                    <#else> 
1784                        <a href="#" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">${category.getName()}</a> 
1785                    </#if> 
1786					 
1787 
1788                </#if> 
1789  
1790			</#list> 
1791 
1792			<#-- Verifica se a unidade oferta curso de Idiomas--> 
1793 
1794                <<#list categoriesList![] as category> 
1795 
1796                    <#assign vocabularyName = vocabularyLocalService.getVocabulary(category.getVocabularyId()).getTitle("pt-br")?trim /> 
1797 
1798                    <#if normalizer.normalize(vocabularyName) == "tema-mercadologico-">  
1799 
1800						<#assign normalizedCategoryName = normalizer.normalize(category.getName()) /> 
1801 
1802						<#if category.getName() == "Idiomas"> 
1803								<a href="#" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">${category.getName()}</a> 
1804							<#else> 
1805						</#if> 
1806 
1807                    </#if> 
1808 
1809                </#list>  
1810 
1811            <#-- Verifica se a unidade oferta curso livre--> 
1812 
1813			 
1814			<#if hasPrefixoUrlEad > 
1815 
1816                <a href="${prefixoURLEAD}" target="_blank" class="btn btn-nivel btn-nivel-ead">EAD</a> 
1817 
1818            </#if> 
1819     
1820 
1821	</div> 
1822 
1823    </div> 
1824 
1825 
1826</section> 
1827  
1828 <script> 
1829  
1830var temas = []; 
1831var subtemasStorage = new Map(); 
1832var activeCategory = 'all'; 
1833var activeCategoryLevel = 0; 
1834var limit = 2; 
1835var offset = 0; 
1836var todosText = ''; 
1837var limitTodosCursos = 16; 
1838var offsetTodosCursos = 0; 
1839var groupId = 0; 
1840var tipoCursoNome = ""; 
1841var tipoCursoNomeBreadCrumb = ""; 
1842var cookieName = ""; 
1843var tam = $(window).width(); 
1844var urlUnidade = ""; 
1845var urlTipoCurso = "";  
1846var categoryIdUnidade = ""; 
1847var urlTemasStorage = new Map(); 
1848var urlTemaNv1 = ""; 
1849var urlTemaNv2 = ""; 
1850var urlTemaNv3 = ""; 
1851var acessoDireto = 0; 
1852var categoryIdTemaNv1 = ""; 
1853var categoryIdTemaNv2 = ""; 
1854var categoryIdTemaNv3 = ""; 
1855const HOST = window.location.origin; 
1856var filtrarInscricoesAbertas = 0; 
1857var filtrarBolsaEstudo = 0; 
1858var activeModeloExibicao = 1; 
1859var limitCursos = tam <= 1024 ? 4 : 11; 
1860var cliqueFiltroMobile = 0; 
1861var carregandoMais = false; 
1862var urlSearchTipoCurso = '/o/senac-content-services/idTipoCursoPorNome/{groupId}/{tipoCursoNome}'; 
1863var cardVerTodosTipoCursoClass = '' 
1864let categorias = [] 
1865 
1866function montaBreadCrumb(){ 
1867	var breadCrumb = $(".breadcrumb"); 
1868	var nomeUnidade = $("#nomeUnidadeParaBreadCrumb").text().trim(); 
1869	 
1870	breadCrumb.empty(); 
1871	 
1872	//Home 
1873	breadCrumb.append('<li class="breadcrumb-item"><a class="breadcrumb-link" href="/" title="Home"><span class="breadcrumb-text-truncate">Home</span></a></li>'); 
1874	 
1875	//Unidades 
1876	breadCrumb.append('<li class="breadcrumb-item"><a class="breadcrumb-link" href="/unidades" title="Unidades"><span class="breadcrumb-text-truncate">Unidades</span></a></li>'); 
1877	 
1878	//Unidade 
1879	breadCrumb.append('<li class="breadcrumb-item"><a class="breadcrumb-link" href="/'+urlUnidade+'" title="'+nomeUnidade+'"><span class="breadcrumb-text-truncate">'+nomeUnidade+'</span></a></li>'); 
1880	 
1881	//Tipo de Curso 
1882	breadCrumb.append('<li class="breadcrumb-item"><a class="breadcrumb-link" href="/'+urlUnidade+'/'+urlTipoCurso+'" title="'+tipoCursoNomeBreadCrumb+'"><span class="breadcrumb-text-truncate">'+tipoCursoNomeBreadCrumb+'</span></a></li>'); 
1883	 
1884
1885 
1886function carregaLinkTodosBotoesModalidades(){ 
1887 
1888	$( document ).ready(function() { 
1889		 
1890        var friendlyUrlUnidade = $("#friendlyUnidade").text().trim(); 
1891 
1892        // extensão 
1893        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-extensao'))){ 
1894        	var urlExt = "/"+friendlyUrlUnidade+ "/extensao-universitaria"; 
1895        	  
1896        	if(friendlyUrlUnidade == "senac-tatuape-luis-americano" || friendlyUrlUnidade == "centro-universitario-senac-campos-do-jordao")  
1897        		urlExt = "/busca?q=*&tipo-curso="+$('.ssp-btns-horizontal-area').find('.btn-nivel-extensao').data('categoryid')+"&unidade="+${categoryId}+'#c'; 
1898                  
1899			$('.ssp-btns-horizontal-area').find('.btn-nivel-extensao').attr("href", urlExt); 
1900       		//$('.ssp-btns-horizontal-area').find('.btn-nivel-extensao').attr("href", "https://www.sp.senac.br/jsp/default.jsp?template=1588.dwt&testeira=725&type=X&unit=NONE&sub=") 
1901 
1902
1903 
1904        // Ensino Médio 
1905        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-ensino-medio-tecnico'))){ 
1906 
1907           
1908        	var urlEmed = "/"+friendlyUrlUnidade+ "/ensino-medio-tecnico"; 
1909			$('.ssp-btns-horizontal-area').find('.btn-nivel-ensino-medio-tecnico').attr("href", urlEmed); 
1910 
1911 
1912
1913 
1914 
1915        // Graduação 
1916        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-graduacao'))){ 
1917        	 
1918        	var urlGraduacao = "/"+friendlyUrlUnidade+ "/graduacao"; 
1919 
1920            $('.ssp-btns-horizontal-area').find('.btn-nivel-graduacao').attr("href", urlGraduacao); 
1921             
1922
1923 
1924        // Pos-Graduação 
1925        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-pos-graduacao'))){ 
1926 
1927            $('.ssp-btns-horizontal-area').find('.btn-nivel-pos-graduacao').attr({ 
1928                href: "/"+friendlyUrlUnidade+ "/pos-graduacao", 
1929                target: "_blank" 
1930            }) 
1931 
1932
1933 
1934        // livre 
1935        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-livre'))){ 
1936                 
1937            var urlLiv = "/"+friendlyUrlUnidade+ "/cursos-livres"; 
1938             
1939            //Solucao temporaria, ate o proxy estiver correto 
1940            if(friendlyUrlUnidade == "senac-tatuape-luis-americano" || friendlyUrlUnidade == "centro-universitario-senac-campos-do-jordao")  
1941                urlLiv = "/busca?q=*&tipo-curso="+$('.ssp-btns-horizontal-area').find('.btn-nivel-livre').data('categoryid')+"&unidade="+${categoryId}+'#c'; 
1942             
1943				$('.ssp-btns-horizontal-area').find('.btn-nivel-livre').attr("href", urlLiv); 
1944 
1945
1946		 
1947		 // livre Ao vivo 
1948		 if (($('.ssp-btns-horizontal-area').find('.btn-nivel-livre-ead'))){ 
1949 
1950			$('.ssp-btns-horizontal-area').find('.btn-nivel-livre-ead').attr({ 
1951 
1952				href : "https://www.sp.senac.br/cursos-livres-senac-online-ao-vivo" 
1953			}) 
1954 
1955
1956 
1957		// Regra para Botão de Idiomas 
1958 
1959        if( 
1960 
1961			$('#codUnidadeReferencia').text() === "137" ||  
1962			$('#codUnidadeReferencia').text() === "123" ||  
1963            $('#codUnidadeReferencia').text() === "23" ||  
1964            $('#codUnidadeReferencia').text() === "58" ||  
1965            $('#codUnidadeReferencia').text() === "32" ||  
1966            $('#codUnidadeReferencia').text() === "62" && $('.ssp-btns-horizontal-area').find('.btn-nivel-idiomas') 
1967             
1968        ) { 
1969 
1970            var urlIdi = "/"+friendlyUrlUnidade+ "/cursos-livres/idiomas"; 
1971 
1972            $('.ssp-btns-horizontal-area').find('.btn-nivel-idiomas').attr("href", urlIdi); 
1973 
1974        }else{ 
1975            $('.ssp-btns-horizontal-area').find('.btn-nivel-idiomas').addClass("d-none") 
1976
1977 
1978        // Técnicos 
1979        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-tecnico'))){ 
1980 
1981            var urlTec = "/"+friendlyUrlUnidade+ "/cursos-tecnicos"; 
1982             
1983        //Solucao temporaria, ate o proxy estiver correto 
1984        if(friendlyUrlUnidade == "senac-tatuape-luis-americano" || friendlyUrlUnidade == "centro-universitario-senac-campos-do-jordao")  
1985            urlTec = "/busca?q=*&tipo-curso="+$('.ssp-btns-horizontal-area').find('.btn-nivel-tecnico').data('categoryid')+"&unidade="+${categoryId}+'#c'; 
1986         
1987            $(this).find('.btn-nivel-tecnico').attr("href", urlTec); 
1988 
1989
1990 
1991        // Jovem Aprendiz 
1992        if (($('.ssp-btns-horizontal-area').find('.btn-nivel-jovem-aprendiz'))){ 
1993 
1994            $(this).find('.btn-nivel-jovem-aprendiz').attr({ 
1995                href: "/jovem-aprendiz", 
1996            }) 
1997 
1998
1999 
2000 
2001    }); 
2002 
2003 
2004
2005 
2006function carregaLinkBotoesLivreETecnico(){ 
2007	 
2008	urlUnidade = $("#friendlyUnidade").text().trim(); 
2009	urlTipoCurso = $("#friendlyTipoCurso").text().trim();  
2010		 
2011	$.ajax({ 
2012	 
2013		url : '/o/senac-content-services/url-tipos-de-curso/'+groupId, 
2014		type : 'get', 
2015		dataType: 'json', 
2016	 
2017	}).done(function(res) { 
2018		$(res).each(function(key , value){ 
2019			 
2020			if(value.name == 'tecnico'){ 
2021				//botao livre 
2022				$("#linkTecnico").attr('href', "/"+urlUnidade+"/"+value.friendlyURL); 
2023				 
2024			}else 
2025				 if(value.name == 'livre'){ 
2026			 
2027					 $("#linkLivre").attr('href', "/"+urlUnidade+"/"+ value.friendlyURL); 
2028					  
2029
2030			 
2031		 
2032		}); 
2033		 
2034	}); 
2035 
2036	 
2037 
2038
2039 
2040//verifica se usuario acessou direto pelas urls dos temas e carrega os temas para dar sequencia 
2041function verificaAcessoDiretoELoadTema(){ 
2042	 
2043	urlTemaNv1 = $("#friendlyTemaNv1").text().trim(); 
2044	urlTemaNv2 = $("#friendlyTemaNv2").text().trim(); 
2045	urlTemaNv3 = $("#friendlyTemaNv3").text().trim(); 
2046	 
2047	//tem tema de nivel 1 na url 
2048	if(urlTemaNv1 != ''){ 
2049		 
2050		//seta variavel global para checar de outras partes se necessario 
2051		acessoDireto = 1; 
2052		 
2053		$.ajax({ 
2054			url : '/o/senac-unidade-services/categoriaPorFriendlyURL/'+urlTemaNv1+"/"+0, 
2055			type : 'get', 
2056			dataType: 'json' 
2057		}) 
2058		.done(function(temaCategories) { 
2059			 
2060			categoryIdTemaNv1 = temaCategories[0].categoryId; 
2061			 
2062			//armazenando no map para nao precisar ficar buscando a url quando clicar nos temas  
2063			urlTemasStorage.set(categoryIdTemaNv1,urlTemaNv1); 
2064			 
2065			if(urlTemaNv2 == ""){ 
2066				carregaTemasNivelDireto(1); 
2067			}else{ 
2068				//buscando categoria do tema nivel 2 
2069				$.ajax({ 
2070					url : '/o/senac-unidade-services/categoriaPorFriendlyURL/'+urlTemaNv2+"/"+categoryIdTemaNv1, 
2071					type : 'get', 
2072					dataType: 'json' 
2073				}) 
2074				.done(function(temaCategories2) { 
2075					 
2076						 
2077					categoryIdTemaNv2 = temaCategories2[0].categoryId; 
2078					urlTemasStorage.set(categoryIdTemaNv2,urlTemaNv2); 
2079					 
2080					if(urlTemaNv3 == ""){ 
2081						carregaTemasNivelDireto(2); 
2082					}else{ 
2083						 
2084						//buscando categoria do tema nivel 3 
2085						$.ajax({ 
2086							url : '/o/senac-unidade-services/categoriaPorFriendlyURL/'+urlTemaNv3+"/"+categoryIdTemaNv2, 
2087							type : 'get', 
2088							dataType: 'json' 
2089						}) 
2090						.done(function(temaCategories3) { 
2091							categoryIdTemaNv3 = temaCategories3[0].categoryId; 
2092							urlTemasStorage.set(categoryIdTemaNv3,urlTemaNv3); 
2093							carregaTemasNivelDireto(3); 
2094							 
2095						}); 
2096						 
2097
2098				}); 
2099
2100			 
2101		}); 
2102		 
2103	//nao tem tema na url entao carrega tudo normal 
2104	}else{ 
2105		carregaTemas(); 
2106		$('#tema-atual').text("Todos os cursos"); 
2107		todosText = $('#tema-atual').text(); 
2108
2109 
2110 
2111
2112 
2113// Verificar se a url em parametro de bolsas 
2114 
2115function verificaUrlBolsa(){ 
2116 
2117	let urlPage = window.location.href; 
2118	let parametroBolsa = "?bolsa:true" 
2119	let verificaURL = urlPage.includes(parametroBolsa) 
2120 
2121	if(verificaURL == true){ 
2122 
2123		$('#bolsas-estudo input').trigger( "click" ); 
2124 
2125
2126 
2127
2128 
2129/* Prepara a montagem inicial da página */ 
2130function init() { 
2131	var tipoCursoText = $('#tipoCursoText').text().trim(); 
2132	 
2133	if(tipoCursoText == "Livre"){ 
2134		tipoCursoNomeBreadCrumb = "Cursos Livres"; 
2135		tipoCursoNome = "Livre"; 
2136		cookieName = "ck-cursos-livre";	 
2137		cardVerTodosTipoCursoClass = "livre" 
2138	 
2139	}else if(tipoCursoText == "Técnico"){ 
2140		tipoCursoNomeBreadCrumb = "Cursos Técnicos"; 
2141		tipoCursoNome = "Técnico"; 
2142		cookieName = "ck-cursos-tecnico"; 
2143		cardVerTodosTipoCursoClass = "tecnico" 
2144	 
2145	}else if(tipoCursoText == "Extensão"){ 
2146		tipoCursoNomeBreadCrumb = "Extensão Universitária"; 
2147		tipoCursoNome = "Extensão"; 
2148		cookieName = "ck-cursos-extensao"; 
2149		cardVerTodosTipoCursoClass = "extensao" 
2150
2151 
2152	carregarCategorias() 
2153 
2154	const urlParams = new URLSearchParams(window.location.search) 
2155	$('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true') 
2156	$('#chkInscricao').prop("checked") ? filtrarInscricoesAbertas = 1 : filtrarInscricoesAbertas = 0 
2157	$('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')) ) 
2158	 
2159    if($('#chkBolsa').length) { 
2160      $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true') 
2161	  $('#chkBolsa').prop("checked") ? filtrarBolsaEstudo = 1 : filtrarBolsaEstudo = 0 
2162      $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')) ) 
2163	  	 
2164    }  
2165 
2166	groupId = Liferay.ThemeDisplay.getScopeGroupId(); 
2167 
2168		//Preenche o id do tipo de curso e a modalidade 
2169		var url = urlSearchTipoCurso 
2170		 .replace('{groupId}', groupId) 
2171		 .replace('{tipoCursoNome}', tipoCursoNome); 
2172		  
2173		 $.ajax({ 
2174		 	url : url, 
2175		 	type : 'get' 
2176		 }).done(function(categoryIdTipoCursoResponse) { 
2177		  
2178		 categoryIdTipoCurso = categoryIdTipoCursoResponse; 
2179		  
2180		}); 
2181 
2182	carregaLinkTodosBotoesModalidades(); 
2183	 
2184	carregaLinkBotoesLivreETecnico(); 
2185	 
2186	montaBreadCrumb(); 
2187 
2188	verificaAcessoDiretoELoadTema(); 
2189	 
2190
2191 
2192function carregarCategorias() { 
2193	if(!categorias.length) { 
2194		const searchParams = new URLSearchParams({ 
2195			companyId: themeDisplay.getCompanyId(), 
2196			groupIds: themeDisplay.getScopeGroupId(), 
2197			parentCategoryIds: 0, 
2198			vocabularyIds: document.querySelector('#ssp-vocabulary-id-tema-mercadologico').value 
2199		}) 
2200 
2201		$.ajax({ 
2202			url : '/o/senac-category-services/categories?' + searchParams.toString(), 
2203			method : 'get', 
2204			async: false 
2205		}) 
2206		.done(data => categorias = data) 
2207		.fail(err => console.error(err)) 
2208
2209
2210 
2211function selectFilter(paramkey, el) { 
2212	setUrlParam(paramkey, el.prop("checked"))	 
2213
2214 
2215function setUrlParam(key, value) { 
2216	const url = new URL(window.location.href) 
2217	if(value) 
2218      url.searchParams.set(key, value); 
2219    else 
2220	  url.searchParams.set(key, false); 
2221	window.history.pushState({}, '', url.toString()) 
2222
2223 
2224 
2225 
2226$(document).ready(function() { 
2227	 
2228	init(); 
2229	 
2230	//Associa eventos 
2231	$(document).on("click", ".ver-todos-cursos-link", verTodosCursos); 
2232	$(document).on("click", ".card-ver-todos-cursos-link", verTodosCursos); 
2233 
2234 
2235}); 
2236 
2237 
2238//Função que carrega os 5 primeiros Temas e utiliza o botão Visualizar mais e menos na versão Mobile 
2239 
2240function exibeTemasMobile(){ 
2241 
2242   //seleciona todos os temas 
2243	var itensTema = $('#temas').children() 
2244	var itensExibidos = 6 
2245 
2246	//mostra apenas os 5 primeiros 
2247	itensTema.slice(itensExibidos).hide() 
2248 
2249	//Verifica a quantidade de temas e se exibe ou nao o botao ver mais  
2250	if( itensTema.length < itensExibidos){ 
2251 
2252		$('.ssp-btn__visualizar-mais-content').addClass('d-none') 
2253 
2254	}else{ 
2255		$('.ssp-btn__visualizar-mais-content').removeClass('d-none') 
2256
2257 
2258	//Mostra apenas os 5 primeiros temas 
2259	//$('#temas').children().slice(3).hide() 
2260 
2261 
2262 
2263
2264 
2265// mobile - botao visualiza mais/menos 
2266if(tam <= 1024){ 
2267	// Botao ver mais e menos Temas 
2268	$(document).on("click", '#visualizar-mais',function(){ 
2269			var itensTema = $('#temas').children() 
2270			var itensExibidos = 6; 
2271			 
2272			if( $(this).text() === "Visualizar mais" ){ 
2273	 
2274				itensTema.slice(itensExibidos).show(); 
2275	 
2276				$(this).text('Visualizar menos'); 
2277				 
2278				$(this).parent().find('i').removeClass('fa-chevron-down'); 
2279				 
2280				$(this).parent().find('i').addClass('fa-chevron-up'); 
2281				 
2282	 
2283			}else{ 
2284	 
2285				itensTema.slice(itensExibidos).hide(); 
2286	 
2287				$(this).text('Visualizar mais'); 
2288	 
2289				$(this).parent().find('i').removeClass('fa-chevron-up'); 
2290				 
2291				$(this).parent().find('i').addClass('fa-chevron-down'); 
2292				 
2293			}      
2294	}) 
2295 
2296
2297function resetTemasMobile(){ 
2298    $('.todos').trigger('click'); 
2299     
2300    if($('#visualizar-mais').text() === "Visualizar menos"){ 
2301    	$('#visualizar-mais').text("Visualizar mais"); 
2302    	$('#visualizar-mais').parent().find('i').removeClass('fa-chevron-up'); 
2303    	$('#visualizar-mais').parent().find('i').addClass('fa-chevron-down'); 
2304
2305     
2306    $('#visualizar-mais').removeClass('d-none'); 
2307
2308 
2309// Botao para filtro de cursos com inscricoes abertas e bolsas 
2310$('#inscricao-aberta input, #bolsas-estudo input').click(function(){ 
2311	 
2312	if(tam <= 1024){ 
2313		//mobile quando clica no tema/subtema volta ao nivel anterior, esta flag serve para nos eventos de click nao fazer isso 
2314		cliqueFiltroMobile = 1; 
2315
2316	 
2317   
2318  //Atualiza as variaveis globais dos dois filtros 
2319  $("#inscricao-aberta input").is(":checked") == true ? filtrarInscricoesAbertas = 1 : filtrarInscricoesAbertas = 0; 
2320  $("#bolsas-estudo input").is(":checked") == true ? filtrarBolsaEstudo = 1 : filtrarBolsaEstudo = 0; 
2321   
2322  //Refaz a busca com os filtros atualizados 
2323  switch(activeModeloExibicao){ 
2324    case 1: 
2325    	  
2326    case 2: 
2327       
2328      //Verifica se esta exibindo todos ou algum tema 
2329      var botaoTodos = $('.todos'); 
2330       
2331      if(botaoTodos.hasClass('ativo') || botaoTodos.hasClass('tema-ativo'))  
2332          $('.todos:first').trigger('click'); 
2333       
2334      //Se estiver ativo um tema, verifica se possui ativo um subtema 
2335      else 
2336        //Verifica o nivel do tema clicado 
2337        $('.subtema-ativo').length == 0 ? $('.tema-ativo:first').trigger('click') : $('.subtema-ativo:first').trigger('click'); 
2338        break; 
2339 
2340      case 3: 
2341    	  $('.subtema-ativo').length == 0 ? $('.tema-ativo:first').trigger('click') : $('.subtema-ativo:last').trigger('click'); 
2342      break; 
2343
2344}) 
2345 
2346//nivel 0 -> botao todos 
2347function atualizaUrlBrowser(urlTema,nivel){ 
2348	var path = window.location.pathname; 
2349	var urlFinal = ""; 
2350	 
2351	if(path.indexOf('staging') > 1){ 
2352		urlFinal = "/web/guest-staging"; 
2353	}else 
2354		if(path.indexOf('guest') > 1){ 
2355			urlFinal = "/web/guest"; 
2356
2357		 
2358	urlFinal += "/"+urlUnidade+"/"+urlTipoCurso;	 
2359	 
2360	//se for todos os cursos a url fica so /unidade/tipo-curso 
2361	if(nivel > 0){ 
2362 
2363		switch(nivel){ 
2364		 
2365			case 1: 
2366				urlTemaNv1 = urlTema; 
2367				urlFinal += "/"+urlTemaNv1; 
2368			break; 
2369			 
2370			case 2: 
2371				urlTemaNv2 = urlTema; 
2372				if(tipoCursoNome == "Livre" || tipoCursoNome == "Extensão"){ 
2373					urlFinal += "/"+urlTemaNv1+"/"+urlTemaNv2; 
2374				}else{ 
2375					urlFinal += "/"+urlTemaNv1; 
2376
2377			break; 
2378			 
2379			case 3: 
2380				if(tipoCursoNome == "Livre" || tipoCursoNome == "Extensão"){ 
2381					urlTemaNv3 = urlTema; 
2382					urlFinal += "/"+urlTemaNv1+"/"+urlTemaNv2+"/"+urlTemaNv3; 
2383
2384			break; 
2385		 
2386
2387		 
2388
2389 
2390	urlFinal = new URL(window.location.origin + urlFinal); 
2391 
2392	if($("#inscricao-aberta input").is(":checked")){ 
2393		urlFinal.searchParams.set("inscricao", true); 
2394	}  
2395	if($("#bolsas-estudo input").is(":checked")){ 
2396		urlFinal.searchParams.set("bolsa", true); 
2397	}  
2398 
2399	window.history.pushState('', 'Categoria JavaScript', urlFinal.toString()); 
2400
2401 
2402function buscaFriendlyUrlTemaEAtualizaBrowser(temaId,nivelClicado){ 
2403	 
2404	var friendlyUrlTema = urlTemasStorage.get(temaId); 
2405	 
2406	 
2407	//se ainda nao tem no map, busco via ajax e armazeno no map a url do tema clicado para nao precisar buscar novamente 
2408	if(typeof  friendlyUrlTema === "undefined"){ 
2409		$.ajax({ 
2410			url : '/o/senac-content-services/friendlyUrlPorCategoria/'+temaId, 
2411			type : 'get', 
2412			dataType: 'json', 
2413		}).done(function(res) { 
2414			 
2415			urlTemasStorage.set(temaId,res.url); 
2416			 
2417			atualizaUrlBrowser(res.url,nivelClicado); 
2418			 
2419		}) 
2420	}else{ 
2421		atualizaUrlBrowser(friendlyUrlTema,nivelClicado); 
2422
2423
2424 
2425/* Carrega os subtemas ou cursos ao clicar no tema */ 
2426$(".container").on( 
2427		"click", 
2428		".tema", 
2429		function() { 
2430			 
2431			//No mobile, se ja tiver o tema ativo, fecha esse tema e volta ao nivel 0 
2432			if(tam <= 1024){ 
2433				 
2434				if(!cliqueFiltroMobile){ 
2435					 
2436					$('#visualizar-mais').addClass('d-none'); 
2437					 
2438					if($(this).hasClass('tema-ativo')){ 
2439						 
2440						carregaTemas(); 
2441					    $('#filtro-ativo-nivel-1').empty() 
2442					    $('#temas').empty() 
2443					    $('#temas').removeClass('d-none') 
2444					    //Recria o botao Todos os cursos e recarrega os temas 
2445					    $('#temas').append('<div class="ssp-section-tema__container-menu-item"><a href="#a" class="tema todos" data-nvl="0"><i class="fa-solid fa-dice-d6"></i>Todos</a></div>') 
2446					    resetTemasMobile(); 
2447					   
2448					    //Limpa os filtros de nivel 2 ativos 
2449					    $("#filtro-ativo-nivel-2").empty(); 
2450					     
2451						return; 
2452
2453				}else{ 
2454					//reinicializo clique no filtro quando é mobile e continuo com comportamento normal do clique 
2455					cliqueFiltroMobile = 0; 
2456
2457
2458			 
2459			 
2460			var categoriaId = $(this).data('tema'); 
2461			 
2462			if($(this).hasClass('todos')){ 
2463			 
2464				//se clicou em todos nao preciso buscar o id da categoria do tema, so atualizo a url 
2465				//nivel 0 = botao todos os cursos 
2466				atualizaUrlBrowser(0,0);		 
2467				 
2468				$('.todos').addClass('ativo'); 
2469			}else{ 
2470				 
2471				if(!acessoDireto)				 
2472					buscaFriendlyUrlTemaEAtualizaBrowser(categoriaId,1); 
2473				 
2474				// Verifica o elemento, adiciona a classe ativo e remove dos seus primos 
2475				$('.todos').removeClass('ativo'); 
2476
2477			 
2478			var primos = $(this).parent().siblings().children(); 
2479			//var primos = $(this).parent().parent().parent().siblings().find('.tema'); 
2480			$('.tema[data-tema="'+categoriaId+'"]').addClass('tema-ativo'); 
2481			$(primos).not('.tema[data-tema="'+categoriaId+'"]').removeClass('tema-ativo'); 
2482			 
2483			 
2484			// limpa a lista de subtemas 
2485			$('#filtro-temas-nivel-2').empty(); 
2486			$('#filtro-temas-nivel-3').empty() 
2487			 
2488			limit = 2; 
2489			offset = 0; 
2490			 
2491			limitTodosCursos = 16; 
2492			offsetTodosCursos = 0; 
2493			 
2494			activeCategoryLevel = $(this).data('nvl'); 
2495 
2496      		//Evita de chamar o servico de categoria quando clicar em 'todos' 
2497	      if(!$(this).hasClass('todos')){ 
2498	  			$.ajax( 
2499
2500	  						url : '/o/senac-content-services/category/' 
2501	  								+ $(this).data('tema'), 
2502	  						type : 'get' 
2503	  					}).done(function(category) { 
2504	 
2505	  				activeCategory = JSON.parse(category); 
2506	  				 
2507	  				cleanElements();		 
2508	  				 
2509	  				displayCursosPorTema(); 
2510	  				 
2511	  				//if(tipoCursoNome == "Livre") 
2512	  					displaySubTemasLista(); 
2513	  			}); 
2514	  			 
2515	  			if(tipoCursoNome == "Livre" || tipoCursoNome == "Extensão"){ 
2516	  				if (tam <=1024){ 
2517	 
2518	  					$('#temas').addClass('d-none') 
2519	  					// adiciona o item selecionado nos filtros 
2520	  					$("#filtro-ativo-nivel-1").prepend(this); 
2521
2522
2523
2524		 
2525}); 
2526		 
2527 
2528/* Quando clica em Ver Todos cursos de um tema */ 
2529function verTodosCursos(){ 
2530	 
2531	 
2532	//Scrool top 
2533	$('html, body').animate({ 
2534        scrollTop: $("#temas").offset().top 
2535    }, -1000); 
2536	 
2537	 
2538	var tema = $(this).data('tema'); 
2539	activeCategoryLevel = $(this).data('nvl'); 
2540	 
2541	//buscaFriendlyUrlTemaEAtualizaBrowser(tema,activeCategoryLevel); 
2542 
2543	// Verifica o elemento, adiciona a classe ativo e remove dos seus primos 
2544	$('.todos').removeClass('ativo'); 
2545	 
2546 
2547	// Esconde os subtemas 
2548	//$('#filtro-temas-nivel-2').empty(); 
2549	//$('#filtro-temas-nivel-2').addClass('d-none'); 
2550	 
2551	 
2552	limit = 2; 
2553	offset = 0; 
2554 
2555	$.ajax({ 
2556		url : '/o/senac-content-services/category/'+ tema, 
2557		type : 'get' 
2558	}).done(function(category) { 
2559 
2560		activeCategory = JSON.parse(category); 
2561		 
2562		switch(activeCategoryLevel){ 
2563			case 1: 
2564				$('.tema').removeClass('tema-ativo'); 
2565				$('.tema[data-tema="'+activeCategory.categoryId+'"]').not('.slick-cloned').each(function(){ 
2566					if(!$(this).parent().hasClass('slick-cloned')){	 
2567						var botaoTemaVerTodos = $(this); 
2568						botaoTemaVerTodos.trigger('click'); 
2569
2570				}); 
2571				 
2572				break; 
2573			case 2: 
2574					 
2575				var botaoTemaVerTodosNv2 = $('.subtema[data-tema="'+activeCategory.categoryId+'"]'); 
2576				botaoTemaVerTodosNv2.trigger('click'); 
2577				 
2578				break; 
2579			case 3: 
2580				var botaoTemaVerTodosNv3 = $('.subtema[data-tema="'+activeCategory.categoryId+'"]'); 
2581				botaoTemaVerTodosNv3.trigger('click'); 
2582				 
2583				break; 
2584
2585			 
2586		 
2587	}); 
2588
2589 
2590// evento de click nos subtemas 
2591 
2592$("#filtro-temas-nivel-2, #filtro-temas-nivel-3").on( 
2593		"click", 
2594		".subtema", 
2595		function() { 
2596			$(this).addClass("subtema-ativo"); 
2597			$(this).siblings().removeClass("subtema-ativo"); 
2598			$(this).siblings().removeClass("ativo"); 
2599			 
2600			limitTodosCursos = 16; 
2601			offsetTodosCursos = 0; 
2602			offset = 0; 
2603			 
2604			$('#cursos-por-subtema-container').find('#curso-sem-slick').empty(); 
2605 
2606			activeCategoryLevel = $(this).data('nvl'); 
2607			 
2608			if(!acessoDireto) 
2609				buscaFriendlyUrlTemaEAtualizaBrowser($(this).data('tema'),activeCategoryLevel); 
2610			 
2611			$.ajax( 
2612
2613						url : '/o/senac-content-services/category/' 
2614								+ $(this).data('tema'), 
2615						type : 'get' 
2616					}) 
2617 
2618			.done(function(category) { 
2619 
2620				activeCategory = JSON.parse(category); 
2621				 
2622				cleanElements();				 
2623				displayCursosPorTema(); 
2624 
2625			}); 
2626			 
2627            if (tam <=1024){ 
2628 
2629				//$('#temas').addClass('d-none') 
2630				// adiciona o item selecionado nos filtros 
2631            	$("#filtro-ativo-nivel-2").append(this); 
2632                $("#filtro-temas-nivel-2, #filtro-temas-nivel-3").empty(); 
2633                 
2634
2635 
2636}); 
2637 
2638//Mobile, quando clica em um subtema ativo 
2639$("#filtro-ativo-nivel-2").on( 
2640		"click", 
2641		".subtema-ativo", 
2642		function() { 
2643		 
2644		//o filtro ativa esta trigger, entao preciso saber se clique veio do filtro ou do botao mesmo	 
2645		//se botao, removo ele e volto pro tema pai 
2646		if(!cliqueFiltroMobile){ 
2647				 
2648				$(this).remove(); 
2649				 
2650				if($(this).attr('data-nvl') == '2'){ 
2651			    	 
2652					$('.subtema-ativo').each(function () { 
2653						if($(this).attr('data-nvl') == '3'){ 
2654							$(this).remove(); 
2655						}	 
2656					}); 
2657					 
2658					var temaAtivo = $('.tema-ativo'); 
2659					 
2660					temaAtivo.removeClass('tema-ativo'); 
2661					 
2662					temaAtivo.trigger('click'); 
2663			       
2664			    }else { 
2665			    	 
2666					var subtemaAtivo = $('.subtema-ativo'); 
2667					 
2668					subtemaAtivo.removeClass('subtema-ativo'); 
2669					 
2670					subtemaAtivo.trigger('click'); 
2671			       
2672
2673				 
2674		//se filtro carrego os cursos com o filtro, igual comportamento desktop 		 
2675		}else{ 
2676			 
2677			//reinicializo a flag 
2678			cliqueFiltroMobile = 0 ; 
2679			 
2680			$(this).addClass("subtema-ativo"); 
2681			 
2682			limitTodosCursos = 16; 
2683			offsetTodosCursos = 0; 
2684			offset = 0; 
2685			 
2686			$('#cursos-por-subtema-container').find('#curso-sem-slick').empty(); 
2687		 
2688			activeCategoryLevel = $(this).data('nvl'); 
2689			 
2690			if(!acessoDireto) 
2691				buscaFriendlyUrlTemaEAtualizaBrowser($(this).data('tema'),activeCategoryLevel); 
2692		 
2693			$.ajax( 
2694
2695						url : '/o/senac-content-services/category/' 
2696								+ $(this).data('tema'), 
2697						type : 'get' 
2698					}) 
2699		 
2700			.done(function(category) { 
2701		 
2702				activeCategory = JSON.parse(category); 
2703				 
2704				cleanElements();				 
2705				displayCursosPorTema(); 
2706		 
2707			}); 
2708		 
2709			if($(this).attr('data-nvl') == '2'){		 
2710				// adiciona o item selecionado nos filtros 
2711		    	$("#filtro-ativo-nivel-2").prepend(this); 
2712		        $("#filtro-temas-nivel-2, #filtro-temas-nivel-3").empty(); 
2713
2714		 
2715
2716}); 
2717 
2718/*Mobile, quando clica em um subtema via trigger*/ 
2719 if (tam <=1024){ 
2720	$("#filtro-ativo-nivel-2").on( 
2721			"click", 
2722			".subtema", 
2723			function() { 
2724				 
2725				if($(this).attr('data-nvl') == '2' && !$(this).hasClass('subtema-ativo')){ 
2726					 
2727					$(this).addClass("subtema-ativo"); 
2728					$(this).siblings().removeClass("subtema-ativo"); 
2729					$(this).siblings().removeClass("ativo"); 
2730					 
2731					limitTodosCursos = 16; 
2732					offsetTodosCursos = 0; 
2733					offset = 0; 
2734					 
2735					$('#cursos-por-subtema-container').find('#curso-sem-slick').empty(); 
2736				 
2737					activeCategoryLevel = $(this).data('nvl'); 
2738					 
2739					if(!acessoDireto) 
2740						buscaFriendlyUrlTemaEAtualizaBrowser($(this).data('tema'),activeCategoryLevel); 
2741				 
2742					$.ajax( 
2743
2744								url : '/o/senac-content-services/category/' 
2745										+ $(this).data('tema'), 
2746								type : 'get' 
2747							}) 
2748				 
2749					.done(function(category) { 
2750				 
2751						activeCategory = JSON.parse(category); 
2752						 
2753						cleanElements();				 
2754						displayCursosPorTema(); 
2755				 
2756					}); 
2757					 
2758					// adiciona o item selecionado nos filtros 
2759			    	$("#filtro-ativo-nivel-2").prepend(this); 
2760			        $("#filtro-temas-nivel-2, #filtro-temas-nivel-3").empty(); 
2761
2762
2763	); 
2764 }		 
2765		 
2766/* Click no botao todos */ 
2767$(".container").on("click", ".todos", function() { 
2768	 
2769	activeCategory = 'all'; 
2770	activeCategoryLevel = $(this).data('nvl'); 
2771	offset = 0; 
2772 
2773	/* Limpa dados de subtemas que possam ter sido criados na navegacao */ 
2774	cleanElements(); 
2775 
2776	$('#tema-atual').text("Todos os cursos"); 
2777 
2778	// Esconde a div com subtemas 
2779	$('#filtro-temas-nivel-2').empty(); 
2780	$('#filtro-temas-nivel-2').addClass('d-none'); 
2781 
2782 
2783	displayCursosPorTema(); 
2784 
2785}); 
2786 
2787function montaTextoFinalTipoCursoFormato(curso){ 
2788	var textoTituloCursoFinal = "";	                 			  
2789	 
2790	if(curso.tipoCursoNome == "Livre") 
2791		textoTituloCursoFinal = "Livre"; 
2792		//textoTituloCursoFinal = "Curso Livre" + " ¿ " + curso.formatos[0].name; 
2793 
2794	else if(curso.tipoCursoNome == "Técnico") 
2795		textoTituloCursoFinal = "Técnico"; 
2796		//textoTituloCursoFinal = "Técnico " + " ¿ " + curso.formatos[0].name; 
2797	 
2798	 
2799	return textoTituloCursoFinal; 
2800	 
2801
2802 
2803function getTextoSemCurso(filtroBolsa,filtroInsc,temaNome){ 
2804	 
2805	temaNome = typeof temaNome === "undefined" ? '' : 'de '+temaNome; 
2806	 
2807	if(filtroBolsa && filtroInsc) 
2808		return "<p>No momento, estamos sem cursos <strong><span id='nomeTemaSemCurso'>"+temaNome+"</span></strong> disponíveis para compra e com bolsas de estudo nesta unidade.<br>Selecione outras áreas para consultar bolsas nesta unidade ou <a href='https://www.sp.senac.br/bolsas-de-estudo'>confira bolsas disponíveis em diferentes cursos de outras unidades.</a></p>"; 
2809	else if(filtroBolsa) 
2810		return "<p>No momento, estamos sem cursos <strong><span id='nomeTemaSemCurso'>"+temaNome+"</span></strong> com bolsas de estudo nesta unidade.<br>Selecione outras áreas para consultar bolsas nesta unidade ou <a href='https://www.sp.senac.br/bolsas-de-estudo'>confira bolsas disponíveis em diferentes cursos de outras unidades.</a></p>";	 
2811	else if(filtroInsc) 
2812		return "<p>No momento, estamos sem cursos <strong><span id='nomeTemaSemCurso'>"+temaNome+"</span></strong> disponíveis para compra nesta unidade."; 
2813
2814 
2815/* Limpa a tela para exibicao de novos cursos */ 
2816function cleanElements() { 
2817 
2818	$('#cursos-por-categoria-container .cursos-por-categoria').remove(); 
2819	$('#curso-sem-slick').empty(); 
2820	$('#cursos-por-categoria-container').removeClass('d-none'); 
2821
2822 
2823function cleanCursosCategoria(){ 
2824	$('#cursos-por-categoria-container .cursos-por-categoria').remove(); 
2825
2826 
2827function cleanTemasNivel2(){ 
2828	$('#subsubtemas-lista').remove(); 
2829
2830 
2831/* 
2832 * Armazena a navegacao em cookies, se habilitado 
2833 */ 
2834$(document).on("click", ".ck-curso", function() { 
2835 
2836	//Verifica se os alternadores estao selecionados e manipula o link do curso de acordo a eles. 
2837	urlFinal = new URL(window.location.origin + $(this).attr('href')); 
2838	let filtroInscricaoBolsa = false; 
2839	 
2840    if($("#inscricao-aberta input").is(":checked")){ 
2841      urlFinal.searchParams.set("inscricao", true); 
2842      filtroInscricaoBolsa = true; 
2843    }  
2844    if($("#bolsas-estudo input").is(":checked")){ 
2845      urlFinal.searchParams.set("bolsa", true); 
2846      filtroInscricaoBolsa = true; 
2847    }  
2848    $(this).attr('href', urlFinal.pathname + (filtroInscricaoBolsa ? "?"+urlFinal.searchParams : "")) 
2849	 
2850	//Verifica se o cookie esta habilitado 
2851    if(getCookie('portalSenacCookie') != null){ 
2852    	 
2853		var articleId = $(this).data('ck'); 
2854		manageCookieArray(cookieName, articleId); 
2855		manageCookieArray('ck-cursos', articleId); 
2856
2857 
2858}); 
2859 
2860/* 
2861 * Exibe os cursos por tema, dependendo do nivel 
2862 */ 
2863function displayCursosPorTema() { 
2864	 
2865	$("#filtroSemCurso").addClass("d-none"); 
2866	 
2867	// Verifica o nivel 
2868	switch (activeCategoryLevel) { 
2869 
2870	case 0: // exibe todos 
2871		 
2872		limit = 2; 
2873 
2874		$.each(temas.slice(offset, limit + offset), function(k, t) { 
2875			 
2876			if($('#cursos-por-categoria-'+t.categoryId).length == 0){ 
2877				 
2878				var template = $('#cursos-por-categoria-template').clone(); 
2879				template.prop('id', 'cursos-por-categoria-'+t.categoryId); 
2880				template.removeClass('d-none'); 
2881				$('#cursos-por-categoria-container').append(template); 
2882
2883			 
2884			$.ajax( 
2885
2886						url : '/o/senac-content-services/category/' 
2887								+ t.categoryId, 
2888						type : 'get' 
2889					}).done(function(category) { 
2890						 
2891						var dadosCategoria = JSON.parse(category); 
2892						 
2893						//monta as divs para cada tcategoria 
2894						var templatePorCategoria = $('#cursos-por-categoria-'+dadosCategoria.categoryId); 
2895						templatePorCategoria.find('.tema-nome').text(dadosCategoria.name); 
2896						templatePorCategoria.find('.ver-todos-cursos-link').attr('data-nvl', 1); 
2897						templatePorCategoria.find('.ver-todos-cursos-link').attr('data-tema', dadosCategoria.categoryId); 
2898						templatePorCategoria.removeClass('d-none'); 
2899 
2900						cursosPorCategoriaModelo1(dadosCategoria); 
2901 
2902			}); 
2903		}); 
2904		 
2905		// Esconde botao carregar mais, se  necessario 
2906		 
2907		$('.section-carregar-mais').remove(); 
2908		 
2909		if (temas.length > limit + offset){ 
2910			$('#cursos-por-categoria-container').append('<section style="padding: 30px 0; width:100%" class="section-carregar-mais"><div class="container"><a href="#a" class="ssp-section-tema__btn-ver-mais" id="carregar-mais" style="visibility:hidden"> Carregar mais unidades </a></div></section>'); 
2911
2912		 
2913		 
2914		break; 
2915 
2916	case 1: 
2917		limit = 2; 
2918 
2919		$('#tema-atual').text("Cursos de "+activeCategory.name); 
2920			 
2921		//Exibe a lista de subtemas, quando mobile 
2922		var tam = $(window).width(); 
2923		  
2924		if (tam < 1024){ 
2925			 
2926			$('#subtemas-lista-mobile').empty(); 
2927			$('#subtemas-lista-mobile').removeClass('d-none'); 
2928			 
2929			$.each(subtemasStorage.get(activeCategory.categoryId), function(k, t) { 
2930				 
2931				$('#subtemas-lista-mobile').append('<a href="#a" class="subtema btn-nivel-3" data-tema="' 
2932						+ t.categoryId 
2933						+ '" data-nvl="2" >' 
2934						+ t.name 
2935						+ '</a>'); 
2936			}); 
2937			 
2938
2939		 
2940		// Exibe os cursos dos subtemas do tema clicado percorrendo a lista de 
2941		// subtemas do tema clicado 
2942		if(subtemasStorage.get(activeCategory.categoryId).length > 0){ 
2943						 
2944			$.each(subtemasStorage.get(activeCategory.categoryId).slice(offset, 
2945					limit + offset), function(k, t) { 
2946				 
2947				 
2948				if($('#cursos-por-categoria-'+t.categoryId).length == 0){ 
2949					 
2950					var template = $('#cursos-por-categoria-template').clone(); 
2951					template.prop('id', 'cursos-por-categoria-'+t.categoryId); 
2952	 
2953					template.removeClass('d-none'); 
2954					 
2955					$('#cursos-por-categoria-container').append(template); 
2956
2957	 
2958				$.ajax( 
2959
2960							url : '/o/senac-content-services/category/' 
2961									+ t.categoryId, 
2962							type : 'get' 
2963						}).done(function(category) { 
2964							 
2965							var dadosCategoria = JSON.parse(category); 
2966							 
2967							//monta as divs para cada tcategoria 
2968							var templatePorCategoria = $('#cursos-por-categoria-'+dadosCategoria.categoryId); 
2969							templatePorCategoria.find('.tema-nome').text(dadosCategoria.name); 
2970							templatePorCategoria.find('.ver-todos-cursos-link').attr('data-nvl', 2); 
2971							templatePorCategoria.find('.ver-todos-cursos-link').attr('data-tema', dadosCategoria.categoryId); 
2972							templatePorCategoria.removeClass('d-none'); 
2973 
2974							cursosPorCategoriaModelo1(dadosCategoria); 
2975	 
2976				}); 
2977				 
2978			}); 
2979			 
2980			 
2981			// Esconde botao carregar mais, se  necessario 
2982			$('.section-carregar-mais').remove(); 
2983			 
2984			if (subtemasStorage.get(activeCategory.categoryId).length > limit + offset) 
2985				$('#cursos-por-categoria-container').append('<section style="padding: 30px 0; width:100%" class="section-carregar-mais"><div class="container"><a href="#a" class="ssp-section-tema__btn-ver-mais" id="carregar-mais" style="visibility:hidden"> Carregar mais unidades </a></div></section>'); 
2986			 
2987			 
2988			 
2989		}else{ 
2990			//Se nao tiver subtema, exibe o modelo 3 
2991			cursosPorCategoriaModelo3(); 
2992
2993 
2994		break; 
2995 
2996	case 2: // exibe cursos do nivel 2 
2997		limit = 2; 
2998		cursosPorCategoriaModelo2(); 
2999		break; 
3000		 
3001	case 3: 
3002		cursosPorCategoriaModelo3(); 
3003		break; 
3004
3005
3006 
3007/* 
3008 * Faz a exibicao dos cursos quando se carrega a tela ou clica em 'Todos' 
3009 */ 
3010 function cursosPorCategoriaModelo1(category) { 
3011		 
3012	 	activeModeloExibicao = 1; 
3013	  
3014		$.ajax({ 
3015			url : '/o/senac-content-services/cursosPorCategoriasComFiltrosBolsaECompra/' 
3016				+ groupId + '/'  
3017				+ filtrarInscricoesAbertas +'/' 
3018				+ filtrarBolsaEstudo 
3019				+ '/1/' 
3020				+ '0/' 
3021				+ limitCursos 
3022				+ '?' 
3023				+ 'categoryIds='+ category.categoryId + '&'  
3024				+ 'categoryIds='+ categoryIdTipoCurso+ '&' 
3025				+ 'categoryIds='+ categoryIdUnidade, 
3026			type : 'get', 
3027			beforeSend: function () { 
3028				loading('#cursos-por-categoria-'+category.categoryId+' .slider-curso'); 
3029
3030		}).done(function(cursosPorCategoria) { 
3031 
3032			enableScroll(true); 
3033			 
3034			cursosPorCategoria = JSON.parse(cursosPorCategoria); 
3035							 
3036			var totalCursos = cursosPorCategoria.total; 
3037			 
3038			//Se nao retornou cursos, deve esconder a div da categoria 
3039			if(totalCursos == 0){ 
3040				//$('#cursos-por-categoria-'+category.categoryId).remove(); 
3041				$('#cursos-por-categoria-'+category.categoryId).html(''); 
3042				 
3043				//essa classe tirar todo o padding da div, escondendo ela 
3044				$('#cursos-por-categoria-'+category.categoryId).removeClass('ssp-section'); 
3045								 
3046				if(tam <= 1024){ 
3047					var $element = document.getElementById('cursos-por-categoria-container'); 
3048					var _elementPos = $element.offsetTop + 100; 
3049					var _scrollDown = _elementPos + (filtrarInscricoesAbertas == 1 || filtrarBolsaEstudo == 1 ? 300 : 1); 
3050					window.scrollTo(window.scrollX || window.pageXOffset, _scrollDown);//carrega os cursos 
3051					setTimeout(()=> window.scrollTo(window.scrollX || window.pageXOffset, _elementPos), 500);//mostra o primeiro 
3052					 
3053				}else{ 
3054					var _scrollDown = (window.scrollY || window.pageYOffset) + (filtrarInscricoesAbertas == 1 || filtrarBolsaEstudo == 1 ? 20 : 1); 
3055					window.scrollTo(window.scrollX || window.pageXOffset, _scrollDown); 
3056
3057								 
3058				return; 
3059			}else{ 
3060			 
3061				if(!$('#cursos-por-categoria-'+category.categoryId).hasClass('ssp-section')) 
3062					$('#cursos-por-categoria-'+category.categoryId).addClass('ssp-section'); 
3063				 
3064
3065		 
3066			var articles = []; 
3067				      		 
3068	   		 $.each(cursosPorCategoria.cursos, function(k, c){ 
3069	   			articles.push(c.articleId); 
3070	   		 }); 
3071				      		  
3072	   		//Verifica a situacao dos botoes de inscricoes e bolsa 
3073			  $.ajax({ 
3074			        url :  '/o/senac-content-services/verificaBotoesInscricaoEBolsaPorUnidade/'+groupId+'/'+articles.join(',')+'/'+categoryIdUnidade, 
3075			        type : 'get' 
3076			    })  
3077			    .done(function(infoBotoes){ 
3078				    	 
3079				    	if(infoBotoes.length > 0) { 
3080				    		 
3081			    		  	infoBotoes = JSON.parse(infoBotoes); 
3082 
3083							var template = $('#cursos-por-categoria-'+category.categoryId); 
3084							 
3085							$('#cursos-por-categoria-'+category.categoryId+' .slider-curso').empty(); 
3086 
3087							$.each(cursosPorCategoria.cursos, function(k, curso) { 
3088		 
3089								var itemCurso = buildCardCurso(curso, infoBotoes, tam <=1024, urlUnidade) 
3090 
3091								template.append(itemCurso); 
3092 
3093								template.find('.slider-curso').append(itemCurso); 
3094		 
3095							}); // fim each 
3096		 
3097							 
3098							// chama o slider por categoria 
3099							if (tam >=1024){ 
3100 
3101								template.find('.slider-curso').addClass( 
3102									'slick-area slick-area--md-bleed slider-container slider-id-' 
3103											+ category.categoryId); 
3104								if(totalCursos > 11){ 
3105									template.find('.slider-curso').append('<a data-nvl="'+(activeCategoryLevel+1)+'" data-tema="'+category.categoryId+'" class="ssp-card-todos-cursos '+cardVerTodosTipoCursoClass+' card-ver-todos-cursos-link" ><p>Conferir todos <br>os <span>cursos</span></p><i class="far fa-arrow-right"></i></a>')			 
3106								} else { 
3107									$(".ver-todos-cursos-link[data-tema='"+category.categoryId+"']").addClass("ver-todos-no-click"); 
3108
3109 
3110							}else{ 
3111								template.find('.slider-curso').css({"flex-wrap":"wrap"}); 
3112								 
3113								if($('.ssp-page-busca__section-resultado__ver-todos-mobile[data-tema="'+category.categoryId+'"]').length == 0){ 
3114									 
3115									//Adicionava o botão ver todos. Possível adição do código do card novo! 
3116									if(totalCursos > 4){ 
3117										template.find('.slider-curso').append('<a data-nvl="'+(activeCategoryLevel+1)+'" data-tema="'+category.categoryId+'" class="ssp-card-todos-cursos '+cardVerTodosTipoCursoClass+' card-ver-todos-cursos-link" ><p>Conferir todos <br>os <span>cursos</span></p><i class="far fa-arrow-right"></i></a>') 
3118									} else { 
3119										$(".ver-todos-cursos-link[data-tema='"+category.categoryId+"']").addClass("ver-todos-no-click"); 
3120									}	 
3121									//template.append('<div style="text-align:center"><a href="#a" data-nvl="'+(activeCategoryLevel+1)+'" data-tema="'+category.categoryId+'" class="ssp-page-busca__section-resultado__ver-todos-mobile ver-todos-cursos-link">Todos os cursos</a></div>'); 
3122									 
3123
3124							}; 
3125 
3126 
3127							// chama o slider por categoria 
3128							if (tam >=1024){ 
3129 
3130								sliderCurso('.slider-id-' + category.categoryId); 
3131 
3132							}; 
3133				    	} //fim if botoes length 
3134				    	 
3135						 
3136			    }); // fim done 
3137			 
3138		}).fail(function(jqXHR, textStatus, msg) { 
3139			// alert(msg); 
3140		}); 
3141	 
3142		 
3143
3144 
3145//ao final de todos os ajax, se não houver curso na pag por causa dos filtros, exibimos mensagem de nenhum curso 
3146$(document).ajaxStop(function () { 
3147	if($(".slick-area__item").not('.d-none').length == 0){ 
3148		var htmlTextoSemCurso = getTextoSemCurso(filtrarBolsaEstudo,filtrarInscricoesAbertas,activeCategory.name);  
3149 
3150		$(".ssp-bolsa-formulario__card-aviso-texto").html(htmlTextoSemCurso);					 
3151		$("#filtroSemCurso").removeClass("d-none"); 
3152
3153});	 
3154 
3155/* 
3156 * Faz a exibicao dos cursos quando se clica em temas nivel 2 
3157 */ 
3158 function cursosPorCategoriaModelo2() { 
3159		activeModeloExibicao = 2; 
3160	 
3161		$("#tema-atual").html("<span>Cursos de </span>"	+ activeCategory.name); 
3162		 
3163		// Busca os filhos (3 nivel) 
3164		$.ajax({ 
3165			url : '/o/senac-unidade-services/subtemasPorTipoCursoETemaEUnidade/'+ groupId+ '/'+ activeCategory.categoryId+ '/'+ tipoCursoNome+'/'+categoryIdUnidade, 
3166			type : 'get', 
3167			data : {} 
3168			}).done(function(subtemas) { 
3169 
3170				enableScroll(true); 
3171				 
3172				subtemas = JSON.parse(subtemas); 
3173				 
3174				if(tam > 1024 && subtemas.length > 0) 
3175					var subsubtemaLista = '<hr class="separador-subtemas"/>'; 
3176				else 
3177					var subsubtemaLista = '' ;  
3178						 
3179				$.each(subtemas, function(k, v) { 
3180					subsubtemaLista += '<a href="#a" class="subtema btn-nivel-3" data-tema="' 
3181							+ v.categoryId 
3182							+ '" data-nvl="3" >' 
3183							+ v.name 
3184							+ '</a>'; 
3185				}); 
3186	 
3187				$('#filtro-temas-nivel-3').html(subsubtemaLista); 
3188				 
3189				if(subtemas.length > 0 && (tipoCursoNome == "Livre" || tipoCursoNome == "Extensão") ){  
3190					$('#filtro-temas-nivel-3').removeClass('d-none'); 
3191					//Caso nao tenha subtemas, exibe o modelo 3 
3192						 
3193				}else{ 
3194					cursosPorCategoriaModelo3(); 
3195					return; 
3196
3197					 
3198				// Exibe os cursos dos subtemas do tema clicado percorrendo a lista de 
3199				// subtemas do tema clicado 
3200				if(subtemas.length > 0){ 
3201					 
3202					$.each(subtemas.slice(offset, limit + offset), function(k, t) { 
3203						 
3204						if($('#cursos-por-categoria-'+t.categoryId).length == 0){ 
3205							var template = $('#cursos-por-categoria-template').clone(); 
3206							template.prop('id', 'cursos-por-categoria-'+t.categoryId); 
3207	 
3208							template.removeClass('d-none'); 
3209							 
3210							$('#cursos-por-categoria-container').append(template); 
3211
3212			 
3213						$.ajax( 
3214
3215									url : '/o/senac-content-services/category/' 
3216											+ t.categoryId, 
3217									type : 'get' 
3218								}).done(function(category) { 
3219									 
3220									var dadosCategoria = JSON.parse(category); 
3221									 
3222									//monta as divs para cada tcategoria 
3223									var templatePorCategoria = $('#cursos-por-categoria-'+dadosCategoria.categoryId); 
3224									templatePorCategoria.find('.tema-nome').text(dadosCategoria.name); 
3225									templatePorCategoria.find('.ver-todos-cursos-link').attr('data-nvl', 3); 
3226									templatePorCategoria.find('.ver-todos-cursos-link').attr('data-tema', dadosCategoria.categoryId); 
3227									templatePorCategoria.removeClass('d-none'); 
3228 
3229									cursosPorCategoriaModelo1(dadosCategoria); 
3230			 
3231						}); 
3232					}); 
3233					 
3234					// Esconde botao carregar mais, se  necessario 
3235					$('.section-carregar-mais').remove(); 
3236					 
3237					if (subtemas.length > limit + offset) 
3238						$('#cursos-por-categoria-container').append('<section style="padding: 30px 0; width:100%" class="section-carregar-mais"><div class="container"><a href="#a" class="ssp-section-tema__btn-ver-mais" id="carregar-mais" style="visibility:hidden"> Carregar mais unidades </a></div></section>'); 
3239					 
3240				}else{ 
3241					//Se nao tiver subtema, exibe o modelo 3 
3242					cursosPorCategoriaModelo3(); 
3243
3244					 
3245		}); 
3246		 
3247	 
3248		 
3249
3250/* 
3251 * Faz a exibicao dos cursos quando se clica em temas nivel 3 
3252 */ 
3253 function cursosPorCategoriaModelo3() { 
3254		activeModeloExibicao = 3; 
3255	     
3256		//Se já estiver carregando não deixa juntar várias chamadas 
3257		if($('#loading-todos-cursos').length > 0) return; 
3258		 
3259		//Loading 
3260		$('#curso-sem-slick').append('<div id="loading-todos-cursos" style="width:100%; text-align:center">'+ 
3261		'<div class="ssp-loader-content">'+ 
3262		'<div class="ssp-loader"></div>'+ 
3263		'<p class="ssp-loader-text">Carregando...</p>'+ 
3264		'</div>'+ 
3265		'</div>'); 
3266		 
3267		$("#tema-atual").html("<span>Cursos de </span>"	+ activeCategory.name); 
3268		 
3269		//Ativa o botao clicado 
3270		$('.btn-nivel-3').each(function(btn){ 
3271			$(this).removeClass('ativo'); 
3272			 
3273			if($(this).attr('data-tema') == activeCategory.categoryId) $(this).addClass('ativo'); 
3274		}); 
3275		 
3276		$.ajax({ 
3277			url : '/o/senac-content-services/cursosPorCategoriasComFiltrosBolsaECompra/' 
3278				+ groupId + '/'  
3279				+ filtrarInscricoesAbertas +'/' 
3280				+ filtrarBolsaEstudo 
3281				+ '/1/' 
3282				+ offsetTodosCursos +'/' 
3283				+ (limitTodosCursos + offsetTodosCursos) 
3284				+ '?' 
3285				+ 'categoryIds='+ activeCategory.categoryId + '&'  
3286				+ 'categoryIds='+ categoryIdTipoCurso+ '&' 
3287				+ 'categoryIds='+ categoryIdUnidade, 
3288			type : 'get', 
3289			data : {}, 
3290			/*beforeSend: function () { 
3291				 
3292				var totalItens = $('#curso-sem-slick .slick-area__item').length; 
3293				if(totalItens == 0) 
3294					loading('#curso-sem-slick'); 
3295			}*/ 
3296		}).done(function(cursosPorSubtema) { 
3297			 
3298			enableScroll(true); 
3299			 
3300			$('.ssp-loader-content').parent().remove(); 
3301 
3302			cursosPorSubtema = JSON.parse(cursosPorSubtema); 
3303			 
3304			var totalCursos = cursosPorSubtema.total; 
3305			 
3306			var templateContainer = $('#cursos-por-categoria-container'); 
3307 
3308			var articles = []; 
3309	      		 
3310	      	$.each(cursosPorSubtema.cursos, function(k, c){ 
3311	    		articles.push(c.articleId); 
3312	   		 }); 
3313	      		  
3314	      		//Verifica a situacao dos botoes de inscricoes e bolsa 
3315			 $.ajax({ 
3316				        url :  '/o/senac-content-services/verificaBotoesInscricaoEBolsaPorUnidade/'+groupId+'/'+articles.join(',')+'/'+categoryIdUnidade, 
3317				        type : 'get' 
3318		    }).done(function(infoBotoes){ 
3319		    	 
3320		    	templateContainer.find('#curso-sem-slick').empty(); 
3321		    	 
3322		    	if(infoBotoes.length > 0) { 
3323		    		 
3324	    		   infoBotoes = JSON.parse(infoBotoes); 
3325		 
3326 
3327					$.each(cursosPorSubtema.cursos,function(k, curso) { 
3328 
3329						var itemCurso = buildCardCurso(curso, infoBotoes, tam <=1024, urlUnidade) 
3330							 
3331						itemCurso.addClass('card-curso-nivel-2'); 
3332 
3333						// procura a div criada e adiciona os cursos 
3334						templateContainer.find('#curso-sem-slick').append(itemCurso); 
3335					}); // fim each 
3336 
3337					templateContainer.removeClass('d-none'); 
3338 
3339					var totalCursosExibicao = $('#curso-sem-slick .slick-area__item').length; 
3340						 
3341					// Esconde botao carregar mais, se  necessario 
3342					$('.section-carregar-mais').remove(); 
3343						 
3344					if (totalCursosExibicao < totalCursos)  
3345						$('#cursos-por-subtema-container').append('<section style="padding: 30px 0; width:100%" class="section-carregar-mais"><div class="container"><a href="#a" class="ssp-section-tema__btn-ver-mais" id="carregar-mais" style="visibility:hidden"> Carregar mais unidades </a></div></section>'); 
3346
3347 
3348			});  
3349 
3350		}).fail(function(jqXHR, textStatus, msg) { 
3351			// alert(msg); 
3352		}); 
3353	 
3354
3355 
3356/* 
3357 * Faz a exibicao dos cursos quando se carrega a tela ou clica em 'Todos' 
3358 */ 
3359function displayCursosRecentes() { 
3360 
3361	// Verifica se existem cursos no cookie 
3362	if (getCookie(cookieName) == null || getCookie(cookieName) == null) 
3363		return; 
3364	 
3365	var cursosLivresRecentes = JSON.parse(getCookie(cookieName)).join(','); 
3366	 
3367	if(cursosLivresRecentes.length) 
3368		$('#section-buscados-recentes').removeClass('d-none'); 
3369 
3370
3371			.ajax( 
3372
3373						url : '/o/senac-content-services/cursosInfo/' + groupId 
3374								+ '/' + cursosLivresRecentes+'/0/' 
3375								+ limitCursos, 
3376						type : 'get' 
3377					}) 
3378			.done( 
3379					function(cursosRecentes) { 
3380 
3381						cursosRecentes = JSON.parse(cursosRecentes); 
3382 
3383						var template = $('#cursos-recentes-template'); 
3384 
3385						$.each(cursosRecentes, function(k, curso) { 
3386 
3387							var itemCurso = buildCardCurso(curso, undefined, tam <=1024, urlUnidade) 
3388 
3389							template.find('.slider-curso').append(itemCurso); 
3390						}); 
3391 
3392						template 
3393								.find('.slider-curso') 
3394								.addClass( 
3395										'slick-area slick-area--md-bleed slider-container slider-id-recentes'); 
3396 
3397						 
3398						// section de buscado recentes* 
3399 
3400						$('#template').removeClass('d-none'); 
3401						template.removeClass('d-none'); 
3402						// div de recentes* 
3403 
3404						sliderCurso('.slider-id-recentes'); 
3405 
3406					}).fail(function(jqXHR, textStatus, msg) { 
3407				// alert(msg); 
3408			}); 
3409 
3410
3411 
3412/* 
3413 * Monta a lista de temas de curso livre no header da pagina 
3414 */ 
3415 
3416 function carregaTemasNivelDireto(nivel) { 
3417		//buscando o categoryId da unidade 
3418		$.ajax({ 
3419			url : '/o/senac-unidade-services/categoriaPorFriendlyURL/'+urlUnidade+"/"+0, 
3420			type : 'get', 
3421			dataType: 'json' 
3422		}) 
3423		.done(function(unidadesCategory) { 
3424			 
3425			categoryIdUnidade = unidadesCategory[0].categoryId; 
3426			 
3427			//buscando os temas que os cursos da unidade tem com este tipo de curso 
3428			$.ajax({ 
3429				url : '/o/senac-unidade-services/temasPorTipoCursoEUnidade/'+groupId+'/'+tipoCursoNome+'/'+categoryIdUnidade, 
3430				type : 'get', 
3431				dataType: 'json' 
3432			}) 
3433			.done(function(temasLista) { 
3434					var temasObj = $('#temas'); 
3435									 
3436					$.each(temasLista,function(k, tema) { 
3437						const icon = (categorias.filter(cat => cat.categoryId == tema.categoryId)[0] || {properties: {}}).properties.icon 
3438						temasObj.append('<div class="ssp-section-tema__container-menu-item mega-menu"><a href="#a" class="tema" data-nvl="1" data-tema="'+ tema.categoryId+ '">'+ '<i class="' + icon + '"></i>'+ tema.name+ '</a></div>'); 
3439		 
3440						// Armazena os subtemas deste tema 
3441						$.ajax({ 
3442							url : '/o/senac-unidade-services/subtemasPorTipoCursoETemaEUnidade/'+ groupId+ '/'+ tema.categoryId+ '/'+ tipoCursoNome+'/'+categoryIdUnidade, 
3443							type : 'get', 
3444						}) 
3445						.done(function(subtemas) { 
3446							 
3447							 
3448							subtemasStorage.set(tema.categoryId,JSON.parse(subtemas)); 
3449							 
3450							if(nivel == 1 && tema.categoryId == categoryIdTemaNv1){ 
3451								var clicou = 0; 
3452								$('.tema[data-tema="'+categoryIdTemaNv1+'"]').not('.slick-cloned').each(function(){ 
3453									 
3454									if(!clicou){ 
3455										var botaoTemaTargetNv1 = $(this); 
3456										botaoTemaTargetNv1.trigger('click'); 
3457										 
3458										clicou = 1; 
3459										acessoDireto = 0; 
3460
3461										 
3462								}); 
3463
3464							 
3465							if(nivel == 2){ 
3466								 
3467								if(tipoCursoNome == "Livre" || tipoCursoNome == "Extensão"){ 
3468									subTemasJson = JSON.parse(subtemas); 
3469									if(subTemasJson.length > 0){ 
3470									 
3471										$.each(subTemasJson, function(i, each){ 
3472											if(each.categoryId == categoryIdTemaNv2){ 
3473													 
3474													var botaoTema = $('.tema[data-tema="'+categoryIdTemaNv1+'"]'); 
3475													botaoTema.addClass('tema-ativo'); 
3476													 
3477													tam = $(window).width(); 
3478													 
3479													if (tam <=1024){ 
3480														$("#visualizar-mais, .visualizar-mais-seta").addClass('d-none'); 
3481														$('#temas').addClass('d-none'); 
3482														// adiciona o item selecionado nos filtros 
3483														$("#filtro-ativo-nivel-1").prepend(botaoTema); 
3484
3485													 
3486													$.ajax({ 
3487														url : '/o/senac-content-services/category/' 
3488																+ categoryIdTemaNv1, 
3489														type : 'get' 
3490													}).done(function(category) { 
3491														 
3492														activeCategory = JSON.parse(category); 
3493														displaySubTemasLista(); 
3494														 
3495														$.ajax({ 
3496															url : '/o/senac-content-services/category/' 
3497																	+ categoryIdTemaNv2, 
3498															type : 'get' 
3499														}).done(function(category2) { 
3500															 
3501															activeCategory = JSON.parse(category2); 
3502															var botaoTemaTargetNv2 = $('.subtema[data-tema="'+categoryIdTemaNv2+'"]'); 
3503															botaoTemaTargetNv2.trigger('click'); 
3504															acessoDireto = 0; 
3505														}); 
3506														 
3507													}); 
3508													 
3509
3510													 
3511											}); 
3512
3513
3514
3515							 
3516							 
3517							 
3518						}); 
3519						 
3520					}); // fim each 
3521												 
3522					 
3523					if(nivel == 3){ 
3524						if(tipoCursoNome == "Livre" || tipoCursoNome == "Extensão"){ 
3525							 
3526							var botaoTema = $('.tema[data-tema="'+categoryIdTemaNv1+'"]'); 
3527							botaoTema.addClass('tema-ativo'); 
3528							 
3529							tam = $(window).width(); 
3530							 
3531							if (tam <=1024){ 
3532								$("#visualizar-mais, .visualizar-mais-seta").addClass('d-none'); 
3533								$('#temas').addClass('d-none'); 
3534								// adiciona o item selecionado nos filtros 
3535								$("#filtro-ativo-nivel-1").prepend(botaoTema); 
3536
3537							 
3538							$.ajax({ 
3539								url : '/o/senac-content-services/category/' 
3540										+ categoryIdTemaNv1, 
3541								type : 'get' 
3542							}).done(function(category) { 
3543 
3544								 
3545								activeCategory = JSON.parse(category); 
3546								displaySubTemasLista(); 
3547								var botaoSubtema = $('.subtema[data-tema="'+categoryIdTemaNv2+'"]'); 
3548								botaoSubtema.addClass('subtema-ativo'); 
3549								 
3550								if (tam <=1024){ 
3551									// adiciona o item selecionado nos filtros 
3552									$("#filtro-ativo-nivel-2").prepend(botaoSubtema); 
3553
3554 
3555								$.ajax({ 
3556									url : '/o/senac-content-services/category/' 
3557											+ categoryIdTemaNv2, 
3558									type : 'get' 
3559								}).done(function(category2) { 
3560									 
3561									activeCategory = JSON.parse(category2); 
3562 
3563									// Busca os filhos (3 nivel) 
3564									$.ajax({ 
3565										url : '/o/senac-unidade-services/subtemasPorTipoCursoETemaEUnidade/'+ groupId+ '/'+ activeCategory.categoryId+ '/'+ tipoCursoNome+'/'+categoryIdUnidade, 
3566										type : 'get', 
3567										data : {} 
3568										}).done(function(subtemas) { 
3569											subtemas = JSON.parse(subtemas); 
3570											 
3571											if(tam > 1024 && subtemas.length > 0) 
3572												var subsubtemaLista = '<hr class="separador-subtemas"/>'; 
3573											else 
3574												var subsubtemaLista = ''; 
3575											 
3576											$.each(subtemas, function(k, v) { 
3577												subsubtemaLista += '<a href="#a" class="subtema btn-nivel-3" data-tema="' 
3578														+ v.categoryId 
3579														+ '" data-nvl="3" >' 
3580														+ v.name 
3581														+ '</a>'; 
3582														 
3583												if(v.categoryId == categoryIdTemaNv3) 
3584													activeCategory = v; 
3585													 
3586											}); 
3587 
3588											$('#filtro-temas-nivel-3').html(subsubtemaLista); 
3589											$('#filtro-temas-nivel-3').removeClass('d-none'); 
3590											 
3591											var botaoTemaTargetNv3 = $('.subtema[data-tema="'+categoryIdTemaNv3+'"]'); 
3592											botaoTemaTargetNv3.trigger('click'); 
3593											acessoDireto = 0; 
3594										});	 
3595									 
3596								}); 
3597								 
3598							}); 
3599
3600
3601					 
3602					temas = temasLista; 
3603			 
3604					 
3605					//displayCursosPorTema(); 
3606 
3607					// Verificar o tamanho da tela e chama da função para desktop e mobile 
3608					var tam = $(window).width(); 
3609					 
3610					//$('.todos').addClass('ativo'); 
3611 
3612					if (tam <=1024){ 
3613 
3614						exibeTemasMobile() 
3615											 
3616
3617 
3618					// // Adiciona a classe do slider no elemento 
3619					// $('#temas').addClass("tema-slick-area tema-slick-area--md-bleed slider-container"); 
3620					// // e faz a chamada da função 
3621					// sliderTemaBtn(); 
3622 
3623					// verifica Device e tira o slider 
3624					 
3625					 
3626 
3627				}).fail(function(jqXHR, textStatus, msg) { 
3628					// alert(msg); 
3629				}); 
3630		 
3631					 
3632		 
3633		}); // fim done 1o ajax 
3634		 
3635		 
3636
3637 
3638function carregaTemas() {	 
3639	//buscando o categoryId da unidade 
3640	$.ajax({ 
3641		url : '/o/senac-unidade-services/categoriaPorFriendlyURL/'+urlUnidade+"/"+0, 
3642		type : 'get', 
3643		dataType: 'json' 
3644	}) 
3645	.done(function(unidadesCategory) { 
3646		 
3647		categoryIdUnidade = unidadesCategory[0].categoryId; 
3648		 
3649		//buscando os temas que os cursos da unidade tem com este tipo de curso 
3650		$.ajax({ 
3651			url : '/o/senac-unidade-services/temasPorTipoCursoEUnidade/'+groupId+'/'+tipoCursoNome+'/'+categoryIdUnidade, 
3652			type : 'get', 
3653			dataType: 'json' 
3654		}) 
3655		.done(function(temasLista) { 
3656				var temasObj = $('#temas'); 
3657								 
3658				$.each(temasLista,function(k, tema) { 
3659					const icon = (categorias.filter(cat => cat.categoryId == tema.categoryId)[0] || {properties: {}}).properties.icon 
3660					temasObj.append('<div class="ssp-section-tema__container-menu-item mega-menu"><a href="#a" class="tema" data-nvl="1" data-tema="'+ tema.categoryId+ '">'+ '<i class="' + icon + '"></i>'+ tema.name+ '</a></div>'); 
3661	 
3662 
3663					// Armazena os subtemas deste tema 
3664					$.ajax({ 
3665						url : '/o/senac-unidade-services/subtemasPorTipoCursoETemaEUnidade/'+ groupId+ '/'+ tema.categoryId+ '/'+ tipoCursoNome+'/'+categoryIdUnidade, 
3666						type : 'get', 
3667					}) 
3668					.done(function(subtemas) { 
3669						subtemasStorage.set(tema.categoryId,JSON.parse(subtemas)); 
3670 
3671					}); 
3672					 
3673				}); // fim each 
3674 
3675				temas = temasLista; 
3676		 
3677				displayCursosPorTema(); 
3678 
3679				// Verificar o tamanho da tela e chama da função para desktop e mobile 
3680				var tam = $(window).width(); 
3681				 
3682				$('.todos').addClass('ativo'); 
3683 
3684				if (tam <=1024){ 
3685 
3686					exibeTemasMobile() 
3687					 
3688
3689 
3690				// // Adiciona a classe do slider no elemento 
3691				// $('#temas').addClass("tema-slick-area tema-slick-area--md-bleed slider-container"); 
3692				// // e faz a chamada da função 
3693				// sliderTemaBtn(); 
3694 
3695				// verifica Device e tira o slider 
3696				 
3697				 
3698 
3699			}).fail(function(jqXHR, textStatus, msg) { 
3700				// alert(msg); 
3701			}); 
3702	 
3703	 
3704	 
3705	}); // fim done 1o ajax 
3706	 
3707	 
3708
3709 
3710/* 
3711 * Exibe a lista de subtemas no click do tema 
3712 */ 
3713function displaySubTemasLista(categoryId) { 
3714	 
3715	$('#filtro-temas-nivel-2').empty(); 
3716	$('#filtro-temas-nivel-2').removeClass('d-none'); 
3717	 
3718	$.each(subtemasStorage.get(activeCategory.categoryId), function(k, t) { 
3719		$('#filtro-temas-nivel-2').append('<a href="#a" class="subtema btn-nivel-3" data-tema="' 
3720				+ t.categoryId 
3721				+ '" data-nvl="2" >' 
3722				+ t.name 
3723				+ '</a>'); 
3724	}); 
3725		 
3726	// $('#subtemas-lista').empty(); 
3727 
3728	// var subtemaLista = '<div class="subtema-content">'; 
3729 
3730	// $.each(subtemasStorage.get(categoryId), function(k, s) { 
3731 
3732	// 	// controle feito pela classe tema 
3733	// 	subtemaLista += '<a href="#a" class="subtema"  data-tema="' 
3734	// 			+ s.categoryId + '" data-nvl="2">' + s.name + '</a>'; 
3735 
3736	// }); 
3737 
3738	// subtemaLista += '</div>'; 
3739 
3740	// $('#subtemas-lista').append(subtemaLista); 
3741
3742 
3743//Carregar mais 
3744 $(window).scroll(function() { 
3745 	 
3746 	var element = document.querySelector('#carregar-mais'); 
3747 	 
3748 	if(element != null && !carregandoMais){ 
3749 		$("#filtroSemCurso").addClass("d-none"); 
3750 		var position = element.getBoundingClientRect(); 
3751 	 
3752 		// carregar maios 
3753 		if(position.top >= 0 && position.bottom <= window.innerHeight) { 
3754 			enableScroll(false); 
3755 			var qtCardsSubTema = $('#cursos-por-subtema-container .ssp-card-curso').not('.d-none').length; 
3756 			if(qtCardsSubTema > 0){ 
3757 				offsetTodosCursos = qtCardsSubTema; 
3758 				$('.section-carregar-mais').remove(); 
3759 			}else{ 
3760 				offset = $('.cursos-por-categoria').not('.d-none').length; 
3761
3762 			displayCursosPorTema();			 
3763 			 
3764
3765
3766 	 
3767 }); 
3768 
3769 function enableScroll(enable) { 
3770     if(enable === false) document.body.classList.add("stop-scrolling") 
3771     else document.body.classList.remove("stop-scrolling"); 
3772     carregandoMais = !enable; 
3773
3774 
3775</script>