Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> groupService.fetchFriendlyURLGroup(companyId, "/"+friendlyUrlUnidade)  [in template "20102#20129#34563606" at line 29, column 21]

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