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