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