Publicador de Conteúdos e Mídias

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> isEMED  [in template "20102#20129#438394" at line 3823, column 15]

----
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: #if !isEMED  [in template "20102#20129#438394" at line 3823, column 9]
----
1<#assign 
2  isEditMode = themeDisplay.getURLCurrent()?contains('p_l_mode=edit') 
3/> 
4<!-- Essa verificação é necessária para que não encaminhe erros de freemarker ao KIBANA ao acessar a página de edição dos componentes --> 
5<#if isEditMode > 
6  <h3>Modo de edição identificado</h3> 
7<#else> 
8 
9<style> 
10 
11  .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card { 
12      background: white; 
13      width: 100%; 
14      padding: 32px 52px; 
15      box-shadow: 2px 5px 12px #00000040; 
16      border-radius: 20px; 
17      display: flex; 
18      flex-wrap: nowrap; 
19      justify-content: space-between; 
20      align-items: center; 
21
22 
23  .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-icone { 
24      max-width: 100%; 
25      height: 72px; 
26      margin-bottom: 10px; 
27
28 
29  .ssp:not(.liferay-instance) .ssp-como-me-matricular__section { 
30      background: #472247; 
31      border-top: 18px solid #792F7A; 
32      text-align: center; 
33      padding-bottom: 60px; 
34
35 
36  .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white::after { 
37       
38      
39      display: none; 
40      
41       
42
43   
44  .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white { 
45      color: white; 
46      font-size: 44px !important; 
47      margin-bottom: 32px !important; 
48      text-align:unset; 
49
50   
51  .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-title { 
52      font-size: 28px; 
53      color: #B767C2; 
54      font-weight: bold; 
55      line-height: 28px; 
56      margin: 0; 
57      margin-bottom:.5rem; 
58
59   
60 
61.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-credit-card::after { 
62     
63  font-size: 18px; 
64     
65
66 
67.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-boleto::after { 
68    
69  font-size: 18px; 
70   
71
72 
73.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__header { 
74  align-items:center; 
75  color:#454F63; 
76
77 
78.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__btn-close::after { 
79    font-family: "Font Awesome 6 Pro"; 
80    font-weight: normal; 
81    content: "\f00d"; 
82    font-style: normal; 
83    font-size:30px; 
84    cursor: pointer; 
85
86 
87.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__body { 
88     
89  padding:0 15px; 
90
91 
92.ssp-card-modal-forma-pagamento__tipos-content p { 
93 
94  color: #454F63!important; 
95  font-size: 14px!important; 
96
97 
98.ssp-card-modal-forma-pagamento__tipos-content strong { 
99 
100  font-weight: bold!important; 
101
102 
103.txt-desconto-oito{ 
104 
105  font-weight: 600!important; 
106  border: 1px solid #f2f2f2; 
107  border-right: 0; 
108  border-left: 0; 
109  padding: 10px 0; 
110
111 
112.next-mobile{ 
113    color: white; 
114    display: flex; 
115    align-items: center; 
116    text-decoration: none!important; 
117
118 
119.next-mobile:hover{ 
120    color: white; 
121    font-weight: normal!important; 
122
123 
124.next-mobile::before{ 
125    font-family: "Montserrat", sans-serif; 
126    content: "Próxima"; 
127    font-size: 14px; 
128    font-weight: 600; 
129    display: block; 
130    margin-right: 9px; 
131    color: white; 
132
133 
134.next-mobile.slick-arrow.slick-disabled{ 
135    opacity: 0.4; 
136
137 
138 
139/* Prev Mobile button */ 
140 
141 
142.prev-mobile{ 
143    color: white; 
144    display: flex; 
145    align-items: center; 
146    text-decoration: none; 
147    text-decoration: none!important; 
148
149 
150.prev-mobile:hover{ 
151    color: white; 
152    font-weight: normal!important; 
153
154 
155.prev-mobile::after{ 
156    font-family: "Montserrat", sans-serif; 
157    content: "Anterior"; 
158    font-weight: 600; 
159    font-size: 14px; 
160    display: block; 
161    margin-left: 9px; 
162    color: white; 
163
164 
165.prev-mobile.slick-arrow.slick-disabled{ 
166    opacity: 0.4; 
167
168 
169 
170.icon-ao-vivo{ 
171  font-size: 15px!important; 
172  margin: 0 3px; 
173
174 
175.ssp-card-detalhe-curso__tag-ao-vivo{ 
176  font-family: "Montserrat"; 
177  font-size: 19px; 
178  letter-spacing: 0px; 
179  color: #F77A3B; 
180
181 
182.selecione-unidade-title-custom{ 
183     
184  width:100%!important; 
185 
186
187 
188.recalcular{ 
189  background:#F6921E!important; 
190  border: solid 1px #F6921E!important; 
191
192 
193.ssp-card-detalhe-curso__description{ 
194 
195  font-family: "Montserrat"; 
196  max-width: 800px; 
197  font-size: 20px; 
198  font-weight: 500; 
199  font-stretch: normal; 
200  font-style: normal; 
201  line-height: 1.23; 
202  letter-spacing: normal; 
203  margin: 10px 0; 
204  text-align: left; 
205  color: #4f596f; 
206 
207
208 
209/* nova formatação para registro de interesse */ 
210.ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content { 
211    display: flex; 
212    flex-wrap: nowrap; 
213    justify-content: center; 
214    align-items: center; 
215    padding: 10px 0; 
216
217 
218/* Novas tags para formato de curso */ 
219 
220.ssp-card-detalhe-curso__tag-formato{ 
221   
222  font-size:18px; 
223  font-weight:600; 
224   
225
226 
227.icon-formato{ 
228  margin-right:7px; 
229
230 
231.online-aovivo{ 
232  position:relative; 
233   
234
235 
236.icon-small-wifi { 
237    font-size: 13px; 
238    position: absolute; 
239    left: -12px; 
240    top: -5px; 
241
242 
243.ssp-desconto-2022 .modal-extensao_txteconomiza { 
244  font-size: 14px !important; 
245  font-weight: 100 !important; 
246
247.ssp-desconto-2022 .ssp-card-oferta-curso__desconto-content .ssp-card-oferta-curso__valor-desconto { 
248  font-weight: 100 !important; 
249
250.ssp-desconto-2022 .modal-extensao-btn-conheca { 
251  border: 1px solid #474F61 !important; 
252  border-radius: 4px; 
253  color: #474F61 !important; 
254  font-size: 15px; 
255  height: 50px; 
256  margin-left: 0; 
257  display: flex; 
258  align-items: center; 
259  justify-content: center; 
260
261 
262.ssp-card-modal-forma-pagamento.ssp-desconto-2022 { 
263  color: #454F63; 
264
265.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 { 
266  font-size: 22px !important; 
267
268.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 span { 
269  font-size: 13px !important; 
270
271.ssp-desconto-2022 span { 
272  padding: 0 !important; 
273
274 
275.ssp:not(.liferay-instance) .ssp-card-registro-interesse__select { 
276  appearance: none !important; 
277  -webkit-appearance: none !important; 
278  -moz-appearance: none !important; 
279 
280  background-size: 25px 25px !important; 
281  background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBQcm8gNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik0xODcuOCAyNjQuNUw0MSA0MTIuNWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDQuMiAzOTIuN2MtNC43LTQuNy00LjctMTIuMyAwLTE3TDEyMi43IDI1NiA0LjIgMTM2LjNjLTQuNy00LjctNC43LTEyLjMgMC0xN0wyNCA5OS41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwxNDYuOCAxNDhjNC43IDQuNyA0LjcgMTIuMyAwIDE3eiIvPjwvc3ZnPg==); 
282  background-repeat: no-repeat !important; 
283  background-position-x: 99% !important; 
284  background-position-y: 50% !important; 
285
286 
287@media only screen and (max-width: 768px){ 
288 
289  .ssp-card-detalhe-curso__tag-ao-vivo{ 
290    font-size: 14px; 
291    display: none; 
292
293  .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content { 
294     
295    flex-wrap: wrap!important; 
296     
297
298.ssp-card-modal-forma-pagamento__tipos-content p { 
299   
300  font-size: 12px!important; 
301
302     
303  
304  .ssp:not(.liferay-instance) .ssp-section-selecione-unidade { 
305      padding: 30px 0!important; 
306      padding-bottom: 30px !important; 
307      background-color: #2a2e43; 
308
309   
310  .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__title { 
311      padding-bottom: 1.25rem !important; 
312
313 
314  .selecione-unidade-title-custom{ 
315    width:100%!important; 
316 
317  }  
318   
319  .ssp-card-detalhe-curso__description{ 
320    width: 100%; 
321    font-size: 15px; 
322 
323
324  .ssp-como-me-matricular__passo-passo-card {     
325    padding: 30px 24px!important; 
326     
327
328 
329  .emed-select-group { 
330        box-shadow: none!important; 
331        border: none !important; 
332        border-bottom: 1px solid #6E6E6E!important; 
333        border-radius: 0 !important; 
334        padding: 0 !important; 
335        margin: 1rem 0 !important; 
336
337 
338    .emed .ssp-card-registro-interesse__title-modal{ 
339      font-size: 20px!important; 
340
341    .emed .ssp-card-registro-interesse__title-section-itens { 
342      font-size: 15px!important; 
343      margin-top: 0px!important; 
344      margin-bottom: 0px!important; 
345      color: #2a2e43; 
346
347    .ssp-card-registro-interesse.emed [type="checkbox"] { 
348        transform: scale(0.6); 
349        margin-left: 2px; 
350
351 
352    .ssp-card-registro-interesse.emed label { 
353      margin-left: 0px; 
354      margin-right: 3px; 
355
356
357 
358.ssp-card-oferta-curso__local-realizacao-content__title { 
359  font-family: "Open Sans", sans-serif; 
360    font-size: 10pt; 
361    font-weight: normal; 
362    color: #00488c; 
363    font-weight: bold; 
364    text-decoration: none!important; 
365    padding-left: 10px; 
366
367 
368 @media screen and (min-width: 767px){ 
369   
370  .ssp-modal-local-realizacao{ 
371      width: 480px!important; 
372
373   .ssp-card-modal-forma-pagamento__header {     
374    margin-bottom: 20px; 
375
376    
377   .ssp-modal-local-realizacao__title{ 
378    color:#01488C !important; 
379    text-align: center!important; 
380        margin-left: -23px!important; 
381
382   
383  .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title { 
384      font-size: 14pt; 
385
386  .ssp:not(.liferay-instance) [data-info="data-para-matricula"] { 
387    font-size: 14px !important; 
388    text-align: left;    
389
390  .ssp-modal-emed-txt-desconto-oito { 
391    padding: 10px 0 0px!important; 
392
393  .ssp:not(.liferay-instance) .ssp-modal-emed-info-valor-matricula { 
394    color: #4F596F; 
395    font-size: 15px!important; 
396    text-align: center; 
397    font-weight: 500!important; 
398
399
400  
401@media screen and (max-width: 767px){ 
402  .ssp:not(.liferay-instance) .ssp-modal-local-realizacao { 
403      width: 347px; 
404      padding: 22px; 
405
406  .ssp-modal {     
407    padding-top: 72px!important; 
408  }   
409  .ssp-card-modal-forma-pagamento { 
410    max-width: 335px!important; 
411
412  .ssp-card-modal-forma-pagamento__body { 
413    padding: 0px!important; 
414
415  .ssp-modal-emed-txt-desconto-oito { 
416    font-size: 12px !important; 
417
418  .ssp-card-modal-forma-pagamento__header { 
419    margin-bottom: 20px!important; 
420
421  .txt-desconto-oito i { 
422    font-size: 12px!important; 
423    padding-top: 3px; 
424
425  .txt-pague-vista { 
426    font-size: 12px!important; 
427
428  .txt-ganhe-mais { 
429    font-size: 12px!important; 
430
431  .ssp-modal-emed-info-valor-matricula { 
432    color: #2A2E43!important; 
433    font-size: 12px!important; 
434    font-weight: 500!important; 
435  }   
436  .ssp:not(.liferay-instance) [data-info="data-para-matricula"] { 
437    font-size: 12px !important; 
438    line-height: 1.5; 
439    text-align: left; 
440
441   
442  .ssp-desconto-2022 .txt-desconto-oito { 
443    font-size: 14px !important; 
444
445
446 
447@media screen and (max-width: 767px){ 
448  .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title { 
449      font-size: 16pt; 
450
451
452 
453.container-local-realizacao{ 
454  padding: 6px; 
455    border: 0.5pt solid #cdd0d8; 
456    border-radius: 5px; 
457    width: 260px; 
458    margin: 10px auto; 
459    box-shadow: 1px 1px 1px #0000000F; 
460
461 
462.idioma-online{ 
463  border:0!important; 
464  box-shadow:none!important; 
465
466 
467.btn-idiomas__aula-online .fa-wifi{ 
468  margin-right: 7px 
469
470 
471.ssp-modal-local-realizacao__title{ 
472  color:#01488C !important; 
473  text-align: center!important; 
474
475 
476h6.ssp-modal-local-realizacao__title::after { 
477    content: ""; 
478    display: block; 
479    width: 20%; 
480    padding-top: 10px; 
481    border-bottom: 1px solid #01488C; 
482    transition: .5s; 
483    margin:auto; 
484
485 
486.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-wifi::after { 
487  font-family: "Font Awesome 5 Free"; 
488    content: '\f1eb'; 
489    font-weight: 600; 
490    color: #00488c; 
491    font-size: 8px; 
492    font-style: normal; 
493    margin-left: 2px; 
494
495 
496.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-chalkboard-teacher::after { 
497    font-family: "Font Awesome 5 Free"; 
498    content: '\f51c'; 
499    font-weight: 600; 
500    color: #00488c; 
501    font-size: 13px; 
502    font-style: normal; 
503
504 
505.ssp-card-oferta-curso__local-realizacao-content__icon-wifi{ 
506    display: flex; 
507    margin-top: 0px; 
508    margin-bottom: -10px; 
509
510 
511.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-wifi::after { 
512  font-family: "Font Awesome 5 Free"; 
513    content: '\f1eb'; 
514    font-weight: 600; 
515    color: #00488c; 
516    font-size: 9pt; 
517    font-style: normal; 
518    margin-right: 10px; 
519
520 
521.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-chalkboard-teacher::after { 
522    font-family: "Font Awesome 5 Free"; 
523    content: '\f51c'; 
524    font-weight: 600; 
525    color: #00488c; 
526    font-size: 16pt; 
527    font-style: normal; 
528    margin-left: -16px; 
529
530 
531.ssp-modal__local-realizacao-content__icon-wifi{ 
532    display: flex; 
533    margin-right: 2px 
534
535 
536.ssp-modal-local-realizacao__texto{ 
537  text-align:center!important; 
538
539 
540.texto-modal-emed{ 
541	text-align:left; 
542
543 
544.nextPrevOpacity{ 
545  opacity: 0.3; 
546
547 
548   
549   .modal-extensao { 
550              display: block; 
551              position: fixed; 
552              z-index: 2000; 
553              padding-top: 100px; 
554              left: 0; 
555              top: 0; 
556              width: 100%; 
557              height: 100%; 
558              overflow: auto; 
559              background-color: black; 
560              background-color: rgba(0, 0, 0, 0.6); 
561              font-family: Montserrat; 
562
563          .modal-extensao_content { 
564              max-width: 700px; 
565              width: 100%; 
566              background: white; 
567              border-radius: 12px; 
568              padding: 30px 60px; 
569              position: relative; 
570              text-align: center; 
571              margin: auto; 
572              -webkit-animation-name: animatetop; 
573              -webkit-animation-duration: 0.4s; 
574              animation-name: animatetop; 
575              animation-duration: 0.4s; 
576          }     
577          .modal-extensao-condicoes__title { 
578              color: #000!important; 
579              text-transform: uppercase!important; 
580              font-size: 18px!important; 
581   
582
583          .modal-extensao-condicoes__subtitle { 
584              color: #000!important;             
585              font-size: 18px!important; 
586              margin-bottom: 0px!important; 
587   
588
589          .modal-extensao__btn { 
590              background-color: #5ACC75!important; 
591              font-size: 14px; 
592              float: right; 
593              color: #ffffff; 
594              min-width: 165px; 
595
596          .modal-extensao__btn:hover { 
597              background-color: #3fb25c!important; 
598              border-color: transparent; 
599              color: #ffffff; 
600          }     
601          .modal-extensao_subtitle { 
602              font-size: 13.7px!important; 
603              color: #2A2E43!important; 
604              font-family: Montserrat, semi-bold!important; 
605              font-weight: 600!important; 
606
607          .modal-extensao_subtitle::after { 
608              content: " "; 
609              display: block; 
610              width: 126px; 
611              height: 2px; 
612              background: #707070; 
613              margin: 0 auto; 
614              margin-top: 5px;  
615
616          .modal-extensao_preco { 
617              color: #454F63; 
618              font-size: 25px; 
619              font-family: Montserrat;             
620              font-weight: bold; 
621
622          .modal-extensao_ctboleto { 
623              width: 50%; 
624              float: left; 
625              border-color: #D7D7DB; 
626              border-style: solid; 
627              border-width: 1px; 
628              border-left: none; 
629              font-size: 21px; 
630              color: #454F63 
631                               
632
633          .modal-extensao_ctcard { 
634              width: 50%; 
635              float: left; 
636              border-color: #D7D7DB; 
637              border-style: solid; 
638              border-width: 1px; 
639              border-right: none;  
640              border-left: none; 
641              font-size: 21px;   
642              color: #454F63; 
643          }  
644          
645          .modal-extensao_txtPag { 
646              color:#2A2E43;   
647              font-size: 9px;  
648              font-family: Montserrat; 
649              font-weight: 600; 
650              display: block; 
651
652          .modal-extensao_txteconomiza { 
653              display: block; 
654              font-size: 12px; 
655
656          .modal-extensao_txtverde { 
657              color: #5ACC75; 
658
659          .modal-extensao_txtParcela { 
660              color:#2A2E43;   
661              font-size: 12px;  
662              font-family: Montserrat; 
663              font-weight: normal; 
664              display: block; 
665
666          .modal-extensao_txtporcent{ 
667              font-size: 9px; 
668              color: #5ACC75; 
669              font-weight: 600; 
670
671          .modal-extensao-btn-conheca { 
672              color: #2967F4 !important; 
673              background-color: transparent; 
674              border-color: #2967F4 !important; 
675              box-shadow: none !important; 
676              font-size: 14px !important; 
677              margin-left: 10px; 
678              transition: 0.3s; 
679              float: left; 
680
681           .modal-extensao-btn-conferir { 
682              color: #2967F4 !important; 
683              background-color: transparent; 
684              border-color: #2967F4 !important; 
685              box-shadow: none !important; 
686              font-size: 14px !important; 
687              margin-left: 10px; 
688              transition: 0.3s; 
689              min-width: 330px; 
690              min-height: 50px;             
691
692            .modal-extensao-btn-conferir:hover { 
693              color: #ffffff!important; 
694
695             
696           .modal-extensao-btn-conheca:hover, .modal-extensao-btn-conheca:focus { 
697              color: #ffffff!important; 
698           }  
699           .modal-extensao-btn-aluno-sim-nao { 
700              color: #000000; 
701              background-color: transparent; 
702              border-color: #000000 !important; 
703              box-shadow: none !important; 
704              font-size: 14px !important; 
705              margin-left: 10px; 
706              transition: 0.3s;  
707              min-width: 95px;            
708
709           .modal-extensao-btn-aluno-sim-ativo { 
710              color: #ffffff!important; 
711              background-color: #3969EB!important; 
712              border-color: #3969EB !important; 
713           }  
714           .modal-extensao-btn-aluno-sim-nao:hover { 
715              background-color: transparent; 
716              border-color: #3969EB !important; 
717              color: #3969EB!important;         }    
718           .modal-extensao-voltar-icon,.modal-extensao-fechar { 
719              font-size: 13px; 
720              position: absolute; 
721              top: 30px; 
722              right: 20px; 
723              cursor: pointer; 
724              color: #000; 
725
726  
727           .modal-extensao-voltar-txticon { 
728              color: #000; 
729              font-size: 9px; 
730              font-family: Montserrat; 
731              font-weight: 600; 
732              padding-left: 5px; 
733
734           .modal-extensao-ico-check { 
735              color: #5ACC75; 
736              font-size: 65px; 
737
738           .modal-extensao-aluno_txtcontent { 
739              font-size: 18px!important; 
740              color: #000; 
741
742           .modal-extensao-aluno__btn { 
743              background-color: #5ACC75!important; 
744              font-size: 14px;             
745              color: #ffffff; 
746              min-width: 330px; 
747              text-transform: uppercase; 
748              min-height: 50px; 
749           }  
750           .modal-extensao-aluno__btn:hover { 
751              color: #fff; 
752              background-color: #3fb25c!important; 
753              border-color: transparent; 
754              color: #ffffff;     
755
756           .modal-extensao-ico-percent { 
757              background-color: blue; 
758              color: #fff; 
759              font-size: 48px; 
760              border-radius: 50%; 
761              padding: 10px 18px;      
762
763   
764          .btn-preco-ex-aluno,.btn-preco-padrao{ 
765   
766            background:none; 
767            border: none; 
768            width: 100%; 
769            display: flex; 
770            align-items: center; 
771            justify-content: space-between; 
772            text-align: left; 
773            font-size: 14px; 
774
775   
776          .custom-icon-right{ 
777            transform: rotate(0); 
778            transition: all 0.5s; 
779
780   
781          .custom-icon-right-active{ 
782          transform: rotate(90deg);             
783
784   
785          .ssp-divisor{ 
786            width: 100%; 
787            color: #D7D7DB; 
788            margin: 15px 0; 
789
790   
791   
792          @media only screen and (max-width: 768px){ 
793   
794              .modal-extensao_content{ 
795                width:336px; 
796                padding: 60px 20px 20px 20px; 
797
798   
799              .modal-extensao__btn{ 
800                width: 100%; 
801
802   
803              .modal-extensao-modal-extensao__btn { 
804                  float: initial; 
805                  width: 234px; 
806
807              .modal-extensao-btn-conheca { 
808                  float: initial; 
809                  width: 100%; 
810                  margin-left: 0px; 
811
812              .modal-extensao-aluno__btn { 
813                  min-width: 234px; 
814
815              .modal-extensao-btn-conferir{ 
816                  min-width: 234px; 
817                  margin-left: 0px; 
818
819          }     
820 
821 
822/* Emed */ 
823.ssp-btn-emed__voltar-curso { 
824  border: 1px solid #474F61; 
825  color: #474F61; 
826  max-width: 372px; 
827  margin-left: 60px; 
828  height: 50px; 
829  padding: 12px!important; 
830
831 
832@media (max-width: 768px) { 
833  .ssp-btn-emed__voltar-curso { 
834    font-size: 14px; 
835    margin-left: 0px!important; 
836
837
838 
839@media only screen and (max-width: 767px){ 
840  .ssp:not(.liferay-instance) .ssp-emed-visita-text { 
841      margin: 0; 
842      transform: none; 
843      margin-left: 10px; 
844
845
846 
847.ssp:not(.liferay-instance) .icon-map-adress::after { 
848  padding: 0 8px 0 0; 
849
850 
851.ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal { 
852    margin: 5px 0; 
853
854 
855.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento { 
856    width: 100%; 
857    color: white !important; 
858    font-size: 15px; 
859    font-weight: 600; 
860    margin: 10px 0; 
861
862 
863.ssp-modal-emed-info-txt-matricula { 
864  display: inline-block; 
865
866.ssp:not(.liferay-instance) .btn-card-investimento.--inscreva-se.disabled, .ssp:not(.liferay-instance) a.btn.btn-success.disabled.manutencao { 
867    background: #BFC3C9 !important; 
868    color: #454F63!important; 
869    opacity: 1!important; 
870    font-size: 14px; 
871    border:none; 
872
873 
874.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--bolsas.disabled { 
875    background: #E5E8ED; 
876    color: #454F63!important; 
877    opacity: 1; 
878    font-size: 14px; 
879
880 
881.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--inscreva-se { 
882    background-color: #5acc75; 
883    text-transform: none; 
884
885 
886.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .link-descontos-parcelamentos { 
887    font-weight: 600; 
888
889 
890.ssp:not(.liferay-instance) .ssp-card-oferta-curso__sem-vaga-title { 
891    margin: 0; 
892
893 
894.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-container { 
895 
896  padding: 0; 
897 
898
899 
900.ssp:not(.liferay-instance) .ssp-ofertas-emed__filtro-content { 
901    padding: 40px 0; 
902
903 
904.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .txt-boleto-cartao { 
905    text-align: center; 
906
907.ssp-card-modal-emed-lineou { 
908height: 1px; 
909    background-color: #FC7834; 
910    text-align: center;     
911    width: 50%;     
912    margin: 0px auto; 
913    margin-bottom: 15px; 
914
915.ssp-card-modal-emed-lineou span { 
916background-color: white; 
917    position: relative; 
918    top: -0.8em; 
919    padding: 0 19px; 
920    font-weight: bold; 
921    color: #2A2E43; 
922    font-size: 15px; 
923
924.ssp-modal-emed-txtValor { 
925    font-size: 16px; 
926    color: #04488C; 
927    font-weight: bold; 
928
929.ssp-card-modal-emed-centralizaPagtos{ 
930max-width: 285px;margin:0 auto; margin-top: 18px!important; 
931
932.ssp-card-modal-forma-pagamento__tipos-content p { 
933  font-weight: 500!important; 
934
935.textoCartoesAceitos { 
936  font-weight: 500!important; 
937
938.ssp-card-modal-emed-valorObs { 
939    color: #004A8C; 
940    display: flex;     
941    justify-content: center; 
942    font-weight: 500; 
943    padding-top: 11px; 
944    font-size: 14px; 
945
946.ssp-card-modal-emed-boxDesconto{ 
947    border: 0!important; 
948    font-weight: 500!important; 
949    background-color: #F7F7F7; 
950    border-radius: 13px; 
951    padding: 20px 40px!important; 
952    margin-bottom: 0!important; 
953
954.ssp-modal-emed-boxoito { 
955    padding: 5px 45px!important; 
956    text-align: center;  
957    border-bottom: 0px!important; 
958
959.ssp-modal-emed-btfechar { 
960    position: absolute; 
961    right: 0; 
962    display: flex; 
963    flex-direction: column; 
964    text-align: center; 
965    line-height: 0.9; 
966    top: -48px; 
967    color: #E4E8F0; 
968    font-weight: 500; 
969    font-size: 14px; 
970
971.ssp-card-modal-forma-pagamento__btn-close:hover { 
972    opacity: .6; 
973
974.ssp-card-modal-emed-ano { 
975    font-weight: 500; 
976    font-size: 22px; 
977    color: #454F63; 
978}  
979.ssp:not(.liferay-instance) [data-info="msg-20-desconto"] {  
980    font-weight: 500!important; 
981 
982}  
983.ssp-card-modal-emed-valorObs i { 
984    padding-top: 2px; 
985    padding-right: 3px; 
986}   
987button[id^="btnComprarEmedModal_"] { 
988    height: 50px; 
989    font-weight: 600; 
990    max-width: 372px; 
991    width: 100%;     
992    margin: 0 auto; 
993    /* margin-left: 60px; */ 
994    display: block; 
995    height: 50px; 
996    padding: 12px !important; 
997 
998
999.obsspan { 
1000    justify-content: left; 
1001    padding-bottom: 10px; 
1002
1003 
1004 
1005 
1006 
1007@media only screen and (max-width: 767px){ 
1008 
1009    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal { 
1010      width: 100%; 
1011
1012 
1013    .ssp-card-modal-emed-valorObs { 
1014      font-size: 12px; 
1015    }  
1016    .obsspan { 
1017    justify-content: left; 
1018    margin-left: -14px!important; 
1019
1020    .ssp-modal-emed-boxoito { 
1021    padding: 5px 0px!important; 
1022
1023    .ssp-modal-emed-info-txt-matricula { 
1024    display: inherit; 
1025
1026    .ssp-card-modal-emed-boxDesconto{ 
1027      padding: 20px 20px!important; 
1028      font-size: 12px!important; 
1029   }   
1030   .ssp:not(.liferay-instance) [data-info="msg-20-desconto"] { 
1031    font-size: 12px !important; 
1032    font-weight: 500!important; 
1033  }  
1034  .ssp-modal-emed-btfechar { 
1035    font-size: 12px; 
1036 
1037  }   
1038  button[id^="btnComprarEmedModal_"] { 
1039    height: 50px;     
1040    padding: 10px; 
1041    border-radius: 4px; 
1042    margin-left: 0px!important 
1043
1044  button[id^="btnComprarEmedModal_"] span { 
1045    font-size: 15px; 
1046    font-weight: 600; 
1047
1048  .ssp-btn-emed__voltar-curso_0 { 
1049    font-weight: 600!important; 
1050    height: 50px; 
1051    border-radius: 4px!important; 
1052    padding: 14px!important; 
1053
1054     
1055 
1056}   
1057 
1058@media screen and (min-width: 1200px){ 
1059  .ssp-col-lg-without { 
1060    flex: unset; 
1061    width: unset; 
1062
1063
1064@media screen and (max-width: 1199px){ 
1065  .ssp-desconto-2022 .modal-extensao_txteconomiza { 
1066    font-size: 12px !important; 
1067
1068  .ssp-filters-px { 
1069    padding: 0 !important; 
1070
1071  .ssp-switch-label { 
1072    margin: auto 0 !important; 
1073
1074  .ssp-switch-label-message { 
1075    margin-top: 10px; 
1076    margin-bottom: 10px; 
1077    padding-right: 0 !important; 
1078    padding-left: 0 !important; 
1079
1080  .ssp-container-selecione-unidade [name="unidades-ofertas"] { 
1081    max-width: 316px!important; 
1082
1083  .ssp-detalhe-curso-titulo-filter { 
1084    font-size: 16px !important; 
1085
1086
1087 
1088 
1089.ssp-filters-px { 
1090  padding: 0 80px; 
1091
1092/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ 
1093/* !!!!!!! CSS Destinado ao switch(toggle) !!!!!!! */ 
1094/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ 
1095.ssp-switch { 
1096  position: relative; 
1097  display: inline-block; 
1098  width: 63px; 
1099  height: 32px; 
1100
1101 
1102.ssp-switch input {  
1103  opacity: 0; 
1104  width: 0; 
1105  height: 0; 
1106
1107 
1108.ssp-switch-label { 
1109  margin: auto 15px; 
1110  font: normal normal 600 16px/19px Montserrat; 
1111  letter-spacing: 0px; 
1112  color: #FFFFFF; 
1113  white-space: nowrap; 
1114
1115 
1116.ssp-switch-label-section { 
1117  font: normal normal 600 18px/22px Montserrat; 
1118  margin-bottom: 11px; 
1119
1120 
1121.ssp-switch-label-message { 
1122  font: normal normal medium 16px/19px Montserrat !important; 
1123  letter-spacing: 0px; 
1124  color: #FFFFFF; 
1125  margin-top: 16px; 
1126  padding-left: 25px; 
1127  padding-right: 25px; 
1128
1129 
1130.ssp-switch-divider { 
1131  border-bottom: 1px solid #4a4d5f; 
1132  width: 100%; 
1133
1134 
1135.ssp:not(.liferay-instance) .ssp-detalhe-curso-titulo-filter.ssp-detalhe-curso-titulo-filter { 
1136  font-size: 21px; 
1137
1138 
1139.ssp-switch-slider { 
1140  position: absolute; 
1141  cursor: pointer; 
1142  top: 0; 
1143  left: 0; 
1144  right: 0; 
1145  bottom: 0; 
1146  background-color: #00000000; 
1147  border: 1px solid #FFFFFF; 
1148  -webkit-transition: .4s; 
1149  transition: .4s; 
1150
1151 
1152.ssp-switch-slider:before { 
1153  position: absolute; 
1154  content: ""; 
1155  height: 21px; 
1156  width: 21px; 
1157  left: 4px; 
1158  bottom: 4px; 
1159  background-color: white; 
1160  -webkit-transition: .4s; 
1161  transition: .4s; 
1162
1163 
1164input:checked + .ssp-switch-slider { 
1165  background-color: #5ACC75; 
1166  border: 1px solid #5ACC75; 
1167
1168input:checked + .ssp-switch-slider-secondary { 
1169  background-color: #2967F4; 
1170  border: 1px solid #2967F4; 
1171
1172 
1173input:focus + .ssp-switch-slider { 
1174  box-shadow: 0 0 1px #5ACC75; 
1175
1176input:focus + .ssp-switch-slider-secondary { 
1177  box-shadow: 0 0 1px #2967F4; 
1178
1179 
1180input:checked + .ssp-switch-slider:before { 
1181  -webkit-transform: translateX(33px); 
1182  -ms-transform: translateX(33px); 
1183  transform: translateX(33px); 
1184
1185 
1186/* Rounded sliders */ 
1187.ssp-switch-slider.round { 
1188  border-radius: 34px; 
1189
1190 
1191.ssp-switch-slider.round:before { 
1192  border-radius: 50%; 
1193
1194 
1195/*Utilizado no modal de registro de interesse #9309*/ 
1196option[value=""][disabled] { 
1197  display: none; 
1198
1199/* Css para botao de idiomas online */ 
1200 
1201.btn-idiomas__aula-online{ 
1202  background:#5382FF; 
1203  color:white!important; 
1204  text-decoration:none!important; 
1205  padding:11px 14px; 
1206  border-radius:4px; 
1207  font-size:13px; 
1208  font-weight:600; 
1209  transition:.3s; 
1210
1211 
1212.btn-idiomas__aula-online:hover{ 
1213  background:#5275D1; 
1214  font-weight:600!important; 
1215
1216 
1217.title-idioma-online__modal,.icon-wifi-title__modal{ 
1218  color:#5382FF!important; 
1219  font-size:25px!important; 
1220  margin:0!important; 
1221  margin-right:5px!important; 
1222
1223 
1224.btn-modal-entendi__idioma-online{ 
1225  font-size:16px!important; 
1226  font-weight:600!important; 
1227  color:#5382FF!important; 
1228  border:#5382FF 1px solid!important; 
1229  padding:15px 142px; 
1230  width:auto!important; 
1231
1232 
1233.btn-modal-entendi__idioma-online:hover{ 
1234  font-size:16px!important; 
1235  font-weight:600!important; 
1236  color:#5382FF!important; 
1237  border:#5382FF 1px solid!important; 
1238  background:white!important; 
1239
1240 
1241@media only screen and (max-width: 768px){ 
1242   
1243  .title-idioma-online__modal,.icon-wifi-title__modal{ 
1244    color:#5382FF!important; 
1245    font-size:21px!important; 
1246    margin:0!important; 
1247    margin-right:5px!important; 
1248
1249   
1250  .btn-modal-entendi__idioma-online{ 
1251    font-size:16px!important; 
1252    font-weight:600!important; 
1253    color:#5382FF!important; 
1254    border:#5382FF 1px solid!important; 
1255    padding:12px 30%; 
1256    width:auto!important; 
1257
1258     
1259
1260 
1261.btn-emed-lista-espera{ 
1262  background-color:#C560C7!important; 
1263
1264 
1265.ssp:not(.liferay-instance) .ssp-container__form-select { 
1266    max-width: 430px; 
1267    width:100%; 
1268
1269 
1270 
1271@media (max-width: 768px){ 
1272  .ssp:not(.liferay-instance) .ssp-ofertas-emed__card { 
1273    margin: 10px 20px; 
1274    max-width: 335px; 
1275
1276
1277 
1278/* css EMED Registro de interesse */ 
1279 
1280.emed #periodo-registro-interesse,.emed #turmas-registro-interesse{ 
1281 
1282  display: flex; 
1283  align-items: center; 
1284  padding: 0.625rem 0; 
1285  width: 85%; 
1286  justify-content: space-between; 
1287  margin: 0 auto; 
1288 
1289
1290 
1291.ssp-card-registro-interesse__title-section-itens{ 
1292  margin: 10px 0 11.5px 0 !important; 
1293  font-size: 20px; 
1294  flex-basis: 120px; 
1295
1296 
1297.ssp-card-registro-interesse__check-itens-content { 
1298  display: flex!important; 
1299  justify-content: center!important; 
1300  flex: 0 1 90%!important; 
1301
1302.ssp-card-registro-interesse__check-item { 
1303  display: flex; 
1304  align-items: center; 
1305  flex-basis: 100px; 
1306
1307 
1308.ssp-card-registro-interesse label { 
1309  margin-right: 0!important; 
1310
1311 
1312.ssp-card-registro-interesse [type="checkbox"] { 
1313box-shadow: 0px 0px 6px #00000029; 
1314
1315 
1316#cursos-registro-interesse,#unidades-registro-interesse{ 
1317padding: 10px 0; 
1318
1319 
1320.emed-select-group{ 
1321 
1322box-shadow: 0px 0px 12px #00000010; 
1323border: 1px solid #6E6E6E; 
1324border-radius: 4px; 
1325padding: 1.0rem 1.125rem; 
1326margin: 1rem 0; 
1327 
1328
1329 
1330.ssp:not(.liferay-instance) .ssp-card-registro-interesse__add-mais > a { 
1331      color: #457eff !important; 
1332
1333 
1334.emed .ssp-card-registro-interesse__btn-enviar { 
1335background-color: #C560C7 !important; 
1336
1337 
1338.ssp-card-registro-interesse__title-modal{ 
1339color:#C560C7 !important; 
1340font-size: 35px !important; 
1341font-weight: bold !important; 
1342margin: 0 !important; 
1343
1344 
1345#msg-transferencia-emed{ 
1346display: flex; 
1347justify-content: center; 
1348flex: wrap; 
1349flex-direction: column; 
1350align-items: center; 
1351padding: 1rem 0; 
1352
1353 
1354.transferencia-emed-title { 
1355  color: #d266d4; 
1356  display: flex; 
1357  gap: 10px; 
1358  font-size: 16px; 
1359  font-weight: bold; 
1360  align-items:center; 
1361
1362 
1363.transferencia-emed-title p { 
1364  margin: 0 !important; 
1365  font-weight: bold !important; 
1366  font-size: 16px!important; 
1367
1368 
1369.transferencia-emed-link a{ 
1370  font-size: 15px; 
1371  font-weight: 500!important; 
1372  color: #792F7A; 
1373  display: block; 
1374  text-align: center; 
1375
1376 
1377.transferencia-emed-link a:hover { 
1378  font-weight: 500!important; 
1379  color: #792F7A; 
1380
1381 
1382.emed .ssp-card-registro-interesse__label-curso-selecionado{ 
1383color:#2A2E43!important; 
1384font-weight: bold!important; 
1385font-size: 28px; 
1386
1387 
1388 
1389/* css para registro de interesse atual */ 
1390 
1391#periodo-registro-interesse,#dias-registro-interesse{ 
1392padding: .625rem 0; 
1393
1394 
1395/* css card sem turma e registro de interesse emed*/ 
1396 
1397.slick-area-emed { 
1398    display: -webkit-box !important; 
1399    display: -ms-flexbox !important; 
1400    display: flex !important; 
1401    -webkit-box-align: center; 
1402    -ms-flex-align: center; 
1403    align-items: center; 
1404    -webkit-box-pack: center; 
1405        -ms-flex-pack: center; 
1406            justify-content: center; 
1407    font-size: 0; 
1408    -ms-flex-wrap: nowrap; 
1409        flex-wrap: nowrap; 
1410
1411   
1412  .slick-area-emed .slick-track, .slick-area-emed .slick-list { 
1413    width: 100%; 
1414
1415 
1416  @media only screen and (max-width: 1199px) and (min-width: 768px) { 
1417    .slick-area-emed--md-bleed { 
1418      width: 100vw; 
1419      left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important; 
1420
1421    .slick-area-emed--md-bleed .slick-list { 
1422      padding-left: calc(calc(50vw - (768px / 2) + 37px)); 
1423      padding-right: calc(calc(50vw - (768px / 2) + 37px)); 
1424
1425    .slick-area-emed--md-bleed .slick-arrow { 
1426      display: none !important; 
1427
1428
1429   
1430  @media only screen and (min-width: 376px) and (max-width: 1024px) { 
1431    .slick-area-emed--md-bleed { 
1432      width: 100vw; 
1433      left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px)); 
1434
1435    .slick-area-emed--md-bleed .slick-list { 
1436      padding-left: 2px; 
1437
1438    .slick-area-emed--md-bleed .slick-arrow { 
1439      display: none !important; 
1440
1441
1442   
1443  @media only screen and (max-width: 375px) { 
1444     
1445    .ssp-emed__card-slider-body { 
1446    padding: 25px 30px; 
1447
1448    
1449     
1450    .slick-area-emed--md-bleed { 
1451      width: 100vw; 
1452      left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px)); 
1453
1454    /* .slick-area-emed--md-bleed .slick-list { 
1455      padding-left: 20px; 
1456 
1457    } */ 
1458    .slick-area-emed--md-bleed .slick-arrow { 
1459      display: none !important; 
1460
1461
1462 
1463  .slick-area__item { 
1464    display: flex; 
1465    flex-basis: auto; 
1466
1467 
1468  .ssp-emed__section__textCard { 
1469  margin: 20px 0 0 0; 
1470
1471 
1472  .ssp-emed__card-slider-body { 
1473    padding: 25px 50px; 
1474    min-height: 350px; 
1475    display: flex; 
1476    flex-direction: column; 
1477
1478 
1479  .slick-area__item { 
1480    display: flex; 
1481    flex-basis: auto; 
1482
1483 
1484  .ssp-emed__card-slider-body a { 
1485    text-decoration: none!important; 
1486    font-weight: normal; 
1487    color: #78849E 
1488
1489 
1490  .ssp-emed__card-slider-body a:hover {   
1491    font-weight: bold!important; 
1492    color: #2a2e43 
1493
1494 
1495  .ssp-emed__card-slider { 
1496      border-radius: 12px; 
1497      background: transparent; 
1498      -webkit-box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%); 
1499      box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%); 
1500      margin: 12px; 
1501      position: relative; 
1502      overflow: hidden; 
1503      color: #ffffff!important; 
1504      border: 1px solid #fff; 
1505      min-height: 350px; 
1506
1507 
1508  .slick-initialized .slick-track { 
1509      display: flex; 
1510
1511 
1512    .slick-initialized .slick-slide { 
1513      height: inherit!important; 
1514      display: flex; 
1515
1516 
1517  .ssp-emed__section__titleCard { 
1518  font-size: 28px !important; 
1519  color: #ffffff !important; 
1520  margin: 0 !important; 
1521  display: flex !important; 
1522  justify-content: flex-start !important; 
1523  flex-direction: row !important; 
1524  align-items: start !important; 
1525  flex-basis: 60px; 
1526
1527 
1528.ssp-emed__section__titleCard i { 
1529  font-size: 28px; 
1530  color: #ffffff; 
1531  margin: 0 0.85rem 0 0; 
1532  line-height: 30px; 
1533
1534 
1535.ssp-emed__section__titleCard i.fa-envelope { 
1536  margin-top: 0px;   
1537
1538 
1539.ssp-emed__section__titleCard i.fa-users-class { 
1540  margin-top:2px; 
1541
1542 
1543.ssp-emed__section__titleCard div { 
1544  text-decoration: underline; 
1545  font-size: 28px !important; 
1546  font-weight: bold; 
1547  margin: 0!important; 
1548  transform:translateY(-2px) 
1549
1550 
1551  .ssp-emed__section__introCard { 
1552    display: block; 
1553    font: 28px/30px 'Montserrat'; 
1554    font-weight: 600; 
1555    margin: 20px 0; 
1556    color: #ffffff;  
1557
1558 
1559  .ssp-emed__section__introCardCTA { 
1560    font: 34px/36px 'Montserrat'; 
1561    font-weight: bold; 
1562    display: block; 
1563    margin: 20px 0; 
1564    color: #ffffff;  
1565
1566 
1567  .ssp-emed__section__textCard { 
1568    font: 22px/30px 'Montserrat'; 
1569    color: #ffffff;  
1570    display: block; 
1571    margin: 20px 0 0 0; 
1572    position: relative; 
1573
1574 
1575  .ssp-emed__iconWrapper { 
1576    display: inline-block; 
1577    width: 50px; 
1578    color: #B053B2; 
1579    position: absolute; 
1580    bottom: 0; 
1581    right: 0; 
1582
1583 
1584  .ssp-emed__btn { 
1585    background-color: #B053B2 ; 
1586      color: #fff!important; 
1587      font: normal normal 600 18px/22px Montserrat; 
1588      box-shadow: 0px 4px 16px #455B6314; 
1589      width: 100%; 
1590      transition: .3s; 
1591      padding:10px!important; 
1592
1593 
1594  .ssp-emed__btn:hover { 
1595      opacity: 0.7; 
1596  }     
1597 
1598  /*mobile emed*/ 
1599  @media only screen and (max-width: 1024px) { 
1600    .slick-area-emed .slick-dots li.slick-active button:before { 
1601      opacity: .75; 
1602      color: #707070; 
1603
1604   
1605    .slick-area-emed .slick-dots li button:before { 
1606      color: blue; 
1607
1608 
1609    .ssp-card-detalhe-curso__secundary-info-carga-horaria { 
1610      min-width: 35%; 
1611      text-align: end; 
1612
1613
1614   
1615  @media only screen and (max-width: 1199px) and (min-width: 768px) { 
1616    .slick-area-emed--md-bleed { 
1617      width: 100vw; 
1618      left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important; 
1619
1620    .slick-area-emed--md-bleed .slick-list { 
1621      padding-left: calc(calc(50vw - (768px / 2) + 37px)); 
1622      padding-right: calc(calc(50vw - (768px / 2) + 37px)); 
1623
1624    .slick-area-emed--md-bleed .slick-arrow { 
1625      display: none !important; 
1626
1627
1628   
1629  @media only screen and (min-width: 375px) and (max-width: 1024px) { 
1630      .slick-area-emed--md-bleed { 
1631        width: 100vw; 
1632        left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px)); 
1633
1634      .slick-area-emed--md-bleed .slick-list { 
1635        padding-left: 2px; 
1636
1637      .slick-area-emed--md-bleed .slick-arrow { 
1638        display: none !important; 
1639
1640      .ssp-emed__section__titleCard { 
1641      align-items: start !important; 
1642
1643 
1644    .ssp-emed__section__titleCard div { 
1645      font-weight: bold !important; 
1646
1647 
1648    .ssp-emed__section__titleCard i { 
1649      font-weight: 300 !important; 
1650      font-size: 28px !important; 
1651      margin: 3px 0.85rem 0 0; 
1652
1653 
1654    .transferencia-emed-title { 
1655      font-size: 12px; 
1656
1657 
1658    .ssp:not(.liferay-instance) .ssp-card-registro-interesse__select { 
1659      background-size: 15px 15px !important; 
1660      padding: 0 10px; 
1661
1662
1663   
1664  @media only screen and (max-width: 550px) { 
1665 
1666    .ssp-emed__section__introCardCTA{ 
1667      font-size: 28px; 
1668
1669 
1670    #msg-transferencia-emed{ 
1671    gap:12px; 
1672
1673     
1674    
1675     
1676    .ssp-emed__card-slider { 
1677      width:335px; 
1678      min-height: 440px; 
1679
1680 
1681    .slick-initialized .slick-track { 
1682      display: flex; 
1683
1684 
1685    .slick-initialized .slick-slide { 
1686      height: inherit!important; 
1687      display: flex; 
1688      min-height: 440px; 
1689
1690 
1691  .ssp-emed__card-slider-body { 
1692    padding: 25px 30px; 
1693
1694 
1695  .ssp-emed__section__titleCard div { 
1696      transform: translateY(-5%); 
1697      font-size: 24px!important; 
1698
1699     
1700    .slick-area-emed--md-bleed { 
1701      width: 100vw; 
1702      left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px)); 
1703
1704    .slick-area-emed--md-bleed .slick-list { 
1705      padding-left: 20px; 
1706
1707    .slick-area-emed--md-bleed .slick-arrow { 
1708      display: none !important; 
1709
1710 
1711    .ssp-card-registro-interesse__title-section-itens { 
1712    flex-basis: 80px; 
1713
1714 
1715  .emed #periodo-registro-interesse, .emed #turmas-registro-interesse { 
1716    width: 95%; 
1717
1718 
1719  .emed .ssp:not(.liferay-instance) .ssp-card-registro-interesse label { 
1720    margin: 0!important; 
1721
1722 
1723  .emed .ssp-card-registro-interesse.emed [type="checkbox"] { 
1724    margin-left: 0!important; 
1725
1726 
1727  .emed .ssp-card-registro-interesse__check-item { 
1728    flex-basis: 100px; 
1729
1730
1731 
1732  .emed-select-group { 
1733    box-shadow: 0px 0px 12px #00000010; 
1734    border: 1px solid #6E6E6E; 
1735    border-radius: 4px; 
1736    margin: 1rem 0; 
1737
1738 
1739.emed-select-group h4 { 
1740    margin: 15px 0 10px 0; 
1741
1742.ssp-emed__section__textCard { 
1743  margin: 20px 0 0 0; 
1744
1745 
1746.ssp-card-msg-sucesso__btn{ 
1747  font-size: 20px; 
1748
1749 
1750.ssp:not(.liferay-instance) .ssp-card-oferta-curso { 
1751  height:fit-content; 
1752
1753 
1754.ssp-card-duvida__bolsa-estudo{ 
1755 
1756background:#DCE8FF; 
1757padding: 30px; 
1758max-width: 683px; 
1759width: 100%; 
1760border-radius: 14px; 
1761display:flex; 
1762justify-content:center; 
1763align-items: center; 
1764gap: 20px;  
1765margin: 1rem auto; 
1766 
1767
1768 
1769.ssp-card-duvida__bolsa-estudo p{ 
1770 
1771font-size: 16px!important; 
1772font-weight: bold!important; 
1773color: #2967F4!important; 
1774margin: 0!important;; 
1775 
1776
1777 
1778.ssp-card-duvida__bolsa-estudo a{ 
1779 
1780border:1px solid #2967F4!important; 
1781font-size: 14px!important; 
1782font-weight: 600; 
1783text-decoration: none!important; 
1784color: #2967F4!important; 
1785padding:14px 27px; 
1786border-radius:6px; 
1787transition: .3s; 
1788 
1789
1790 
1791.ssp:not(.liferay-instance) .ssp-card-duvida__bolsa-estudo a:hover{ 
1792 
1793font-size: 14px!important; 
1794font-weight: 600!important; 
1795background: #2967F4!important; 
1796color:white !important; 
1797opacity:1!important; 
1798 
1799
1800 
1801@media only screen and (max-width: 768px){ 
1802 
1803.ssp-card-duvida__bolsa-estudo{ 
1804 
1805    background:#DCE8FF; 
1806    padding: 20px; 
1807    flex-flow: column; 
1808    width:90%; 
1809 
1810
1811 
1812.ssp-card-duvida__bolsa-estudo p{ 
1813 
1814    max-width:200px; 
1815    text-align: center; 
1816 
1817
1818 
1819.ssp-card-duvida__bolsa-estudo a{ 
1820 
1821    padding:16px 27px;          
1822 
1823
1824 
1825
1826 
1827/* Novo Card de Oferta */ 
1828 
1829  /* ajustes no card existente */ 
1830 
1831  .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma{ 
1832    margin-bottom: 30px; 
1833
1834 
1835  .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma-content { 
1836      margin-bottom: 5px; 
1837
1838 
1839  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-data-periodo{ 
1840    margin: 5px 0 10px 0; 
1841
1842 
1843  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item { 
1844      border-radius: 0; 
1845      background-color: unset; 
1846      padding: 0; 
1847      max-width: 100%; 
1848      width: 100%; 
1849      margin: 0; 
1850
1851 
1852  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora_content{ 
1853      margin:0; 
1854      opacity: 0; 
1855      transition: 0.3s; 
1856
1857 
1858  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia { 
1859      margin: 0; 
1860      font-size: 17px; 
1861      font-weight: bold; 
1862      font-stretch: normal; 
1863      font-style: normal; 
1864      line-height: 1.23; 
1865      letter-spacing: normal; 
1866      text-align: center; 
1867
1868 
1869  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__hora { 
1870      margin: 0; 
1871      font-size: 17px; 
1872      font-weight: bold; 
1873      font-stretch: normal; 
1874      font-style: normal; 
1875      line-height: 1.3; 
1876      letter-spacing: normal; 
1877      text-align: center; 
1878
1879 
1880  .modal-extensao_txteconomiza{ 
1881      font-size: 14px; 
1882      color: #454F63; 
1883      font-weight: 400; 
1884
1885 
1886  .btn.btn-lg { 
1887      padding:.7rem; 
1888 
1889
1890 
1891  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{ 
1892    font-size: 17px; 
1893
1894 
1895  .ssp-card-oferta-curso__item-valor-investimento{ 
1896    font-size: 38px; 
1897
1898 
1899  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__title{ 
1900    color: #454F63; 
1901    font-weight: bold!important; 
1902    font-size: 14px; 
1903
1904 
1905.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card::after{ 
1906    color: #454F63!important; 
1907    font-size: 14px; 
1908
1909 
1910 
1911.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content span{ 
1912    color:#454F63; 
1913    font-size: 14px; 
1914    font-weight: 400; 
1915
1916 
1917.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content { 
1918    padding-bottom: 0; 
1919
1920 
1921  /* local realizacao */ 
1922 
1923  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title { 
1924    font-size: 13px; 
1925    color: #00488C; 
1926    font-weight: 600; 
1927    text-decoration: none!important; 
1928    border: 1px solid #00488C; 
1929    padding: 11px 14px; 
1930    transition:.3s; 
1931    border-radius: 4px; 
1932    display: flex; 
1933    gap: 5px; 
1934    align-items: center; 
1935
1936   
1937  .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title:hover { 
1938      color: white; 
1939      font-weight: 600!important; 
1940      background: #08488C; 
1941  }  
1942     
1943  .container-local-realizacao { 
1944      padding:0; 
1945      border:0; 
1946      border-radius: unset; 
1947      width: 100%; 
1948      margin: 10px 0 0 0; 
1949      box-shadow: none; 
1950      display: flex; 
1951      justify-content:center; 
1952      align-items: flex-end; 
1953
1954 
1955  .icon-local-realizacao{ 
1956      color: #00488C; 
1957      font-size: 13px; 
1958  }  
1959   
1960   
1961  @media only screen and (max-width: 768px){ 
1962 
1963    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia {  
1964        font-size: 16px; 
1965
1966 
1967    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__title-item { 
1968        font-size: 14px!important; 
1969
1970 
1971    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__valor-desconto{ 
1972        font-size: 15px; 
1973
1974 
1975    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-valor-investimento { 
1976      font-size: 33px; 
1977
1978 
1979    .icon-local-realizacao { 
1980        font-size: 12px; 
1981
1982 
1983    .modal-extensao_txteconomiza { 
1984        font-size: 12px; 
1985
1986 
1987    .content-valores-descontos { 
1988        padding-bottom: 8px!important; 
1989
1990 
1991    .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{ 
1992        font-size: 14px!important; 
1993
1994 
1995 
1996
1997 
1998     
1999     
2000 
2001/* final ajustes no card existente */ 
2002 
2003 
2004/* Novos elementos */ 
2005 
2006.content-data-dias{ 
2007    padding:20px; 
2008    padding-top:0; 
2009    border-bottom: none !important; 
2010
2011 
2012.content-valores-descontos{ 
2013    padding:20px 0 0 0; 
2014    opacity: 1; 
2015    height:auto; 
2016    transition: 0.3s; 
2017    overflow: hidden; 
2018    border-top: 1px #E4E8F0 solid;     
2019
2020 
2021.content-valores-descontos.hide-price{ 
2022     
2023    padding:0; 
2024    opacity: 0; 
2025    height:0; 
2026     
2027
2028 
2029.content-btn-bolsa{ 
2030 
2031    border-top: 1px #E4E8F0 solid; 
2032    padding-top:20px;     
2033 
2034
2035 
2036.content-btn-bolsa.modifier-content-show{ 
2037 
2038    padding-bottom: 20px; 
2039 
2040
2041 
2042.content-btn-bolsa.modifier-content-show .ou-separator-desconto{ 
2043    display:none; 
2044
2045 
2046.content-btn-bolsa.modifier-content-show .btn-show-price{ 
2047    display:none; 
2048
2049 
2050.content-buttons{ 
2051 
2052    padding:20px 0 0 0; 
2053 
2054
2055 
2056.block-valor-desconto{ 
2057 
2058  background-color:#F2F6FF; 
2059  padding: 30px 10px 15px 10px; 
2060  border-radius:12px; 
2061  position: relative; 
2062 
2063
2064 
2065.block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span { 
2066  font-size: 18px; 
2067
2068 
2069.block-valor-total{ 
2070 
2071  background-color:#F2F6FF; 
2072  padding:15px 10px; 
2073  border-radius:12px; 
2074  position: relative; 
2075 
2076
2077 
2078.block-valor-total .ssp-card-oferta-curso__title-item{ 
2079  font-size: 16px!important; 
2080  color: #454F63!important; 
2081  font-weight:500!important; 
2082
2083 
2084.block-valor-total .ssp-card-oferta-curso__item-valor-investimento{ 
2085  font-size:22px; 
2086
2087 
2088.block-valor-total .ssp-card-oferta-curso__item-valor-investimento span{ 
2089    font-size:11px; 
2090
2091 
2092.block-valor-total .ssp-card-oferta-curso__desconto-content p{ 
2093    font-size:14px; 
2094    font-weight: 500; 
2095
2096 
2097.tag-label-desconto{ 
2098 
2099background-color:#B6FDCF; 
2100border-radius: 15px; 
2101padding:5px; 
2102margin: -50px 20px 10px 20px; 
2103 
2104
2105 
2106.tag-label-desconto span, .tag-label-desconto small{ 
2107font-size: 16px!important; 
2108font-weight: bold!important; 
2109color: #454F63!important; 
2110
2111 
2112 
2113 
2114.ou-separator-desconto{ 
2115    font-size: 16px; 
2116    color: #454F63; 
2117    font-weight: bold; 
2118    display:flex; 
2119    flex-wrap: nowrap; 
2120    align-items: center; 
2121    justify-content:space-between; 
2122    gap: 15px; 
2123    padding:20px 0; 
2124
2125 
2126.ou-separator-desconto::after{ 
2127    content: ""; 
2128    height:2px; 
2129    background-color:#E4E8F0; 
2130    width: 100%; 
2131    display: block; 
2132
2133 
2134.ou-separator-desconto::before{ 
2135  content: ""; 
2136  height:2px; 
2137  background-color:#E4E8F0; 
2138  width: 100%; 
2139  display: block; 
2140
2141 
2142.btn-show-price{ 
2143 
2144  background: unset; 
2145  border: 0; 
2146  font-size: 14px!important; 
2147  color: #454F63!important; 
2148 
2149
2150 
2151.btn-show-price p{ 
2152  margin: 0 !important; 
2153
2154 
2155.btn-show-price span{ 
2156  text-decoration: underline; 
2157  font-weight: bold; 
2158
2159 
2160@media only screen and (max-width: 768px){ 
2161 
2162  .content-data-dias{ 
2163 
2164    padding:20px 0; 
2165 
2166
2167 
2168  .ssp-card-oferta-curso__local-realizacao-content__title { 
2169 
2170      font-size: 14px; 
2171      display:flex; 
2172      align-items: center; 
2173      gap: 5px; 
2174      padding: 10px 13px; 
2175
2176 
2177  .ssp-card-oferta-curso__local-realizacao-content__title i{ 
2178 
2179      font-size: 11px; 
2180
2181 
2182  .tag-label-desconto span, .tag-label-desconto small { 
2183      font-size: 13px!important; 
2184
2185 
2186  .tag-label-desconto { 
2187      padding: 5px; 
2188      margin: -50px 12px 10px 12px; 
2189
2190 
2191  .block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span { 
2192      font-size: 18px; 
2193
2194 
2195  .content-buttons { 
2196      padding: 10px 0 0 0; 
2197
2198 
2199 
2200
2201 
2202/*final Novo card de ofertas*/ 
2203 
2204/* form aprendizagem */ 
2205 
2206[data-modal="modal"]{ 
2207  background-color: rgba(0,0,0,0.7); 
2208  backdrop-filter: blur(10px); 
2209  display:none; 
2210
2211 
2212[data-modal="close-form-modal"]{ 
2213   
2214  font-size: 22px; 
2215  background: unset!important; 
2216  color: white!important; 
2217  display: flex; 
2218  align-items: center; 
2219  margin: 0; 
2220  padding: 0; 
2221  position:absolute; 
2222  right:0; 
2223  border:0; 
2224  gap:5px; 
2225  right: 2%; 
2226  top: -2%; 
2227   
2228
2229 
2230[data-modal="close-form-modal"] i{ 
2231   
2232  font-size:43px; 
2233  height:fit-content; 
2234   
2235
2236 
2237.open-modal-form{ 
2238  position: fixed; 
2239  top: 0; 
2240  width: 100%; 
2241  height: 100%; 
2242  z-index: 100; 
2243  display: flex; 
2244  justify-content: center; 
2245  align-items: center; 
2246  overflow:auto; 
2247 
2248
2249 
2250.open-modal-form .ssp_ct_form_programe{ 
2251    animation-name: animatetop; 
2252    animation-duration: .4s; 
2253    position:relative; 
2254
2255 
2256label .reference-mark { 
2257color:#78849e; 
2258
2259.lexicon-icon-asterisk { 
2260  color:#78849e; 
2261
2262.lexicon-icon-reload { 
2263  margin-left:10px; 
2264
2265.ssp_title_form_programe{ 
2266    font-size: 42px!important; 
2267    color: #ffffff!important; 
2268    font-family: "Montserrat",sans-serif; 
2269    font-weight:600; 
2270    text-align:left; 
2271
2272.ssp_subtitle_form_programe { 
2273  margin-top:0px!important; 
2274   
2275
2276.ssp_subtitle_form_programe{ 
2277  font-size: 20px!important; 
2278    color: #ffffff!important; 
2279    font-family: "Montserrat",sans-serif; 
2280    font-weight:600; 
2281    text-align:left; 
2282
2283.lfr-ddm-form-page { 
2284background-color: #fff; 
2285border-radius: 12px 12px 0px 0px; 
2286padding: 35px 15px!important; 
2287
2288.ssp:not(.liferay-instance) .form-group label { 
2289 color: #78849E; 
2290 font: normal normal 600 16px/19px Montserrat; 
2291 padding-bottom: 10px; 
2292
2293.lfr-ddm-form-page-description {  
2294display: none!important; 
2295
2296.lfr-ddm-form-page-title { 
2297display: none!important; 
2298
2299.lfr-ddm-form-submit { 
2300background-color: #0380F0; 
2301    text-align: center; 
2302    float: none!important; 
2303    border: 1px solid #0380F0; 
2304    border-radius: 6px; 
2305    font-size: 16px; 
2306    width: 245px; 
2307    height: 50px; 
2308
2309.lfr-ddm-form-pagination-controls { 
2310background-color: #fff; 
2311    text-align: center; 
2312    border-radius: 0px 0px 12px 12px; 
2313    padding-bottom: 25px; 
2314
2315.ddm-form-name { 
2316display: none!important; 
2317
2318.ddm-form-description { 
2319display: none!important; 
2320
2321.ddm-form-builder-app { 
2322margin-top:35px; 
2323
2324.taglib-captcha { 
2325  display: flex; 
2326
2327.input-text-wrapper { 
2328  left: 20px; 
2329
2330.lfr-ddm-form-pagination-controls { 
2331  padding-top:0px!important; 
2332  display:flex; 
2333  justify-content:center; 
2334  align-items: center; 
2335  flex-flow:column; 
2336
2337@media only screen and (max-width: 1024px) { 
2338   
2339.open-modal-form{ 
2340   
2341  align-items: flex-start; 
2342   
2343}   
2344 
2345.ddm-form-builder-app { 
2346    margin-top: 15px; 
2347
2348   
2349.ssp_title_form_programe{ 
2350font-size: 34px!important; 
2351line-height: 1.2!important; 
2352
2353.ssp_subtitle_form_programe{ 
2354font-size:18px!important; 
2355
2356.taglib-captcha { 
2357  display:block; 
2358
2359.input-text-wrapper { 
2360  left:0; 
2361
2362.ssp_ct_form_programe { 
2363  padding:0px; 
2364  max-width:100%; 
2365  padding:40px 20px; 
2366
2367 
2368[data-modal="close-form-modal"]{ 
2369   
2370  right: 20px; 
2371  top: 0; 
2372   
2373
2374 
2375
2376 
2377.ssp:not(.liferay-instance) a.btn.btn-success.disabled{ 
2378	pointer-events: none; 
2379	opacity: 0.5 !important; 
2380	color: #FFF !important; 
2381	background-color: #4CBF69 !important; 
2382	cursor: not-allowed; 
2383	border: none !important; 
2384	font-size: 0.9rem !important; 
2385
2386 
2387.slick-list.draggable { 
2388  height: auto !important; 
2389
2390 
2391.ssp:not(.liferay-instance) .ssp-image-opacity { 
2392 
2393  opacity: 1; 
2394  object-fit: cover; 
2395  object-position: center; 
2396 
2397
2398 
2399.ssp-option-group { 
2400  text-align: left; 
2401  font: normal normal 600 15px/19px Montserrat; 
2402  letter-spacing: 0px; 
2403  color: #004A8C; 
2404
2405.ssp-option { 
2406  text-align: left; 
2407  font: normal normal normal 15px/19px Montserrat; 
2408  letter-spacing: 0px; 
2409  color: #656565; 
2410
2411@media only screen and (max-width: 768px){ 
2412  .ssp-option-group { 
2413    font: normal normal 600 15px/19px Montserrat; 
2414
2415  .ssp-option { 
2416    font: normal normal normal 15px/19px Montserrat; 
2417
2418
2419 
2420.open-modal-form.lfr-ddm__default-page-header{ 
2421    display:none; 
2422
2423 
2424/* css para funcionalidade de híbrido */ 
2425 
2426.ssp-emed__vantagens-content.livre span{ 
2427  color: #FF9057!important; 
2428
2429.ssp-emed__vantagens-content.livre a:hover { 
2430    color: white; 
2431    background-color: #FF9057!important;; 
2432    border: 1px solid #FF9057!important;; 
2433
2434.ssp-emed__vantagens-content.tecnico span{ 
2435  color: #F7BD23!important; 
2436
2437.ssp-emed__vantagens-content.tecnico a:hover { 
2438    color: white; 
2439    background-color: #F7BD23!important;; 
2440    border: 1px solid #F7BD23!important;; 
2441
2442.ssp-emed__vantagens-content.ensino-medio-tecnico span{ 
2443  color: #C761CB!important; 
2444
2445.ssp-emed__vantagens-content.ensino-medio-tecnico a:hover{ 
2446    color: white; 
2447    background-color: #C761CB!important;; 
2448    border: 1px solid #C761CB!important;; 
2449
2450.ssp-emed__vantagens-content.extensao span{ 
2451  color: #3ECCA6!important; 
2452
2453.ssp-emed__vantagens-content.extensao a:hover{ 
2454    color: white; 
2455    background-color: #3ECCA6!important; 
2456    border: 1px solid #3ECCA6!important; 
2457
2458 
2459 
2460</style> 
2461                
2462	 
2463  <#assign 
2464     
2465    prefix = "ssp" 
2466    nomeVocabularioTipoCurso = 'tipo-de-curso' 
2467     
2468   
2469    nomeVocabularioUnidades = 'unidades' 
2470     
2471    nomeVocabularioFormato = 'formato' 
2472     
2473    nomeFormato = ""   
2474    nomeVocabularioModalidade = 'modalidade' 
2475     
2476    nomeModalidade = ""   
2477     
2478    normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizer") 
2479   
2480    journalArticle = getJournalArticle() 
2481  /> 
2482   
2483  <#if journalArticle?contains("#erro#")> 
2484    erro 
2485  <#else> 
2486   
2487    <#assign 
2488   
2489      categories = getCategorias(journalArticle.getResourcePrimKey()) 
2490  
2491      document = saxReaderUtil.read(journalArticle.getContent()).getRootElement() 
2492   
2493      xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataEfetivaFTFieldSet']") 
2494			dataEfetivaFTFieldSet	= xPathSelector.selectSingleNode(document) 
2495        
2496		  xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='dataEfetivaFT']") 
2497			dataEfetiva = xPathSelector.selectSingleNode(document) 
2498						  
2499			dataEfetivaSTR = dataEfetiva.elementText("dynamic-content")?string 
2500   
2501      articleId = journalArticle.getArticleId() 
2502   
2503      codigoFT = getStringValue(document,'codigoFT') 
2504   
2505      tituloComercial = journalArticle.getTitle() 
2506   
2507      objetivo = getStringValue(dataEfetivaFTFieldSet, 'objetivoComercial') 
2508       
2509      cargaHoraria = getStringValue(dataEfetivaFTFieldSet, 'cargaHorariaTotalFT') 
2510   
2511      oQueVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueVouAprenderComercial') 
2512   
2513      comoVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'comoVouAprenderComercial') 
2514			 
2515			possoFazerEsteCursoComercial = getStringValue(dataEfetivaFTFieldSet, 'possoFazerEsteCursoComercial') 
2516						  
2517      tereiCertificadoComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiCertificadoComercial') 
2518   
2519      tereiDiplomaComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiDiplomaComercial') 
2520   
2521      precisoEstagiarComercial = getStringValue(dataEfetivaFTFieldSet, 'precisoEstagiarComercial') 
2522   
2523      comoMeMatricularComercial = getStringValue(dataEfetivaFTFieldSet, 'comoMeMatricularComercial') 
2524   
2525      oQueMaisPrecisoSaberComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueMaisPrecisoSaberComercial') 
2526       
2527      normalizedModalidadeName  = "" 
2528   
2529    /> 
2530	 
2531    <div style="display: none;">ElasticSearchNaoRetornarFiltro </div> 
2532    <input type="hidden" name="codigoFT" value="${codigoFT}" /> 
2533    <input type="hidden" name="articleId" value="${articleId}" /> 
2534   
2535    <input type="hidden" name="dataEfetivaSTR" value="${dataEfetivaSTR}" /> 
2536     
2537    <input type="hidden" name="codUnidadeSelecionada" value="" /> 
2538   
2539    <#list categories as category> 
2540       
2541      <#assign 
2542        vocabulary = getVocabulary(category.getVocabularyId()) 
2543      /> 
2544   
2545      <#if normalizer.normalize(vocabulary.getName()) == nomeVocabularioTipoCurso> 
2546   
2547        <#assign 
2548          categoriaTipoCurso = category 
2549          normalizedCategoryName = normalizer.normalize(category.getName()) 
2550        /> 
2551         
2552        <input type="hidden" name="tipoCurso" value="${normalizedCategoryName}" /> 
2553         
2554      <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioUnidades> 
2555   
2556        <input type="hidden" name="unidades" value="${category.getCategoryId()}" data-unidade="${category.getName()}" /> 
2557       
2558      <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioModalidade> 
2559     
2560      <#assign 
2561          categoriaModalidade = category 
2562          normalizedModalidadeName = normalizer.normalize(category.getName()) 
2563           
2564        /> 
2565         
2566        <input type="hidden" name="modalidades" value="${normalizedModalidadeName}" /> 
2567         
2568      <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioFormato> 
2569      <#assign 
2570        nomeFormato = category.getName() 
2571      /> 
2572        
2573        
2574       <#assign idFormato = category.getCategoryId() /> 
2575        <#if nomeFormato == "Presencial + EAD" > 
2576            <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="Presencial + EAD" /> 
2577        <#else> 
2578        	<input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="${category.getName()}" /> 
2579        </#if> 
2580      </#if> 
2581    </#list> 
2582   
2583    <#assign xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='imagemComercial']")> 
2584   
2585    <#if xPathSelector.selectSingleNode(dataEfetivaFTFieldSet)?? > 
2586   
2587      <#assign imagemStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()> 
2588      <#if imagemStr?contains("{") > 
2589        <#assign 
2590          imagemJson = jsonFactoryUtil.createJSONObject(imagemStr) 
2591          imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId')) 
2592          dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
2593          dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper") 
2594          fileEntry = dl.getFileEntry(imagemId) 
2595          imagemAlt = imagemJson.get('alt') 
2596          imagemUrl = dlURLHelper.getDownloadURL(fileEntry, fileEntry.getFileVersion(), themeDisplay,null) 
2597        /> 
2598      <#else> 
2599        <#assign imagemUrl = ""> 
2600      </#if>   
2601   
2602    <#else> 
2603      <#assign imagemUrl = ""> 
2604    </#if> 
2605    
2606    
2607    <#assign  
2608          
2609        URLCodec = staticUtil["com.liferay.portal.kernel.util.URLCodec"]  
2610        HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"]  
2611       StringPool = staticUtil["com.liferay.petra.string.StringPool"]  
2612       dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")  
2613        
2614         xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='quaisMateriaisComercial']") 
2615         quaisMateriaisComercialPDFStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue() 
2616     /> 
2617	 
2618    <#if quaisMateriaisComercialPDFStr?contains('classPK') > 
2619     
2620      <#assign  
2621         
2622       PDFJson = jsonFactoryUtil.createJSONObject(quaisMateriaisComercialPDFStr) 
2623       classPKNumber = PDFJson.classPK?number 
2624       fileEntry = dlFileEntryLocalService.getDLFileEntry(classPKNumber) 
2625       folderId = fileEntry.getFolderId() 
2626       title = fileEntry.getTitle() 
2627        
2628       quaisMateriaisComercialPDFUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + folderId +  StringPool.SLASH + URLCodec.encodeURL(HtmlUtil.unescape(title)) 
2629       /> 
2630     
2631    <#else> 
2632      <#assign quaisMateriaisComercialPDFUrl = ""> 
2633    </#if> 
2634     
2635    <#function getFirstArticleStructure categoryId structureName> 
2636                <#attempt> 
2637                        <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search")> 
2638                        <#assign companyId = themeDisplay.getCompanyId()> 
2639                        <#assign groupId = themeDisplay.getScopeGroupId()> 
2640                        <#assign articles = searchImpl.findArticlesByCategoryIds(companyId, groupId, structureName, [categoryId], true, 0, 1)> 
2641                        <#if articles?size gt 0> 
2642                                <#return articles?first> 
2643                        </#if> 
2644                        <#return ''> 
2645                <#recover> 
2646                                <#return ''> 
2647                </#attempt> 
2648        </#function> 
2649 
2650  
2651  <#assign  
2652    nomeTipoCurso = categoriaTipoCurso.getName() 
2653    nomeCategoriaTipoCurso = categoriaTipoCurso.getName() 
2654    idTipoCurso = categoriaTipoCurso.getCategoryId() 
2655         /> 
2656         <input type="hidden" name="nomeCategoriaTipoCurso" value="${nomeCategoriaTipoCurso}" /> 
2657 
2658      <#if nomeTipoCurso?contains("Ensino Médio Técnico")> 
2659 
2660        <#assign  
2661        nomeTipoCurso = categoriaTipoCurso.getName() 
2662        />  
2663         
2664        <input type="hidden" name="idTipoCurso" value="${idTipoCurso}" /> 
2665 
2666        <#elseif (nomeTipoCurso?contains("cnico") && !nomeTipoCurso?contains("EAD") ) || nomeTipoCurso?contains("Livre") > 
2667 
2668        <#assign  
2669         nomeTipoCurso = "Cursos "+ categoriaTipoCurso.getName() + "s" 
2670        /> 
2671 
2672      <#else> 
2673          <#assign  
2674              nomeTipoCurso = categoriaTipoCurso.getName() 
2675          />  
2676        <#assign nomeTipoCurso = categoriaTipoCurso.getName()/>  
2677    
2678    </#if> 
2679     
2680    <#--  Caso o curso seja do formato hibrido, busca o webcontent da pasta Onde as aulas vão acontecer - hibrido  --> 
2681    <#if nomeFormato == "Presencial + EAD"> 
2682        <#assign 
2683                hibridoStructure = getFirstArticleStructure(idFormato,"formato-hibrido") 
2684                documentHibrido = saxReaderUtil.read(hibridoStructure.getContent()) 
2685                rootElement = documentHibrido.getRootElement() 
2686                xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoFormatoHibrido']") 
2687        /> 
2688        <#if xPathSelector.selectSingleNode(rootElement)?? > 
2689              <#assign txtHibrido = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
2690              <input type="hidden" name="textoFormatoHibrido" value="${txtHibrido}"/> 
2691        </#if>               
2692  	</#if>               
2693     
2694     
2695    <#--  dados de compartilhamento  --> 
2696    <@liferay_util["html-top"]> 
2697        <meta name="image" property="og:image" content="${imagemUrl}"> 
2698        <meta property="og:image:width" content="1024"> 
2699    </@> 
2700    <#--  dados de compartilhamento  --> 
2701       
2702     
2703    <#assign  
2704      webContentServiceUtil = serviceLocator.findService("br.senac.services.service.WebContentServiceUtil") 
2705 
2706      temasMercadologicos = webContentServiceUtil.getTemasPorArticleId(themeDisplay.getScopeGroupId(), journalArticle) 
2707      categoriesIdiomas = temasMercadologicos?filter(c -> c.getName()?lower_case?contains("idioma")) 
2708      hasIdiomas = categoriesIdiomas?has_content 
2709      hasEMED = normalizedModalidadeName?contains("ensino-medio") 
2710    /> 
2711 
2712    <#function getManutencao> 
2713 
2714      <#assign manutencaoStructure = getFirstArticleStructure(idTipoCurso,"manutencoes") /> 
2715      <#if manutencaoStructure == ""> 
2716        <#return {"bolsa":"", "compra":"", "rodape":""} /> 
2717      </#if> 
2718      <#assign  
2719        txtBolsa = "" 
2720        txtCompra = "" 
2721        txtRodape = "" 
2722        content = saxReaderUtil.read(manutencaoStructure.getContent()) 
2723        rootElement = content.getRootElement() 
2724      /> 
2725      <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoBolsa']") /> 
2726      <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" > 
2727        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoBolsa']") /> 
2728        <#assign txtBolsa = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
2729      </#if> 
2730      <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoCompra']") /> 
2731      <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" > 
2732        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoCompra']") /> 
2733        <#assign txtCompra = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
2734      </#if> 
2735      <#if txtCompra != "" || txtBolsa != ""> 
2736        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoRodape']") />   
2737        <#assign txtRodape = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
2738      </#if> 
2739 
2740      <#return {"bolsa": txtBolsa, "compra": txtCompra, "rodape": txtRodape} /> 
2741 
2742    </#function> 
2743 
2744    <#assign manutencao = getManutencao() /> 
2745    <input type="hidden" id="manutencao-compra" value="${manutencao.compra}" /> 
2746    <input type="hidden" id="manutencao-bolsa" value="${manutencao.bolsa}" /> 
2747     
2748    <div class="${prefix}-header-curso__image"> 
2749      <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> loading="lazy"> 
2750      <div class="${prefix}-header-curso__tag-formato bg-nivel-${normalizedCategoryName}"> 
2751        <#if hasIdiomas> 
2752          <span>${nomeTipoCurso}</span> 
2753        <#else> 
2754          <span>${nomeTipoCurso} | ${nomeFormato}</span> 
2755        </#if> 
2756      </div> 
2757    </div> 
2758   
2759    <section id="curso-info"> 
2760      <div class="ssp-card-detalhe-curso__container"> 
2761   
2762          <div class="ssp-card-detalhe-curso"> 
2763   
2764          <div class="ssp-card-detalhe-curso__tag-color-tipo bg-nivel-${normalizedCategoryName}"></div> 
2765   
2766            <div class="container"> 
2767            
2768              <#if nomeFormato?contains("ao-vivo") > 
2769                  <span class="ssp-card-detalhe-curso__tag-ao-vivo">Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo</span> 
2770                   
2771              </#if> 
2772 
2773              <div class="ssp-card-detalhe-curso__content"> 
2774                <div> 
2775 
2776                    <!-- <#if nomeTipoCurso?contains("Ensino Médio Técnico")> 
2777 
2778                     <p class="ssp-txt-emed__inscricoes-aberta">Inscrições abertas</p> 
2779 
2780                    </#if> --> 
2781 
2782                    <!-- rever a lógica da chama de inscricoes abertas --> 
2783 
2784                    <h1 class="ssp-card-detalhe-curso__title">${tituloComercial}</h1> 
2785                    <input type="hidden" name="tituloComercial" value="${tituloComercial}" /> 
2786 
2787                    <div class="ssp-card-detalhe-curso__description">${objetivo}</div> 
2788                </div> 
2789                <div class="ssp-card-detalhe-curso__secunday-info-content"> 
2790 
2791                  <#if nomeFormato?contains("ao-vivo") > 
2792                    <span class="d-md-none"> 
2793                      <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#" style="color: #ff9057;">${categoriaTipoCurso.getName()}</a> 
2794                      <#if !hasIdiomas> 
2795                        <span> | ${nomeFormato}</span> 
2796                      </#if> 
2797                    </span> 
2798 
2799                  <#else> 
2800                    <span class="d-md-none"> 
2801                      <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#">${categoriaTipoCurso.getName()}</a>  
2802                      <#if !hasIdiomas> 
2803                        <span> | ${nomeFormato}</span> 
2804                      </#if> 
2805                    </span> 
2806 
2807                  </#if> 
2808 
2809                  <p class="ssp-card-detalhe-curso__secundary-info-carga-horaria">${cargaHoraria} horas</p> 
2810                </div> 
2811              </div> 
2812              <div class="ssp-saiba-mais-curso-accordion"> 
2813   
2814                  <#if (possoFazerEsteCursoComercial?length > 0)> 
2815                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2816                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Posso fazer este curso?</div> 
2817                        <div class="ssp-saiba-mais-curso-accordion__contents">${possoFazerEsteCursoComercial}</div> 
2818                    </div> 
2819									 
2820                  </#if> 
2821   
2822                   <#if (oQueVouAprenderComercial?length > 0) > 
2823                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2824                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que vou aprender?</div> 
2825                        <div class="ssp-saiba-mais-curso-accordion__contents" id="plano-curso">${oQueVouAprenderComercial}</div> 
2826                    </div> 
2827                  </#if> 
2828   
2829                  <#if (comoVouAprenderComercial?length > 0)> 
2830                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2831                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como vou aprender?</div> 
2832                        <div class="ssp-saiba-mais-curso-accordion__contents">${comoVouAprenderComercial}</div> 
2833                    </div> 
2834                  </#if> 
2835                   
2836                                  
2837                  <div class="ssp-saiba-mais-curso-accordion__body"> 
2838                      <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Quais materiais vou precisar?</div> 
2839                      <#if nomeTipoCurso?contains("Ensino Médio Técnico") > 
2840                        <div class="ssp-saiba-mais-curso-accordion__contents"> 
2841                          Desenvolvemos os materiais e disponibilizamos tudo para você!<br/><br/>Também temos bibliotecas físicas e virtuais, além de parceria com a Microsoft, que garante acesso à plataforma Teams para conferir aulas, avisos e materiais da sua turma. 
2842                        </div> 
2843                      <#else> 
2844                        <#if (quaisMateriaisComercialPDFUrl?length > 0)> 
2845                          <div class="ssp-saiba-mais-curso-accordion__contents"> 
2846                            <a href="${quaisMateriaisComercialPDFUrl}" target="_blank"><i class="fa fa-download" aria-hidden="true"></i> Confira os materiais que você precisará.</a> 
2847                          </div> 
2848                        <#else> 
2849                          <div class="ssp-saiba-mais-curso-accordion__contents">Inicialmente, não há lista de materiais para este curso. Mas confirme em aula se será necessário comprar algum item.</div> 
2850                        </#if> 
2851                    </#if> 
2852                  </div> 
2853   
2854                  <#if (tereiDiplomaComercial?length > 0)> 
2855                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2856                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei diploma?</div> 
2857                        <div class="ssp-saiba-mais-curso-accordion__contents">${tereiDiplomaComercial}</div> 
2858                    </div> 
2859                  </#if> 
2860                   
2861                  <#if (tereiCertificadoComercial?length > 0)> 
2862                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2863                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei certificado?</div> 
2864                        <div class="ssp-saiba-mais-curso-accordion__contents">${tereiCertificadoComercial}</div> 
2865                    </div> 
2866                  </#if> 
2867   
2868                  <#if (comoMeMatricularComercial?length > 0)> 
2869                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2870                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como me matricular?</div> 
2871                        <div class="ssp-saiba-mais-curso-accordion__contents">${comoMeMatricularComercial}</div> 
2872                    </div> 
2873                  </#if> 
2874   
2875                  <#if (precisoEstagiarComercial?length > 0)> 
2876                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2877                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Preciso estagiar?</div> 
2878                        <div class="ssp-saiba-mais-curso-accordion__contents">${precisoEstagiarComercial}</div> 
2879                    </div> 
2880                  </#if> 
2881   
2882   
2883                  <#if (oQueMaisPrecisoSaberComercial?length > 0)> 
2884                    <div class="ssp-saiba-mais-curso-accordion__body"> 
2885                    <#if nomeTipoCurso?contains("Ensino Médio Técnico") > 
2886                        <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Estudo em outra escola, como funciona a transferência?</div> 
2887                    <#else> 
2888                      <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que mais preciso saber?</div> 
2889                    </#if> 
2890                        <div class="ssp-saiba-mais-curso-accordion__contents">${oQueMaisPrecisoSaberComercial}</div> 
2891                    </div> 
2892                  </#if> 
2893 
2894                  <!-- Info para EMED --> 
2895 
2896                  <#if nomeTipoCurso?contains("Ensino Médio Técnico") > 
2897 
2898                    <div class="ssp-emed__vantagens-content"> 
2899                                                                                                         
2900                      <p>Conheça <span>mais vantagens</span> do Ensino Médio Técnico no Senac.</p> 
2901                      <a href="/ensino-medio-tecnico" class="btn">Saiba mais</a> 
2902                   
2903                    </div> 
2904   
2905                  <#elseif nomeFormato?contains("Presencial") && nomeFormato?contains("EAD") && !nomeTipoCurso?contains("Idioma")> 
2906   
2907                    <!-- Info para híbrido --> 
2908   
2909                    <div class="ssp-emed__vantagens-content ${normalizedCategoryName}"> 
2910                                                                                                         
2911                      <p>Quer saber mais sobre nossos <span>cursos com aulas presenciais e a distância</span>?</p> 
2912                      <a href="/presencial-ead" class="btn">Saiba mais</a> 
2913                   
2914                    </div> 
2915                     
2916                  <#else> 
2917                     
2918                    <!-- <div class="ssp-emed__vantagens-content ${normalizedCategoryName}"> 
2919                                                                                                         
2920                      <p>Conheça <span>mais vantagens</span>?</p> 
2921                      <a href="#" class="btn">Saiba mais</a> 
2922                   
2923                    </div> --> 
2924                     
2925                  </#if> 
2926                                    
2927   
2928                  <!-- Slider para cursos de Cozinheiro e Garçom --> 
2929       
2930                  <#if codigoFT=="14125"> 
2931       
2932                    <div> 
2933   
2934                      <h6 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">Quer participar do processo seletivo? Confira todas as etapas:</h6> 
2935   
2936           
2937                      <div class="slider-passo-passo__cursos-cozinha"> 
2938           
2939                          <div class="ssp-passo-passo-cozinheiro_card"> 
2940                           
2941                              <div> 
2942   
2943                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6> 
2944   
2945                                  <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos pré-requisitos para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link" href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?" o cronograma de abertura das inscrições do processo seletivo. </p> 
2946               
2947                              </div> 
2948                             
2949               
2950                          </div> 
2951               
2952                          <div class="ssp-passo-passo-cozinheiro_card"> 
2953               
2954                              <div> 
2955               
2956                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6> 
2957               
2958                                  <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no site, acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As inscrições podem ser encerradas antes da data divulgada, quando alcançarmos 10 inscrições por vaga.</p> 
2959               
2960                              </div> 
2961                                   
2962                          </div> 
2963           
2964                          <div class="ssp-passo-passo-cozinheiro_card"> 
2965               
2966                              <div> 
2967               
2968                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6> 
2969               
2970                                  <p class="ssp-passo-passo-cozinheiro_card-txt"> 
2971                                    Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as orientações sobre envio dos documentos necessários. 
2972                                  </p> 
2973                                 
2974               
2975                              </div> 
2976                                   
2977                          </div> 
2978   
2979                          <div class="ssp-passo-passo-cozinheiro_card"> 
2980               
2981                            <div> 
2982             
2983                                <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6> 
2984             
2985                                <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários. 
2986                                    </p> 
2987                               
2988             
2989                            </div> 
2990                                 
2991                        </div> 
2992           
2993                          <div class="ssp-passo-passo-cozinheiro_card"> 
2994               
2995                              <div> 
2996               
2997                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6> 
2998               
2999                                  <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3000                                    Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.  
3001                                  </p> 
3002               
3003                              </div> 
3004                                   
3005                          </div> 
3006               
3007                          <div class="ssp-passo-passo-cozinheiro_card"> 
3008               
3009                              <div> 
3010               
3011                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6> 
3012               
3013                                  <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3014                                    Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos, inclusive os exames solicitados no e-mail.                            
3015                                  </p> 
3016               
3017                              </div> 
3018                                   
3019                          </div> 
3020           
3021                          <div class="ssp-passo-passo-cozinheiro_card"> 
3022               
3023                              <div> 
3024               
3025                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6> 
3026               
3027                                  <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3028                                    Teve aprovação em todas as etapas? Parabéns! 
3029   
3030                                    Sua jornada de transformação profissional 
3031                                     
3032                                    começará com o início das aulas. Mas se não 
3033                                     
3034                                    conseguiu dessa vez, não desanime. Sempre estamos com 
3035                                     
3036                                    vagas abertas para diversos cursos.                                                           
3037                                  </p> 
3038               
3039                              </div> 
3040                                   
3041                          </div> 
3042               
3043                           
3044                      </div> 
3045           
3046                    </div> 
3047   
3048                    <#elseif codigoFT=="15390" > 
3049   
3050                    <div> 
3051   
3052                      <h6 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">Quer participar do processo seletivo? Confira todas as etapas:</h6> 
3053           
3054                      <div class="slider-passo-passo__cursos-cozinha"> 
3055           
3056                        <div class="ssp-passo-passo-cozinheiro_card"> 
3057                         
3058                          <div> 
3059   
3060                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6> 
3061   
3062                                  <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos pré-requisitos para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link" href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?" o cronograma de abertura das inscrições do processo seletivo. </p> 
3063               
3064                              </div> 
3065                           
3066             
3067                        </div> 
3068             
3069                        <div class="ssp-passo-passo-cozinheiro_card"> 
3070             
3071                              <div> 
3072               
3073                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6> 
3074               
3075                                  <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no site, acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As inscrições podem ser encerradas antes da data divulgada, quando alcançarmos 10 inscrições por vaga.</p> 
3076               
3077                              </div> 
3078                                 
3079                        </div> 
3080         
3081                        <div class="ssp-passo-passo-cozinheiro_card"> 
3082             
3083                              <div> 
3084               
3085                                  <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6> 
3086               
3087                                  <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3088                                    Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as orientações sobre envio dos documentos necessários. 
3089                                  </p> 
3090                                 
3091               
3092                              </div> 
3093                                 
3094                        </div> 
3095   
3096                        <div class="ssp-passo-passo-cozinheiro_card"> 
3097             
3098                            <div> 
3099             
3100                                <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6> 
3101             
3102                                <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários. 
3103                                    </p> 
3104                               
3105             
3106                            </div> 
3107                               
3108                      </div> 
3109         
3110                        <div class="ssp-passo-passo-cozinheiro_card"> 
3111             
3112                            <div> 
3113             
3114                                <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6> 
3115             
3116                                <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3117                                  Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.  
3118                                </p> 
3119             
3120                            </div> 
3121                                 
3122                        </div> 
3123             
3124                        <div class="ssp-passo-passo-cozinheiro_card"> 
3125             
3126                            <div> 
3127             
3128                                <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6> 
3129             
3130                                <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3131                                  Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos, inclusive os exames solicitados no e-mail.                            
3132                                </p> 
3133             
3134                            </div> 
3135                                 
3136                        </div> 
3137         
3138                        <div class="ssp-passo-passo-cozinheiro_card"> 
3139             
3140                            <div> 
3141             
3142                                <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6> 
3143             
3144                                <p class="ssp-passo-passo-cozinheiro_card-txt"> 
3145                                  Teve aprovação em todas as etapas? Parabéns! 
3146   
3147                                  Sua jornada de transformação profissional 
3148                                   
3149                                  começará com o início das aulas. Mas se não 
3150                                   
3151                                  conseguiu dessa vez, não desanime. Sempre estamos com 
3152                                   
3153                                  vagas abertas para diversos cursos.                                                           
3154                                </p> 
3155             
3156                            </div> 
3157                                 
3158                        </div> 
3159             
3160                         
3161                    </div> 
3162   
3163                  </div> 
3164   
3165                  </#if> 
3166                   
3167                  <!-- Final Slider para cursos de Cozinheiro e Garçom --> 
3168   
3169              </div> 
3170            </div> 
3171          </div> 
3172      </div> 
3173    </section> 
3174  <#assign  
3175    dNoneSelectUnidade = ''  
3176    mostrarUnidades = !nomeFormato?contains("ao-vivo") 
3177    isEMED = normalizedCategoryName?contains("ensino-medio-tecnico") 
3178    isAprendizagem = normalizedCategoryName?contains("jovem-aprendiz") 
3179  /> 
3180 
3181  <#if nomeFormato?contains("ao-vivo") > 
3182     <#assign dNoneSelectUnidade = 'd-none' /> 
3183  </#if> 
3184 
3185  <#if isEMED || isAprendizagem> 
3186    <section class="ssp-section-selecione-unidade ssp-section ${dNoneSelectUnidade}" style="background:#2B2E41"> 
3187      <div class="container"> 
3188 
3189        <div class="ssp-container-selecione-unidade" style="max-width: 815px; margin: auto;"> 
3190          <div class="ssp-container_ofertas__title"> 
3191            <h3 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom"> 
3192               
3193              Selecione uma unidade para conhecer as próximas turmas: 
3194 
3195            </h3> 
3196          </div> 
3197 
3198          <div class="ssp-container__form-select"> 
3199            <select id="unidades-ofertas" class="form-control" name="unidades-ofertas"> 
3200              <option value="">Selecione uma unidade</option> 
3201            </select> 
3202          </div> 
3203 
3204        </div> 
3205 
3206        <div class="ssp-ofertas__box-endereco-unidade"> 
3207          <i class="icon-map-adress"></i> 
3208          <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a> 
3209        </div> 
3210 
3211      </div> 
3212 
3213    </section> 
3214  <#else> 
3215    <section class="ssp-section-selecione-unidade ssp-section" style="background:#2B2E41"> 
3216        <div class="container"> 
3217          <div class="ssp-container-selecione-unidade ${dNoneSelectUnidade} row no-gutters mb-lg-8"> 
3218            <div class="ssp-container_ofertas__title"> 
3219              <h3 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom ssp-detalhe-curso-titulo-filter">Escolha a unidade e conheça as turmas disponíveis:</h3> 
3220            </div> 
3221          </div> 
3222          <div class="row ssp-filters-px justify-content-center"> 
3223            <div class="col-12 col-lg ${dNoneSelectUnidade} px-md-0 order-1"> 
3224              <div class="ssp-container-selecione-unidade row no-gutters"> 
3225                <div class="col-12"> 
3226                  <div class="ssp-container__form-select mx-auto"> 
3227                    <label for="unidades-ofertas" class="ssp-switch-label ssp-switch-label-section mx-0 d-none d-lg-block">Selecione uma unidade:</label>   
3228                    <select id="unidades-ofertas" class="form-control" name="unidades-ofertas"></select> 
3229                  </div> 
3230                </div> 
3231              </div> 
3232            </div> 
3233             
3234            <div id="ssp-alternadores" class="col mt-5 mt-lg-0 ${(isEMED || isAprendizagem)?then('d-none', '')} px-md-0 order-3 order-lg-2" style="max-width: 480px; display: none;"> 
3235              <div class="row no-gutters ssp-switch-label ssp-switch-label-section mx-0">Filtre por:</div> 
3236              <div class="row no-gutters mt-4"> 
3237                <#assign 
3238                  mostrarFiltroInscricao = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || nomeTipoCurso?contains("Livre") || nomeTipoCurso?contains("Extensão") 
3239                  mostrarFiltroBolsa = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || nomeTipoCurso?contains("Livre") 
3240                /> 
3241                 
3242                 
3243                <#if mostrarFiltroInscricao && mostrarFiltroBolsa> 
3244                  <div class="ssp-switch-divider d-md-none my-4"></div> 
3245                </#if> 
3246                 
3247                <#if mostrarFiltroInscricao> 
3248                  <div class="col-12 col-lg"> 
3249                    <div class="d-flex justify-content-between justify-content-lg-start"> 
3250                      <label class="ssp-switch order-2 order-lg-1"> 
3251                        <input type="checkbox" id="chkInscricao"> 
3252                        <span class="ssp-switch-slider round"></span> 
3253                      </label> 
3254                      <label for="chkInscricao" class="ssp-switch-label order-1 order-lg-2">Comprar agora</label>   
3255                    </div> 
3256                  </div> 
3257                </#if> 
3258                 
3259 
3260                <#if mostrarFiltroBolsa> 
3261                  <div class="col-12 col-lg"> 
3262                    <div class="d-flex justify-content-between justify-content-lg-start"> 
3263                      <label class="ssp-switch order-2 order-lg-1">             
3264                        <input type="checkbox" id="chkBolsa"> 
3265                        <span class="ssp-switch-slider ssp-switch-slider-secondary round"></span> 
3266                      </label> 
3267                      <label for="chkBolsa" class="ssp-switch-label order-1 order-lg-2">Bolsas de estudo</label> 
3268                    </div> 
3269                  </div> 
3270                </#if> 
3271              </div> 
3272            </div> 
3273 
3274            <div class="col-12 order-2 order-lg-3"> 
3275              <div class="row ${mostrarUnidades?then('text-center text-lg-left', 'text-center')}"> 
3276                <div id="msgFiltroAplicado" class="col-12 ssp-switch-label-message" style="display: none;"> 
3277                  <div class="row no-gutters"> 
3278                    <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'ml-auto')}">Filtro aplicado com sucesso.&nbsp;</span> 
3279                    <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'mr-auto')}">Confira o resultado.</span> 
3280                  </div> 
3281                </div> 
3282              </div> 
3283            </div> 
3284          </div>      
3285             
3286          <div class="ssp-ofertas__box-endereco-unidade ${dNoneSelectUnidade}"> 
3287            <i class="icon-map-adress"></i> 
3288            <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a> 
3289          </div> 
3290     
3291        </div> 
3292     
3293      </section> 
3294    </#if> 
3295   
3296     
3297      <!--  EMED	 --> 
3298      <section class="ssp-ofertas-emed__section d-none"> 
3299 
3300        <h2 class="title-section-white" id="titulo-emed"></h2> 
3301 
3302        <div class="ssp-ofertas-emed__filtro-content container"> 
3303 
3304            <button type="button" value="0010" class="btn btn-filtro btn--filtro-ativo">TURMAS - 1º ANO</button> 
3305 
3306            <button type="button" value="0020" class="btn btn-filtro">TURMAS - 2º ANO</button> 
3307 
3308            <button type="button" value="0030" class="btn btn-filtro">TURMAS - 3º ANO</button> 
3309 
3310        </div> 
3311         
3312    <div class="ssp-ofertas-emed__card-container"> 
3313 
3314      <div class="ssp-slick-ofertas-emed"> 
3315       
3316      </div> 
3317     
3318    </div> 
3319       
3320      </section> 
3321       
3322      <!-- FIM EMED -->	 
3323   
3324    <section id="ssp-section-response" class="ssp-section" style="background: #2a2e43; position: relative;"> 
3325   
3326      <div id="turmas-container" class="container"> 
3327   
3328        <div id="informe-novas-turmas"> 
3329          <div style="display: flex; flex-wrap: nowrap;"> 
3330   
3331            <a class="prev-mobile d-lg-none d-xl-none nextPrevOpacity" href="#" > 
3332              <i class="fas fa-chevron-left"></i> 
3333            </a> 
3334   
3335            <h2 id="ssp-h3-turmas" class="ssp-section-title ssp-card-oferta-curso__section-title text-capitalize" style="font-weight: bold;text-transform: uppercase; display: none;">Turmas</h2> 
3336   
3337            <a href="#" class="next-mobile d-lg-none d-xl-none" > 
3338              <i class="fas fa-chevron-right"></i> 
3339            </a> 
3340   
3341          </div> 
3342           
3343       
3344          <div  class="oferta-slick-area oferta-slick-area--md-bleed slider-container"> 
3345     
3346          </div> 
3347        </div> 
3348          
3349        <#if !isEMED> 
3350            <div class="ssp-card-oferta-curso__sem-vaga d-none" style="margin: auto;"> 
3351       
3352              <h3 class="ssp-card-oferta-curso__sem-vaga-title"> 
3353                Estude com a gente na próxima turma! 
3354              </h3> 
3355           
3356              <p class="ssp-card-oferta-curso__sem-vaga-description"> 
3357                Registre seu interesse e avisaremos você quando surgirem novas vagas. 
3358              </p> 
3359            </div> 
3360        <#else> 
3361          <div class="sem-vaga-emed container p-0 d-none"> 
3362              <div> 
3363                <div class="col-md-12 col-xs-12 pt-10 pb-10"> 
3364         
3365                  <!--slick slider--> 
3366                  <div class="slick-area-emed slick-area-emed--md-bleed"> 
3367         
3368                    <div class="slick-area__item"> 
3369         
3370                      <div class="ssp-emed__card-slider"> 
3371         
3372                        <div class="ssp-emed__card-slider-body"> 
3373                          <h2 class="ssp-emed__section__titleCard"> 
3374                            <i class="fal fa-users-class"></i> 
3375                            <div><lfr-editable id="emed-aulas-title" type="rich-text">Turmas</lfr-editable></div> 
3376                          </h2> 
3377                          <lfr-editable id="txt_emed_aulas" type="rich-text"> 
3378                            <div class="ssp-emed__section__introCard"><strong>Estude com a gente na próxima turma!</strong></div> 
3379                            <div class="ssp-emed__section__textCard"> 
3380                              <span class="texto"> 
3381                                Registre seu interesse e avisaremos você sobre a abertura das inscrições para o próximo ano. 
3382                              </span> 
3383                              <span class="ssp-emed__iconWrapper animate__animated animate__fadeOutRight animate__infinite"><i 
3384                                  class="fas fa-chevron-right"></i></span> 
3385                            </div> 
3386                          </lfr-editable> 
3387                          </a> 
3388                        </div> 
3389         
3390                      </div> 
3391         
3392                    </div> 
3393         
3394                    <div class="slick-area__item"> 
3395         
3396                      <div class="ssp-emed__card-slider"> 
3397                        <div class="ssp-emed__card-slider-body"> 
3398         
3399                          <h2 class="ssp-emed__section__titleCard"> 
3400                            <i class="far fa-envelope"></i> 
3401                            <div><lfr-editable id="emed-precos-title" type="rich-text">Registro de Interesse</lfr-editable></div> 
3402                          </h2> 
3403                          <lfr-editable id="txt_emed_boleto" type="rich-text"> 
3404                            <div class="ssp-emed__section__introCardCTA"> 
3405                              Quer receber um aviso sobre as turmas do próximo ano? 
3406                            </div> 
3407                          </lfr-editable> 
3408                          </a> 
3409                          <a class="ssp-emed__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_10" 
3410                            id="btnOptin" href="javascript:;">Sim, me avise.</a> 
3411                        </div> 
3412                      </div> 
3413                    </div> 
3414         
3415                  </div> 
3416                  <!--/slick slider--> 
3417         
3418                </div> 
3419              </div> 
3420            </div> 
3421        </#if> 
3422        <div class="oferta-slick-area_modal"> 
3423        </div> 
3424         
3425        <#if manutencao.rodape != ""> 
3426          <p class="ssp-card-oferta-curso__mensagem-legal">${manutencao.rodape}</p> 
3427        <#else> 
3428            <#if isEMED> 
3429              <p class="ssp-card-oferta-curso__mensagem-legal">O Senac reserva-se o direito de alterar o número de vagas, datas, horários ou cancelar o programa.</p> 
3430            <#else> 
3431              <p class="ssp-card-oferta-curso__mensagem-legal">A turma pode ser cancelada ou ter alterações do número de vagas, datas e horários.</p> 
3432            </#if> 
3433        </#if> 
3434   
3435      </div> 
3436   
3437      <div id="ssp-abrir-pagina-bolsa" class="ssp-card-duvida__bolsa-estudo d-none" style="margin-top: 44px;"> 
3438 
3439        <p>Tem dúvidas sobre bolsas de estudo?</p> 
3440        <a href="/bolsas-de-estudo/como-funciona">Saiba como funciona</a> 
3441						 
3442    </div> 
3443                       
3444   
3445      </section> 
3446 
3447      <section id="section-registro-interesse" class="ssp-section-novas-turmas"> 
3448   
3449          <div class="container"> 
3450   
3451              <div class="ssp-aviso-novas-turmas__content"> 
3452   
3453                  <!-- <div class="pb-sm-5 pb-md-5" > --> 
3454                  <div> 
3455   
3456                      <h6 class="ssp-aviso-novas-turmas__title">Quer receber um aviso por e-mail sobre novas turmas?</h6> 
3457                      <!-- p class="ssp-aviso-novas-turmas__description">Selecione a unidade e registre seu interesse.</p --> 
3458   
3459                  </div> 
3460   
3461          <!--  
3462                  <div class="ssp-container__form-select"> 
3463   
3464                      <select class="form-control select-large select-registro-interesse" id="select-registro-interesse"> 
3465                          <option value="">Selecione uma unidade</option> 
3466                      </select> 
3467   
3468                  </div> 
3469          --> 
3470                  <div class="ssp-btn-group__content-teste"> 
3471   
3472                      <a class="btn btn-primary btn-custom" id="btn-aviso-novas-turmas">Sim, me avise</a> 
3473   
3474                  </div> 
3475   
3476   
3477   
3478              </div> 
3479   
3480   
3481          </div> 
3482   
3483   
3484      </section> 
3485       
3486      <section id="modal-backpack-error" class="ssp-modal-registro-interesse d-none"> 
3487   
3488          <div class="ssp-card-msg-erro"> 
3489   
3490              <div class="ssp-card-msg-sucesso__content"> 
3491                  <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i> 
3492                   <p>Houve um erro ao inserir curso na mochila!</p> 
3493                   <p>Por favor, tente novamente!</p> 
3494              </div> 
3495   
3496              <div> 
3497                  <button id="btn-voltar-modal-backpack-error" class="btn btn-nivel ssp-card-msg-sucesso__btn">Voltar</button> 
3498              </div> 
3499   
3500          </div> 
3501   
3502      </section> 
3503       
3504	<section id="modal-backpack-success" class="ssp-modal-registro-interesse d-none"> 
3505	 
3506		<div class="ssp-modal-mochila-curso"> 
3507	 
3508			<div class="ssp-modal-mochila-curso__header"> 
3509	 
3510				<button class="modal-btn-close" type="button"> 
3511	 
3512					<i class="fal fa-times"></i> 
3513	 
3514				</button> 
3515	 
3516				<h2 class="modal-title">Curso adicionado à mochila!</h2> 
3517				<p class="modal-subtitle">Você incluiu na sua mochila de compras o curso 
3518					<span id="modal-backpack-success__nome-curso"></span> 
3519				</p> 
3520	 
3521			</div> 
3522	 
3523			<div class="ssp-modal-mochila-curso__body"> 
3524	 
3525				<p>A sua vaga só é garantida nesta turma quando você finaliza a 
3526					compra. Deseja concluir agora?</p> 
3527	 
3528			</div> 
3529	 
3530			<div class="ssp-modal-mochila-curso__block-btn-items block-btn-items"> 
3531 
3532				<a class="btn-finalizar-compra btn-mochila-finalizar-compra-success" href="#"> 
3533                    Finalizar compra 
3534                </a> 
3535	 
3536				<button class="btn-continuar-site btn-mochila-continuar-site-success"> 
3537					Continuar no site 
3538				</button>				 
3539	 
3540			</div> 
3541	 
3542	 
3543		</div> 
3544	 
3545	</section> 
3546      
3547</#if> 
3548 
3549<#if nomeTipoCurso?has_content && nomeTipoCurso?contains("Ensino Médio Técnico") > 
3550  <!-- Agende a sua visita -->     
3551  <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search") /> 
3552  <#assign articles = searchImpl.search("EMED - Agende sua visita", {}, themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), false) /> 
3553 
3554  <section id="ssp-emed-visita-sector"> 
3555    <div class="container py-5 pt-lg-0" style="display:none;"> 
3556      <div data-emed="ssp-emed-visita-wrapper" class="ssp-emed-visita-wrapper"> 
3557        <#list articles![] as article> 
3558          <#assign document = saxReaderUtil.read(article.getContent()) /> 
3559          <#assign rootElement = document.getRootElement() /> 
3560 
3561          <#assign 
3562              xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoDoBotao']") 
3563              textoDoBotao = xPathSelector.selectSingleNode(rootElement).getStringValue() 
3564                 
3565              xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='linkBotao']") 
3566              linkBotao = xPathSelector.selectSingleNode(rootElement).getStringValue() 
3567 
3568              xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='ativarBotao']") 
3569              ativarBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()                 
3570          /> 
3571 
3572          <#if ativarBotao?trim == "true"> 
3573            <script>$('#ssp-emed-visita-sector').children().show()</script> 
3574            <div data-emed="ssp-emed-visita-text" class="ssp-emed-visita-text"> 
3575                 
3576                <a href="${linkBotao}">${textoDoBotao}</a> 
3577                 
3578            </div> 
3579            <div class="ssp-emed-visita-icon"> 
3580                <i class="fas fa-route"></i> 
3581            </div> 
3582          </#if> 
3583        </#list> 
3584      </div> 
3585    </div> 
3586  </section> 
3587 
3588 
3589    <!-- Como me matricular EMED --> 
3590 
3591    <section class="ssp-como-me-matricular__section"> 
3592 
3593      <h2 class="title-section-white">Como me matricular?</h2> 
3594 
3595      <div class="container"> 
3596 
3597          <div class="ssp-como-me-matricular__passo-passo-card"> 
3598 
3599              <div class="item-passo"> 
3600                  <img class="item-passo-icone" src="/o/senac-theme/images/icon-escolha-curso.svg" alt=""> 
3601                  <p class="item-passo-title">Escolha o curso</p> 
3602                  <span>Selecione o curso, a unidade do seu interesse e confira as turmas disponíveis.</span> 
3603              </div> 
3604 
3605              <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt=""> 
3606 
3607              <div class="item-passo"> 
3608                  <img class="item-passo-icone" src="/o/senac-theme/images/icon-realize-inscricao.svg" alt=""> 
3609                  <p class="item-passo-title">Adicione à Mochila</p> 
3610                  <span>Faça login ou crie uma conta em nosso site e continue a compra.</span> 
3611              </div> 
3612 
3613              <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt=""> 
3614 
3615              <div class="item-passo"> 
3616                  <img class="item-passo-icone" src="/o/senac-theme/images/icon-aguarde-contato.svg" alt=""> 
3617                  <p class="item-passo-title">Faça a matrícula</p> 
3618                  <span>Todas as etapas são on-line. Para garantir a vaga, preencha todas as informações.</span> 
3619              </div> 
3620 
3621          </div> 
3622 
3623 
3624      </div> 
3625 
3626    </section> 
3627 
3628  </#if> 
3629 
3630   
3631  <div class="ssp-section ssp-section-lg-bottom-slider d-none" id="section-cursos-voce-pode-gostar" style="background-color: #f2f2f2"> 
3632    <div class="container"> 
3633        <h2 class="ssp-section-title"> 
3634          <lfr-editable id="cursos-voce-pode-gostar-title" type="rich-text"> 
3635              Cursos que você pode gostar 
3636          </lfr-editable> 
3637        </h2> 
3638 
3639        <div id="slider-curso"> 
3640 
3641        </div> 
3642 
3643    </div> 
3644  </div> 
3645 
3646 
3647   
3648   
3649  <#-- Section para o item de curso--> 
3650  <div id="curso-item-template"  class="d-none slick-area__item"> 
3651   
3652    <div class="ssp-card-curso" style="height: 288px;"> 
3653   
3654      <a class="ssp-absolute-link ck-curso" href="#a"></a> 
3655   
3656      <div class="ssp-card-curso__image"> 
3657   
3658        <div class="ssp-image-container"> 
3659            <img src="" /> 
3660   
3661        </div> 
3662   
3663      </div> 
3664   
3665      <div class="ssp-card-curso__body"> 
3666   
3667        <div class="ssp-card-curso__color-tag-modalidade"></div> 
3668   
3669        <div class="ssp-card-curso__tags"> 
3670   
3671          <span class="ssp-card-curso__tag-formato-title"></span> 
3672           
3673          <span class="tag-modalidade-title__senac-online d-none">Senac Online - ao vivo</span> 
3674   
3675        </div> 
3676   
3677        <h6 class="ssp-card-curso__title"> 
3678   
3679        </h6> 
3680   
3681        <div class="ssp-card-curso__info"> 
3682   
3683          <span class="ssp-tag bg-white border-nivel-extensao text-nivel-extensao mr-1 btn-inscricoes-abertas">Inscrições abertas</span> 
3684          <span class="ssp-tag bg-white border-primary text-primary btn-bolsas">Bolsas</span> 
3685   
3686        </div> 
3687   
3688      </div> 
3689   
3690    </div> 
3691   
3692  </div> 
3693   
3694  <#function getJournalArticle> 
3695   
3696     
3697    <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
3698    <#assign friendlyURL = themeDisplay.getURLCurrent()?split("/")?last?split("?")?first> 
3699    <#assign groupId = themeDisplay.getSiteGroupId()> 
3700    <#attempt> 
3701   
3702      <#if !friendlyURL?contains("fragment_collections") > 
3703         
3704        <#return journalArticleService.getArticleByUrlTitle(groupId,friendlyURL)> 
3705      <#else> 
3706         
3707        <#return '#erro#'> 
3708      </#if> 
3709       
3710    <#recover> 
3711         
3712      <#return '#erro#'> 
3713    </#attempt> 
3714  </#function> 
3715   
3716  <#function getCategorias primaryKey> 
3717   
3718    <#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3719    <#attempt> 
3720   
3721        <#return categoryService.getCategories("com.liferay.journal.model.JournalArticle", primaryKey)> 
3722   
3723    <#recover> 
3724       
3725      <#return '#erro#'> 
3726    </#attempt> 
3727  </#function> 
3728   
3729  <#function getVocabulary vocabularyId> 
3730   
3731    <#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") /> 
3732    <#attempt> 
3733   
3734        <#return vocabularyService.getVocabulary(vocabularyId)> 
3735   
3736    <#recover> 
3737       
3738      <#return '#erro#'> 
3739    </#attempt> 
3740  </#function> 
3741   
3742  <#function getStringValue dom name> 
3743    <#assign 
3744      seletorSTR = "dynamic-element[@field-reference='"+name+"']" 
3745      xPathSelector = saxReaderUtil.createXPath(seletorSTR) 
3746    /> 
3747    <#if xPathSelector.selectSingleNode(dom)?? > 
3748      <#assign 
3749        valueSTR = xPathSelector.selectSingleNode(dom).getStringValue()?trim 
3750      /> 
3751      <#return valueSTR> 
3752    </#if> 
3753    <#return ''> 
3754  </#function> 
3755   
3756      <!--Modal de Login --> 
3757           
3758      <section id="modal-login" class="ssp-modal-registro-interesse d-none"> 
3759   
3760          <div class="dropdown-menu-modal dropdown-menu-right" id="js-login-dropdown-menu-2" style="width: 340px; max-width: 340px; display: block;"> 
3761   
3762              <div class="px-5"> 
3763                  <i id="btn-close-loginModal" class="fas fa-times btn-close__modal-login"></i> 
3764                  <div class="text-darker-gray py-3">Faça login na sua conta</div> 
3765              </div> 
3766         
3767              <div class="dropdown-divider"></div> 
3768   
3769              <div class="dropdown-menu-arrow"></div> 
3770   
3771              <form id="login_form" class="px-5 py-4" method="post"> 
3772               
3773              <div class="alert alert-danger py-3 d-none" id="mensagem-erro-login" style="background:#f8d7da;border-color:#f5c6cb; color:#a94442"></div> 
3774         
3775                  <div class="form-group"> 
3776                       
3777                      <label for="login-email">E-mail</label> 
3778                      <div class="input-group mb-2"> 
3779                          <div class="input-group-prepend"> 
3780                              <span class="input-group-text"><i class="icon-envelope"></i></span> 
3781                          </div> 
3782                          <input type="text" class="form-control" id="login-email-modal" name="_com_liferay_login_web_portlet_LoginPortlet_login" placeholder="Digite seu e-mail" aria-label="Email" aria-describedby="login-email"> 
3783                      </div> 
3784   
3785                  </div> 
3786   
3787                  <div class="form-group"> 
3788   
3789                      <label for="login-password">Senha</label> 
3790                      <div class="input-group mb-2"> 
3791                          <div class="input-group-prepend"> 
3792                              <span class="input-group-text"><i class="icon-key"></i></span> 
3793                          </div> 
3794                          <input type="password" class="form-control" id="login-password-modal" name="_com_liferay_login_web_portlet_LoginPortlet_password" placeholder="Digite sua senha" aria-label="Password" aria-describedby="login-password"> 
3795                      </div> 
3796   
3797                  </div> 
3798                   
3799                  <div class="pt-1 pb-3"> 
3800                  <small><a href="http://www.sp.senac.br/login-unico/SendPassword" target="_blank">Esqueceu sua senha?</a></small> 
3801                  </div> 
3802                 
3803                  <button type="button" class="btn btn-primary w-100" id="btnLogin" data-login="btnLogin">Entrar</button> 
3804              </form> 
3805               
3806              <div class="dropdown-divider"></div> 
3807   
3808              <div class="px-5 pb-4"> 
3809                  <div class="text-darker-gray py-3">Não tem cadastro?</div> 
3810                  <a href="https://www.sp.senac.br/usuario-unico/InsertUser?destino=${themeDisplay.getPortalURL()+themeDisplay.getURLCurrent()}" target="_blank" class="btn bg-btn-cadastre btn-nivel-livre text-white w-100 ">Cadastre-se</a> 
3811              </div> 
3812   
3813               
3814          </div> 
3815   
3816      </section> 
3817   
3818    <!-- modal registro interesse --> 
3819   
3820 
3821      <section id="modal-registro-interesse" class="ssp-modal-registro-interesse d-none"> 
3822         
3823        <#if !isEMED> 
3824            <div class="ssp-card-registro-interesse"> 
3825       
3826              <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i> 
3827 
3828              <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p> 
3829              <h3 class="ssp-card-registro-interesse__nome-curso"></h3> 
3830 
3831              <div id="unidades-registro-interesse"> 
3832 
3833                  <h4 class="ssp-card-registro-interesse__title-section-itens">Unidade:</h4> 
3834         
3835            <div id="select-unidades-registro-interesse"> 
3836                    <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select> 
3837                  </div> 
3838 
3839                  <div class="ssp-card-registro-interesse__add-mais"> 
3840                      <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a> 
3841                       
3842                      &nbsp; 
3843                       
3844                      <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a> 
3845                  </div> 
3846 
3847              </div> 
3848 
3849              <div id="dias-registro-interesse"> 
3850                  <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Dias da Semana</h4> 
3851 
3852                  <div class="ssp-card-registro-interesse__week-content"> 
3853                      <span id="todosDias" class="ssp-week-day">Todos</span> 
3854                      <span class="ssp-week-day">Seg</span> 
3855                      <span class="ssp-week-day">Ter</span> 
3856                      <span class="ssp-week-day">Qua</span> 
3857                      <span class="ssp-week-day">Qui</span> 
3858                      <span class="ssp-week-day">Sex</span> 
3859                      <span class="ssp-week-day">Sab</span> 
3860                  </div> 
3861 
3862              </div> 
3863 
3864              <div id="periodo-registro-interesse"> 
3865 
3866                  <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Período:</h4> 
3867 
3868                  <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">  
3869 
3870                      <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos"> 
3871                          <input type="checkbox" name="" value="" id="check-todos-periodos"> 
3872                          <label for="check-todos-periodos">Todos</label> 
3873                      </div> 
3874 
3875                      <div class="ssp-card-registro-interesse__check-item"> 
3876                          <input type="checkbox" name="" value="M" id="periodo-m"> 
3877                          <label for="periodo-m">Manhã</label> 
3878                      </div> 
3879 
3880                      <div class="ssp-card-registro-interesse__check-item"> 
3881                          <input type="checkbox" name="" value="T" id="periodo-t"> 
3882                          <label for="periodo-t">Tarde</label> 
3883                      </div> 
3884 
3885                      <div class="ssp-card-registro-interesse__check-item"> 
3886                          <input type="checkbox" name="" value="N" id="periodo-n"> 
3887                          <label for="periodo-n" "="">Noite</label> 
3888                      </div> 
3889 
3890 
3891                  </div> 
3892 
3893              </div> 
3894 
3895              <div class="ssp-card-registro-interesse__card-politica"> 
3896 
3897                  <p class="ssp-card-registro-interesse__card-politica-title"><strong>Política de Privacidade</strong></p> 
3898 
3899                  <p class="ssp-card-registro-interesse__card-politica-text">O Serviço Nacional de Aprendizagem Comercial - Senac, Administração Regional no Estado de São Paulo, inscrito no CNPJ sob nº 03.709.814/0001-98, com sede na Rua Dr. Vila Nova, 228, 7º andar, na cidade de São Paulo, Estado de São Paulo ("Senac São Paulo") atua de maneira transparente e responsável para garantir a proteção dos seus dados pessoais. Por isso, é muito importante para nós que você conheça nossa Política de Privacidade. </p> 
3900 
3901 
3902                  <p class="ssp-card-registro-interesse__card-politica-text"> 
3903                  <b>1. O que é a Política de Privacidade do Senac São Paulo? </b><br> 
3904 
3905                  É o documento que apresenta informações sobre a maneira como coletamos, utilizamos e compartilhamos seus dados pessoais, bem como descreve o conjunto de regras e procedimentos adotados pelo Senac São Paulo para garantir a proteção desses dados. Os seus dados pessoais são coletados quando você se cadastra em nosso site (www.sp.senac.br) para registrar interesse em cursos, participar de eventos, fazer sua matrícula ou se inscrever em bolsas de estudo.  
3906                   
3907                  Nossa Política de Privacidade é pautada pela Lei Geral de Proteção de Dados Pessoais (LGPD), nº 13.709/2018. Comprometemo-nos a cumprir estritamente seus termos assim que ela entrar em vigor. Caso queria saber mais sobre a LGPD, confira.  
3908                  <br><br> 
3909                  <b>2. Como o Senac coleta meus dados pessoais?</b><br> 
3910                   
3911                  Por meio de cadastro em nosso site ou em nossas unidades. Para realizá-lo, você notará que algumas informações são obrigatórias, pois atendem padrões estabelecidos por órgãos da administração pública, como o Ministério da Educação. Além desses dados, as outras informações solicitadas nos ajudam a entender melhor seus interesses e personalizar, ainda mais, seu atendimento.  
3912                  <br><br> 
3913                  <b>3. É possível acessar este site sem fornecer meus dados pessoais?</b><br> 
3914                   
3915                  Sim. Neste caso, podemos coletar dados técnicos da sua navegação como endereço de Protocolo de Internet (endereço IP), registro de acesso, geolocalização do endereço IP, tipo do navegador utilizado, versão do sistema operacional, modelo e características do aparelho utilizado para o acesso, banda de internet, operadora, comportamento de pageview e páginas visitadas, de acordo com cookies liberados ou não por você. (<a href="https://www.sp.senac.br/politica-de-cookies">Conhecer nossa Política de Cookies.</a>) 
3916                  <br><br> 
3917                  <b>4. No caso de acesso com cadastro, quais informações o Senac poderá solicitar? </b><br> 
3918                   
3919                  Nossa coleta de dados pessoais varia de acordo com o tipo de interação que você terá em nosso site, quais produtos ou serviços está procurando.  
3920                   
3921                  Para você saber, relacionamos a seguir os dados  pessoais que podem ser solicitados por nós:  <br> 
3922                   
3923                      - Dados sobre identificação: nome civil, nome social, filiação, nacionalidade, naturalidade, data de nascimento, sexo, estado civil, número e cópia do documento de identificação (CPF, RG/RNE ou outro)<br> 
3924                      - Dados sobre contato: endereço postal, endereço de e-mail, número de telefone<br> 
3925                      - Dados acadêmicos: estabelecimentos de ensino anteriores, certificados e diplomas acadêmicos, histórico escolar, nota do ENEM<br> 
3926                      - Dados profissionais: emprego atual, profissão<br> 
3927                      - Dados de pagamento: nome do titular da conta e número do cartão de crédito<br> 
3928                      - Dados de responsáveis: nome, telefone e número de documento de identidade do responsável legal (em casos de estudante menor de idade) e/ou financeiro <br> 
3929                      - Dados de saúde: informação sobre deficiência física e atestados médicos<br> 
3930                      - Dados de imagem: foto<br> 
3931                      - Dados de renda familiar: situação de emprego e salário de membros da mesma família<br> 
3932                      - Dados técnicos da sua navegação: endereço de Protocolo de Internet (endereço IP), registro de acesso, geolocalização do endereço IP, tipo do navegador utilizado, versão do sistema operacional, modelo e características do aparelho utilizado para o acesso, banda de internet, operadora, comportamento de pageview e páginas visitadas, de acordo com cookies liberados ou não por você. (<a href="https://www.sp.senac.br/politica-de-cookies">Conhecer nossa Política de Cookies</a>)<br> 
3933                   
3934                  <br><br> 
3935                  <b>5. Quantos e quais tipos de cadastros podem ser realizados?</b><br> 
3936                   
3937                  São três tipos de cadastro realizado. Como já comentamos (pergunta 4), eles variam de acordo com a sua experiência e o seu objetivo em nosso site. Por exemplo, se seu objetivo agora é apenas registrar interesse em algum curso livre, você terá que preencher seus dados de identificação e contato, caso queira fazer sua matrícula, deverá preencher também informações sobre pagamento, mas, se optar por se inscrever para bolsa de estudo, terá que fornecer outros documentos específicos, como comprovantes de renda. Confira:<br> 
3938                   
3939                      - Cadastro simples: poderemos coletar dados de identificação e de contato.<br> 
3940                      - Cadastro e inscrição em cursos e outros eventos:  quando você se inscreve em nossos cursos, eventos e até mesmo para participar do nosso vestibular e efetivar a sua matrícula em cursos livres, técnicos, de formação continuada ou superior, por exemplo, poderemos coletar dados dos responsáveis, de identificação, de contato, dados acadêmicos, profissionais, de saúde, de pagamento e de imagem.<br> 
3941                      Importante: também poderemos solicitar o envio de cópia de documentos, de acordo com o curso escolhido por você.<br> 
3942                      - Cadastro e inscrição para bolsas de estudos: poderemos coletar dados de identificação, contato e renda familiar.<br> 
3943                      Importante: também poderemos solicitar o envio de cópia de documentos para comprovar as informações fornecidas.<br> 
3944                   
3945                  <br><br> 
3946                  <b>6. Para quais finalidades meus dados podem ser utilizados?</b><br> 
3947                   
3948                      - Em procedimentos internos relacionados aos nossos serviços e produtos para que você tenha uma experiência positiva durante sua jornada no Senac. Afinal, você precisa ter informações sobre nossos serviços, ter acesso a nossa infraestrutura, ou, por exemplo, poder emprestar livros nas nossas bibliotecas,  realizar pagamentos, enviar reclamações, sugestões, pedidos, entre outros. <br> 
3949                      - Para cumprir obrigações legais a que estamos sujeitos, por exemplo: o pagamento de impostos, fazer o gerenciamento de matrícula, providenciar o reconhecimento de equivalências e de documentos que conferem graus e títulos acadêmicos, emitir certificados e diplomas, realizar o controle de assiduidade e registro de informações acadêmicas.<br> 
3950                      - Para permitir a realização de auditoria de órgãos da administração pública<br> 
3951                      - Em investigações sobre possíveis violações de leis ou de nossas políticas internas<br> 
3952                      - Para estabelecer rede de conexões entre ex-estudantes<br> 
3953                      - Para melhorar sua experiência com o Senac São Paulo, como, por exemplo, disponibilizar intérpretes, fornecer melhores ferramentas ou aprimorar nossos ambientes<br> 
3954                      - Para defender direitos em conflitos judiciais ou extrajudiciais e para proteger nossos direitos e de terceiros e, ainda, para outras finalidades que exijam o seu consentimento, que será solicitado nos termos da legislação vigente. <br> 
3955                   
3956                   
3957                  <b>Importante:</b> usaremos seus dados pessoais somente para atender aos objetivos descritos nesta Política. Se necessário, seus dados poderão ser usados para outras finalidades não conflitantes às finalidades apresentadas nesta Política.  
3958                  <br><br> 
3959                  <b>7. Com quem o Senac pode compartilhar meus dados?</b><br> 
3960                   
3961                      - Com órgãos da administração pública (Ministério da Educação, Secretaria Estadual da Educação, Tribunal de Contas da União, Controladoria Geral da União e demais órgãos relacionados a esses) para cumprimento de obrigações legais e regulatórias.<br> 
3962                      - Com instituições do setor bancário e seguradoras, para gestão e processamento de pagamentos.<br> 
3963                      - Com empresas que tenhamos contratos, parceria e/ou acordos de cooperação, por exemplo, gráficas, para a emissão de cartões e provas.<br> 
3964                      - Com instituições de ensino para validar a autenticidade de documentos.<br> 
3965                      Importante: informaremos você quando houver o compartilhamento de dados para outras finalidades que possam ser incompatíveis com o descrito nesta Política, sempre que exigido pela legislação. 
3966                   
3967                  <br><br> 
3968                  <b>8. Por quanto tempo meus dados serão armazenados?</b> <br> 
3969                   
3970                  Pelo período necessário para que você tenha uma experiência positiva dentro da instituição, atendendo seus interesses e solicitações.  
3971                   
3972                  <b>Importante:</b> poderemos preservar os seus dados por um período superior sempre que exista uma obrigação legal, por exemplo, em relação aos dados utilizados na gestão acadêmica, ou se existirem razões de interesse público (arquivo, investigação científica e histórica, ou para censos educacionais). Nessas ocasiões, sempre que possível, seus dados serão tratados de forma que seja possível manter o seu anonimato.  
3973                  <br><br> 
3974                  <b>9. Quais são as medidas de segurança utilizadas para garantir a proteção dos meus dados pessoais?</b><br> 
3975                   
3976                  Atuamos de maneira transparente e responsável, por meio de padrões de segurança e prevenção confiáveis. Adotamos medidas administrativas, técnicas e físicas para proteger dados pessoais contra perda, roubo, uso indevido, bem como, contra acesso não autorizado, divulgação, alteração e destruição de informações.  
3977                   
3978                  Confira nossas medidas de segurança da informação que buscam garantir a confidencialidade, a integridade e a disponibilidade dos dados coletados: <br> 
3979                   
3980                      - Controlar o acesso a informações, considerando a necessidade de nossos funcionários obterem determinado dado<br> 
3981                      - Proteger infraestruturas tecnológicas contra acessos não autorizados<br> 
3982                      - Monitorar constantemente toda nossa infraestrutura tecnológica <br> 
3983                      - Política de troca de senhas<br> 
3984                      - Política de confidencialidade com funcionários e terceiros<br> 
3985                   
3986                  <br><br> 
3987                  <b>10. É possível que meus dados sejam transferidos para fora do país?</b><br> 
3988                   
3989                  Sim, pois temos parcerias em nível global. Portanto, dados pessoais talvez precisem ser transferidos para outros países, seja em razão dessas parcerias (por exemplo, em caso de intercâmbio de estudantes) ou pela necessidade de armazenamento de dados em servidores estrangeiros, por meio da utilização de servidores em nuvem (cloud). 
3990                   
3991                  Caso seus dados pessoais sejam transferidos para fora do Brasil, adotaremos todos os cuidados para assegurar que essa transferência obedeça às normas e preserve o sigilo de todas as informações coletadas.  
3992                  <br><br> 
3993                  <b>11. Quais são os meus direitos em relação aos dados pessoais fornecidos?</b><br> 
3994                   
3995                  Agora que você já sabe como coletamos, utilizamos e compartilhamos seus dados, é igualmente importante para nós que você conheça quais são os direitos que possui quando nos fornece seus dados pessoais. Caso queira, você poderá: 
3996                   
3997                      - Corrigir seus dados pessoais que estejam incompletos, inexatos ou desatualizados<br> 
3998                      Caso você identifique algum erro em relação aos dados fornecidos, basta solicitar a alteração para nossa equipe. Isso é importante para que as informações sejam utilizadas da maneira correta e seu cadastro fique sempre atualizado. <br> 
3999                      - Cancelar ou revogar o seu consentimento de utilização de dados <br> 
4000                      Você poderá cancelar, a qualquer momento, o consentimento em relação ao uso, pelo Senac São Paulo, dos seus dados pessoais. <br> 
4001                   
4002                   
4003                  <b>Importante:</b> deixaremos de usar seus dados pessoais quando a revogação do seu consentimento for concluída. Sendo assim, qualquer utilização de seus dados pessoais antes da efetivação do cancelamento/revogação é entendido por nós como legal, verdadeiro e autorizado por você.  
4004                   
4005                  Caso queira fazer algum pedido referente a este campo, você deve entrar em contato via e-mail pelo privacidade@sp.senac.br. Poderemos solicitar informações para confirmar sua identidade e seu direito de acesso aos dados solicitados. 
4006                   
4007                  Tenha certeza, trabalharemos sempre de maneira ágil e responsável para atender suas solicitações o mais breve possível, sendo que observaremos os prazos legais quando da vigência da LGPD.  
4008                  <br><br> 
4009                  <b>12. E se essa Política for atualizada?</b><br> 
4010                   
4011                  Caso existam alterações significativas, iremos avisar você o mais breve possível, ou, antes que a nova política entre em vigor. Por isso, recomendamos que consulte este documento sempre que possível e verifique a data da sua última atualização, informada no rodapé desta página.  
4012                  <br><br> 
4013                  <b>13. Como posso tirar minhas dúvidas sobre esta Política?</b><br> 
4014                   
4015                  Fique à vontade para nos enviar qualquer tipo de dúvida sobre esta Política, em privacidade@sp.senac.br. Será um prazer falar com você! 
4016                   
4017                  <br><br> 
4018                   
4019                  <b>Encarregado de Dados do Senac (DPO):</b> 
4020                   
4021                  <br><br> 
4022                  <b>Fernando Sátiro Pereira </b>| Gerente de Tecnologia da Informação do Senac São Paulo 
4023                   
4024                  <br> 
4025                  <b>Contato: privacidade@sp.senac.br</b> 
4026              </p> 
4027                   
4028 
4029              </div> 
4030 
4031              <div class="ssp-card-registro-interesse__check-item"> 
4032                  <input type="checkbox" name="" value="" id="check-politica-privacidade"> 
4033                  <label for="check-politica-privacidade">Aceito a Política de Privacidade</label> 
4034              </div> 
4035 
4036              <div class="text-center mt-5"> 
4037 
4038                  <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a" id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button> 
4039 
4040                  <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p> 
4041 
4042              </div> 
4043 
4044          </div>     
4045   
4046        <#else> 
4047 
4048            <div class="ssp-card-registro-interesse emed"> 
4049 
4050              <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i> 
4051 
4052              <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p> 
4053 
4054              <div class="emed-select-group"> 
4055 
4056                  <h3 class="ssp-card-registro-interesse__title-modal"></h3> 
4057                   
4058                  <div id="unidades-registro-interesse"> 
4059       
4060                      <h4 class="ssp-card-registro-interesse__title-section-itens">Escolha uma unidade</h4> 
4061             
4062                      <div id="select-unidades-registro-interesse"> 
4063                        <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select> 
4064                      </div> 
4065       
4066                      <div class="ssp-card-registro-interesse__add-mais"> 
4067                          <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a> 
4068                           
4069                          &nbsp; 
4070                           
4071                          <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a> 
4072                      </div> 
4073       
4074                  </div> 
4075 
4076              </div> 
4077 
4078               
4079              <div id="periodo-registro-interesse"> 
4080 
4081                  <p class="ssp-card-registro-interesse__title-section-itens">Período:</p> 
4082 
4083                  <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">                   
4084                      <div class="ssp-card-registro-interesse__check-item"> 
4085                          <input type="checkbox" name="" value="M" id="periodo-m"> 
4086                          <label for="periodo-m">Manhã</label> 
4087                      </div> 
4088                       
4089                      <div class="ssp-card-registro-interesse__check-item"> 
4090                          <input type="checkbox" name="" value="T" id="periodo-t"> 
4091                          <label for="periodo-t">Tarde</label> 
4092                      </div> 
4093                       
4094                      <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos"> 
4095                          <input type="checkbox" name="" value="" id="check-todos-periodos"> 
4096                          <label for="check-todos-periodos">Todos</label> 
4097                      </div> 
4098 
4099                  </div> 
4100 
4101              </div> 
4102 
4103              <div id="turmas-registro-interesse"> 
4104 
4105                  <p class="ssp-card-registro-interesse__title-section-itens">Turma:</p> 
4106 
4107                  <div class="ssp-card-registro-interesse__check-itens-content turmas-registro-interesse">  
4108 
4109                      <div class="ssp-card-registro-interesse__check-item"> 
4110                          <input type="checkbox" name="" value="1" id="primeiro"> 
4111                          <label for="primeiro">1º ano</label> 
4112                      </div> 
4113 
4114                      <div class="ssp-card-registro-interesse__check-item"> 
4115                          <input type="checkbox" name="" value="2" id="segundo"> 
4116                          <label for="segundo">2º ano</label> 
4117                      </div> 
4118 
4119                      <div class="ssp-card-registro-interesse__check-item"> 
4120                          <input type="checkbox" name="" value="3" id="terceiro"> 
4121                          <label for="terceiro">3º ano</label> 
4122                      </div> 
4123 
4124                  </div> 
4125 
4126              </div> 
4127 
4128              <div id="msg-transferencia-emed"> 
4129 
4130                  <div class="transferencia-emed-title"> 
4131                      <i class="fas fa-comment-exclamation"></i> 
4132                      <p>Quer se transferir de escola?</p> 
4133                  </div> 
4134 
4135                  <div class="transferencia-emed-link"> 
4136                      <a href="#">Fale direto com a unidade de interesse.</a> 
4137                  </div> 
4138 
4139              </div> 
4140 
4141              <div class="ssp-card-registro-interesse__card-politica"> 
4142 
4143                  <p class="ssp-card-registro-interesse__card-politica-title"><strong>Política de Privacidade</strong></p> 
4144 
4145                  <p class="ssp-card-registro-interesse__card-politica-text">O Serviço Nacional de Aprendizagem Comercial - Senac, Administração Regional no Estado de São Paulo, inscrito no CNPJ sob nº 03.709.814/0001-98, com sede na Rua Dr. Vila Nova, 228, 7º andar, na cidade de São Paulo, Estado de São Paulo ("Senac São Paulo") atua de maneira transparente e responsável para garantir a proteção dos seus dados pessoais. Por isso, é muito importante para nós que você conheça nossa Política de Privacidade. </p> 
4146 
4147                  <p class="ssp-card-registro-interesse__card-politica-text"> 
4148 
4149                      <b>1. O que é a Política de Privacidade do Senac São Paulo? </b><br> 
4150 
4151                      É o documento que apresenta informações sobre a maneira como coletamos, utilizamos e compartilhamos seus dados pessoais, bem como descreve o conjunto de regras e procedimentos adotados pelo Senac São Paulo para garantir a proteção desses dados. Os seus dados pessoais são coletados quando você se cadastra em nosso site (www.sp.senac.br) para registrar interesse em cursos, participar de eventos, fazer sua matrícula ou se inscrever em bolsas de estudo.  
4152 
4153                      Nossa Política de Privacidade é pautada pela Lei Geral de Proteção de Dados Pessoais (LGPD), nº 13.709/2018. Comprometemo-nos a cumprir estritamente seus termos assim que ela entrar em vigor. Caso queria saber mais sobre a LGPD, confira.  
4154                      <br><br> 
4155                      <b>2. Como o Senac coleta meus dados pessoais?</b><br> 
4156                       
4157                      Por meio de cadastro em nosso site ou em nossas unidades. Para realizá-lo, você notará que algumas informações são obrigatórias, pois atendem padrões estabelecidos por órgãos da administração pública, como o Ministério da Educação. Além desses dados, as outras informações solicitadas nos ajudam a entender melhor seus interesses e personalizar, ainda mais, seu atendimento.  
4158                      <br><br> 
4159                      <b>3. É possível acessar este site sem fornecer meus dados pessoais?</b><br> 
4160                       
4161                      Sim. Neste caso, podemos coletar dados técnicos da sua navegação como endereço de Protocolo de Internet (endereço IP), registro de acesso, geolocalização do endereço IP, tipo do navegador utilizado, versão do sistema operacional, modelo e características do aparelho utilizado para o acesso, banda de internet, operadora, comportamento de pageview e páginas visitadas, de acordo com cookies liberados ou não por você. (<a href="https://www.sp.senac.br/politica-de-cookies">Conhecer nossa Política de Cookies.</a>) 
4162                      <br><br> 
4163                      <b>4. No caso de acesso com cadastro, quais informações o Senac poderá solicitar? </b><br> 
4164                       
4165                      Nossa coleta de dados pessoais varia de acordo com o tipo de interação que você terá em nosso site, quais produtos ou serviços está procurando.  
4166                       
4167                      Para você saber, relacionamos a seguir os dados  pessoais que podem ser solicitados por nós:  <br> 
4168                       
4169                          - Dados sobre identificação: nome civil, nome social, filiação, nacionalidade, naturalidade, data de nascimento, sexo, estado civil, número e cópia do documento de identificação (CPF, RG/RNE ou outro)<br> 
4170                          - Dados sobre contato: endereço postal, endereço de e-mail, número de telefone<br> 
4171                          - Dados acadêmicos: estabelecimentos de ensino anteriores, certificados e diplomas acadêmicos, histórico escolar, nota do ENEM<br> 
4172                          - Dados profissionais: emprego atual, profissão<br> 
4173                          - Dados de pagamento: nome do titular da conta e número do cartão de crédito<br> 
4174                          - Dados de responsáveis: nome, telefone e número de documento de identidade do responsável legal (em casos de estudante menor de idade) e/ou financeiro <br> 
4175                          - Dados de saúde: informação sobre deficiência física e atestados médicos<br> 
4176                          - Dados de imagem: foto<br> 
4177                          - Dados de renda familiar: situação de emprego e salário de membros da mesma família<br> 
4178                          - Dados técnicos da sua navegação: endereço de Protocolo de Internet (endereço IP), registro de acesso, geolocalização do endereço IP, tipo do navegador utilizado, versão do sistema operacional, modelo e características do aparelho utilizado para o acesso, banda de internet, operadora, comportamento de pageview e páginas visitadas, de acordo com cookies liberados ou não por você. (<a href="https://www.sp.senac.br/politica-de-cookies">Conhecer nossa Política de Cookies</a>)<br> 
4179                       
4180                      <br><br> 
4181                      <b>5. Quantos e quais tipos de cadastros podem ser realizados?</b><br> 
4182                       
4183                      São três tipos de cadastro realizado. Como já comentamos (pergunta 4), eles variam de acordo com a sua experiência e o seu objetivo em nosso site. Por exemplo, se seu objetivo agora é apenas registrar interesse em algum curso livre, você terá que preencher seus dados de identificação e contato, caso queira fazer sua matrícula, deverá preencher também informações sobre pagamento, mas, se optar por se inscrever para bolsa de estudo, terá que fornecer outros documentos específicos, como comprovantes de renda. Confira:<br> 
4184                       
4185                          - Cadastro simples: poderemos coletar dados de identificação e de contato.<br> 
4186                          - Cadastro e inscrição em cursos e outros eventos:  quando você se inscreve em nossos cursos, eventos e até mesmo para participar do nosso vestibular e efetivar a sua matrícula em cursos livres, técnicos, de formação continuada ou superior, por exemplo, poderemos coletar dados dos responsáveis, de identificação, de contato, dados acadêmicos, profissionais, de saúde, de pagamento e de imagem.<br> 
4187                          Importante: também poderemos solicitar o envio de cópia de documentos, de acordo com o curso escolhido por você.<br> 
4188                          - Cadastro e inscrição para bolsas de estudos: poderemos coletar dados de identificação, contato e renda familiar.<br> 
4189                          Importante: também poderemos solicitar o envio de cópia de documentos para comprovar as informações fornecidas.<br> 
4190                       
4191                      <br><br> 
4192                      <b>6. Para quais finalidades meus dados podem ser utilizados?</b><br> 
4193                       
4194                          - Em procedimentos internos relacionados aos nossos serviços e produtos para que você tenha uma experiência positiva durante sua jornada no Senac. Afinal, você precisa ter informações sobre nossos serviços, ter acesso a nossa infraestrutura, ou, por exemplo, poder emprestar livros nas nossas bibliotecas,  realizar pagamentos, enviar reclamações, sugestões, pedidos, entre outros. <br> 
4195                          - Para cumprir obrigações legais a que estamos sujeitos, por exemplo: o pagamento de impostos, fazer o gerenciamento de matrícula, providenciar o reconhecimento de equivalências e de documentos que conferem graus e títulos acadêmicos, emitir certificados e diplomas, realizar o controle de assiduidade e registro de informações acadêmicas.<br> 
4196                          - Para permitir a realização de auditoria de órgãos da administração pública<br> 
4197                          - Em investigações sobre possíveis violações de leis ou de nossas políticas internas<br> 
4198                          - Para estabelecer rede de conexões entre ex-estudantes<br> 
4199                          - Para melhorar sua experiência com o Senac São Paulo, como, por exemplo, disponibilizar intérpretes, fornecer melhores ferramentas ou aprimorar nossos ambientes<br> 
4200                          - Para defender direitos em conflitos judiciais ou extrajudiciais e para proteger nossos direitos e de terceiros e, ainda, para outras finalidades que exijam o seu consentimento, que será solicitado nos termos da legislação vigente. <br> 
4201                       
4202                       
4203                      <b>Importante:</b> usaremos seus dados pessoais somente para atender aos objetivos descritos nesta Política. Se necessário, seus dados poderão ser usados para outras finalidades não conflitantes às finalidades apresentadas nesta Política.  
4204                      <br><br> 
4205                      <b>7. Com quem o Senac pode compartilhar meus dados?</b><br> 
4206                       
4207                          - Com órgãos da administração pública (Ministério da Educação, Secretaria Estadual da Educação, Tribunal de Contas da União, Controladoria Geral da União e demais órgãos relacionados a esses) para cumprimento de obrigações legais e regulatórias.<br> 
4208                          - Com instituições do setor bancário e seguradoras, para gestão e processamento de pagamentos.<br> 
4209                          - Com empresas que tenhamos contratos, parceria e/ou acordos de cooperação, por exemplo, gráficas, para a emissão de cartões e provas.<br> 
4210                          - Com instituições de ensino para validar a autenticidade de documentos.<br> 
4211                          Importante: informaremos você quando houver o compartilhamento de dados para outras finalidades que possam ser incompatíveis com o descrito nesta Política, sempre que exigido pela legislação. 
4212                       
4213                      <br><br> 
4214                      <b>8. Por quanto tempo meus dados serão armazenados?</b> <br> 
4215                       
4216                      Pelo período necessário para que você tenha uma experiência positiva dentro da instituição, atendendo seus interesses e solicitações.  
4217                       
4218                      <b>Importante:</b> poderemos preservar os seus dados por um período superior sempre que exista uma obrigação legal, por exemplo, em relação aos dados utilizados na gestão acadêmica, ou se existirem razões de interesse público (arquivo, investigação científica e histórica, ou para censos educacionais). Nessas ocasiões, sempre que possível, seus dados serão tratados de forma que seja possível manter o seu anonimato.  
4219                      <br><br> 
4220                      <b>9. Quais são as medidas de segurança utilizadas para garantir a proteção dos meus dados pessoais?</b><br> 
4221                       
4222                      Atuamos de maneira transparente e responsável, por meio de padrões de segurança e prevenção confiáveis. Adotamos medidas administrativas, técnicas e físicas para proteger dados pessoais contra perda, roubo, uso indevido, bem como, contra acesso não autorizado, divulgação, alteração e destruição de informações.  
4223                       
4224                      Confira nossas medidas de segurança da informação que buscam garantir a confidencialidade, a integridade e a disponibilidade dos dados coletados: <br> 
4225                       
4226                          - Controlar o acesso a informações, considerando a necessidade de nossos funcionários obterem determinado dado<br> 
4227                          - Proteger infraestruturas tecnológicas contra acessos não autorizados<br> 
4228                          - Monitorar constantemente toda nossa infraestrutura tecnológica <br> 
4229                          - Política de troca de senhas<br> 
4230                          - Política de confidencialidade com funcionários e terceiros<br> 
4231                       
4232                      <br><br> 
4233                      <b>10. É possível que meus dados sejam transferidos para fora do país?</b><br> 
4234                       
4235                      Sim, pois temos parcerias em nível global. Portanto, dados pessoais talvez precisem ser transferidos para outros países, seja em razão dessas parcerias (por exemplo, em caso de intercâmbio de estudantes) ou pela necessidade de armazenamento de dados em servidores estrangeiros, por meio da utilização de servidores em nuvem (cloud). 
4236                       
4237                      Caso seus dados pessoais sejam transferidos para fora do Brasil, adotaremos todos os cuidados para assegurar que essa transferência obedeça às normas e preserve o sigilo de todas as informações coletadas.  
4238                      <br><br> 
4239                      <b>11. Quais são os meus direitos em relação aos dados pessoais fornecidos?</b><br> 
4240                       
4241                      Agora que você já sabe como coletamos, utilizamos e compartilhamos seus dados, é igualmente importante para nós que você conheça quais são os direitos que possui quando nos fornece seus dados pessoais. Caso queira, você poderá: 
4242                       
4243                          - Corrigir seus dados pessoais que estejam incompletos, inexatos ou desatualizados<br> 
4244                          Caso você identifique algum erro em relação aos dados fornecidos, basta solicitar a alteração para nossa equipe. Isso é importante para que as informações sejam utilizadas da maneira correta e seu cadastro fique sempre atualizado. <br> 
4245                          - Cancelar ou revogar o seu consentimento de utilização de dados <br> 
4246                          Você poderá cancelar, a qualquer momento, o consentimento em relação ao uso, pelo Senac São Paulo, dos seus dados pessoais. <br> 
4247                       
4248                       
4249                      <b>Importante:</b> deixaremos de usar seus dados pessoais quando a revogação do seu consentimento for concluída. Sendo assim, qualquer utilização de seus dados pessoais antes da efetivação do cancelamento/revogação é entendido por nós como legal, verdadeiro e autorizado por você.  
4250                       
4251                      Caso queira fazer algum pedido referente a este campo, você deve entrar em contato via e-mail pelo privacidade@sp.senac.br. Poderemos solicitar informações para confirmar sua identidade e seu direito de acesso aos dados solicitados. 
4252                       
4253                      Tenha certeza, trabalharemos sempre de maneira ágil e responsável para atender suas solicitações o mais breve possível, sendo que observaremos os prazos legais quando da vigência da LGPD.  
4254                      <br><br> 
4255                      <b>12. E se essa Política for atualizada?</b><br> 
4256                       
4257                      Caso existam alterações significativas, iremos avisar você o mais breve possível, ou, antes que a nova política entre em vigor. Por isso, recomendamos que consulte este documento sempre que possível e verifique a data da sua última atualização, informada no rodapé desta página.  
4258                      <br><br> 
4259                      <b>13. Como posso tirar minhas dúvidas sobre esta Política?</b><br> 
4260                       
4261                      Fique à vontade para nos enviar qualquer tipo de dúvida sobre esta Política, em privacidade@sp.senac.br. Será um prazer falar com você! 
4262                       
4263                      <br><br> 
4264                       
4265                      <b>Encarregado de Dados do Senac (DPO):</b> 
4266                       
4267                      <br><br> 
4268                      <b>Fernando Sátiro Pereira </b>| Gerente de Tecnologia da Informação do Senac São Paulo 
4269                       
4270                      <br> 
4271                      <b>Contato: privacidade@sp.senac.br</b> 
4272 
4273                  </p> 
4274 
4275              </div> 
4276 
4277              <div class="ssp-card-registro-interesse__check-item"> 
4278                  <input type="checkbox" name="" value="" id="check-politica-privacidade"> 
4279                  <label for="check-politica-privacidade">Aceito a Política de Privacidade</label> 
4280              </div> 
4281 
4282              <div class="text-center mt-5"> 
4283 
4284                  <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a" id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button> 
4285 
4286                  <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p> 
4287 
4288              </div> 
4289 
4290            </div>    
4291 
4292        </#if> 
4293      </section> 
4294 
4295      <section id="modal-registro-interesse-sucesso" class="ssp-modal-registro-interesse d-none"> 
4296   
4297          <div class="ssp-card-msg-sucesso"> 
4298   
4299              <div class="ssp-card-msg-sucesso__content"> 
4300                  <i class="fas fa-exclamation-circle"></i> 
4301                  <p>Obrigado por registrar seu interesse!</p> 
4302                  <p>Acompanhe seu e-mail para ficar por dentro das novidades!</p> 
4303              </div> 
4304   
4305              <div> 
4306                  <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#" id="btn-voltar-home">Voltar para a home</a> 
4307              </div> 
4308   
4309          </div> 
4310   
4311      </section> 
4312   
4313    <section id="modal-registro-interesse-erro" class="ssp-modal-registro-interesse d-none"> 
4314   
4315          <div class="ssp-card-msg-erro"> 
4316   
4317              <div class="ssp-card-msg-sucesso__content"> 
4318                  <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i> 
4319                  <p>Houve um erro ao registrar seu interesse!</p> 
4320                  <p>Por favor, tente novamente!</p> 
4321              </div> 
4322   
4323              <div> 
4324                  <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#">Voltar para a home</a> 
4325              </div> 
4326   
4327          </div> 
4328   
4329      </section> 
4330       
4331      <!-- Aviso para curso de aprendizagem --> 
4332   
4333    <div id="aviso-curso-aprendizagem" class="ssp-bolsa-formulario__card-aviso-atencao d-none" style="width: 100%;"> 
4334                     
4335        <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i> 
4336     
4337        <div class="ssp-bolsa-formulario__card-aviso-texto"> 
4338          <p>O programa é gratuito para empresas contribuintes do Senac.</p>  
4339          <p>Para contratar aprendiz, preencha o formulário e entraremos em contato.</p> 
4340        </div> 
4341     
4342     </div> 
4343 
4344     <!-- modal form de aprendizagem --> 
4345 
4346    <#if isAprendizagem> 
4347     
4348      <#assign formId = 48097883 /> 
4349      <!-- formInstanceId é variável de acordo com o ID do formulário --> 
4350      <#assign formPreferences = {"displayDepth": "1", "portletSetupPortletDecoratorId": "barebone", "formInstanceId": "formId"}/> 
4351 
4352      <section data-lfr-background-image-id="bg-programe-form" class="ssp-section ssp-section-lg-bottom" data-modal="modal"> 
4353     
4354        <div class="container ssp_ct_form_programe"> 
4355 
4356          <button type="button" data-modal="close-form-modal"> 
4357            fechar 
4358            <i class="fas fa-times"></i> 
4359          </button> 
4360         
4361          <@liferay_portlet["runtime"] 
4362            portletName="com_liferay_dynamic_data_mapping_form_web_portlet_DDMFormPortlet" 
4363            defaultPreferences=freeMarkerPortletPreferences.getPreferences(formPreferences) 
4364          />   
4365               
4366        </div>    
4367 
4368      </section> 
4369 
4370    </#if> 
4371   
4372    <div id="avisoTrampolim" class="ssp-bolsa-formulario__card-aviso-atencao container text-left d-none" style="width: 100%;">                   
4373         <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>   
4374         <div class="ssp-bolsa-formulario__card-aviso-texto"><p>Para informações sobre preço do curso e matrícula, entre em contato a unidade.</p> 
4375         </div> 
4376 
4377       </div> 
4378          
4379         
4380         <!--modal forma pagto extensao-->   
4381        <section id="modalFormaPagtoExt" class="modal-extensao ssp-modal"> 
4382         <div class="modal-extensao_content"> 
4383            <i class="fas fa-undo modal-extensao-voltar-icon"><span class="modal-extensao-voltar-txticon">Voltar</span></i> 
4384            <h1 class="modal-extensao-condicoes__title">Descontos e Parcelamento</h1> 
4385            <div class="row"> 
4386   
4387              <!-- <button class="btn-preco-padrao d-xs-flex d-sm-flex d-lg-none d-xl-none"> 
4388                Preço Padrão 
4389                <i class="fas fa-chevron-right custom-icon-right"></i> 
4390              </button> --> 
4391   
4392             <div class="col-lg-6 col-sm-12 col-xs-12"> 
4393   
4394                <h2 class="modal-extensao_subtitle">Investimento</h2> 
4395   
4396                <span class="modal-extensao_preco">R$ <span class="precoVendaOferta"></span></span> 
4397                <span class="modal-extensao_txteconomiza">.<b class="modal-extensao_txtverde"></b></span> 
4398                <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3"> 
4399                   <i class="fas fa-barcode" aria-hidden="true"></i>   
4400                   <span class="modal-extensao_txtPag">Boleto Bancário</span>   
4401                   <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoleto"></span></b></span>         
4402                   <span class="modal-extensao_txtParcela">sem juros</span> 
4403                </div> 
4404                <div class="modal-extensao_ctcard pt-2 pb-2 mb-3"> 
4405                   <i class="far fa-credit-card" aria-hidden="true"></i> 
4406                   <span class="modal-extensao_txtPag">Cartão de Crédito</span> 
4407                   <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoes"></span></b></span>         
4408                   <span class="modal-extensao_txtParcela">sem juros</span> 
4409                </div> 
4410                <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaPadraoExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p> 
4411             </div> 
4412   
4413             <!-- <hr class="ssp-divisor d-xs-block d-sm-block d-lg-none d-xl-none"> --> 
4414   
4415             <!-- <button class="btn-preco-ex-aluno d-xs-flex d-sm-flex d-lg-none d-xl-none"> 
4416              Preço para Contribuintes,<br>alunos e ex-alunos* 
4417              <i class="fas fa-chevron-right custom-icon-right"></i> 
4418            </button> --> 
4419   
4420             <div class="col-lg-6 col-sm-12 col-xs-12"> 
4421                <h2 class="modal-extensao_subtitle mt-4">Valor com 20% de desconto para alunos, ex-alunos e contribuintes Senac</h2> 
4422                <span class="modal-extensao_preco">R$ <span class="precoContrExt"></span></span> 
4423                <span class="modal-extensao_txteconomiza">Você economiza <b class="modal-extensao_txtverde">R$ <span class="economiaExt"></span> (-20%)</b></span> 
4424                <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3"> 
4425                   <i class="fas fa-barcode" aria-hidden="true"></i>   
4426                   <span class="modal-extensao_txtPag">Boleto Bancário</span>   
4427                   <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoletoExt"></span></b></span>         
4428                   <span class="modal-extensao_txtParcela">sem juros</span>     
4429                </div> 
4430                <div class="modal-extensao_ctcard pt-2 pb-2 mb-3"> 
4431                   <i class="far fa-credit-card" aria-hidden="true"></i> 
4432                   <span class="modal-extensao_txtPag">Cartão de Crédito</span> 
4433                   <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoesExt"></span></b></span>         
4434                   <span class="modal-extensao_txtParcela">sem juros</span> 
4435                </div> 
4436                <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaContrExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p> 
4437             </div> 
4438             <div class="col-lg-6 col-sm-12 col-xs-12"> 
4439                <a target="_blank" href="#"> 
4440                <button class="btn modal-extensao__btn mt-3 text-uppercase">Comprar</button> 
4441                </a> 
4442             </div> 
4443             <div class="col-lg-6 col-sm-12 col-xs-12"> 
4444                <button class="btn btn-primary modal-extensao-btn-conheca mt-3" >Conheça os descontos</button> 
4445             </div> 
4446          </div> 
4447         </div> 
4448 
4449         <div class="modal-extensao_content modal-pergunta-aluno-ext d-none"> 
4450            
4451            <i class="fal fa-times modal-extensao-voltar-icon" style="font-size:25px;"></i> 
4452            <h1 class="modal-extensao-condicoes__title">Você é nosso aluno?</h1> 
4453            <div class="row"> 
4454               <div class="col-6 text-right"> 
4455                   
4456                  <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao sim mt-3">Sim</button> 
4457           
4458	</div> 
4459               <div class="col-6 text-left"> 
4460                   
4461                  <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao nao mt-3">Não</button> 
4462                   
4463               </div> 
4464            </div> 
4465            <div class="row d-none msg-alunoSim"> 
4466               <div class="col-12 text-center mt-10"> 
4467                  <i class="fas fa-check-circle modal-extensao-ico-check"></i> 
4468                  <h2 class="modal-extensao-condicoes__subtitle">Boa notícia!</h2> 
4469                  <p class="modal-extensao-aluno_txtcontent">Você tem 20% de desconto neste curso.<br> Faça seu login e preencha os dados solicitados.</p> 
4470                  <p class="mb-0"> 
4471                     <a target="_blank" href="#"> 
4472                     <button class="btn modal-extensao-aluno__btn ok mt-3">Fazer Inscrição</button> 
4473                     </a> 
4474                  </p> 
4475                  <p class="mt-0"> 
4476                     <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria"> 
4477                     <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button> 
4478                     </a> 
4479                  </p> 
4480               </div> 
4481            </div> 
4482            <div class="row d-none msg-alunoNao"> 
4483               <div class="col-12 text-center mt-10"> 
4484                  <i class="fas fa-percentage modal-extensao-ico-percent"></i> 
4485                  <h2 class="modal-extensao-condicoes__subtitle">Poxa! Não fique triste...</h2> 
4486                  <p class="modal-extensao-aluno_txtcontent">Você não tem direito ao desconto de 20% neste curso. Mas você tem direito ao desconto de pontualidade (melhorar texto)</p> 
4487                  <p class="mb-0"> 
4488                     <a target="_blank" href="#"> 
4489                     <button class="btn modal-extensao-aluno__btn not mt-3">Fazer Inscrição</button> 
4490                     </a> 
4491                  </p> 
4492                  <p class="mt-0"> 
4493                     <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria"> 
4494                     <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button> 
4495                     </a> 
4496                  </p> 
4497               </div> 
4498            </div> 
4499         </div> 
4500      </section> 
4501     	 
4502	 
4503	<!-- Modal Descontos e Parcelamento EMED --> 
4504	<div id="modalPagtoEmed" class="ssp-modal"> 
4505	 
4506	        <div class="ssp-card-modal-forma-pagamento"> 
4507 
4508            <div class="ssp-card-modal-forma-pagamento__header"> 
4509               <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold text-center" style="color:#454F63">Descontos e parcelamentos</h6> 
4510               <div class="ssp-modal-emed-btfechar"> 
4511               <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_0"></i> 
4512               <span>Fechar</span> 
4513              </div> 
4514            </div> 
4515 
4516            <div class="ssp-card-modal-forma-pagamento__body"> 
4517 
4518               <p class="ssp-modal-emed-info-valor-matricula"><span class="ssp-modal-emed-info-txt-matricula">1ª parcela de R$ <span class="precoParcelaEmedModal">1.062,00</span> <span>+ <span class="numParcelaEmedModal">12</span> mensalidades de R$ <span class="precoParcelaEmedModal">1.062,00</span></span></p> 
4519 
4520               <p class="ssp-card-modal-forma-pagamento__valor-desconto ssp-modal-emed-valor-total-txt"> <span class="ssp-modal-emed-txtValor">Valor total:</span> <span class="precoVendaOferta ssp-modal-emed-valor-total">R$ 414,40</span> 
4521                <span class="ssp-card-modal-emed-ano">/ano</span></p> 
4522 
4523               <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito text-center" style="border-bottom: 0px;"><i class="fas fa-badge-percent"></i> <span class="txt-pague-vista">Pague à vista e</span> <span class="txt-ganhe-mais" style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p> 
4524               <div class="ssp-card-modal-emed-lineou"><span>ou</span></div> 
4525 
4526               <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:14px;text-align: center;">Ganhe fôlego: parcele seu curso!</small> 
4527 
4528               <div class="ssp-card-modal-forma-pagamento__tipos"> 
4529                
4530               <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" > 
4531                     <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i> 
4532                     <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
4533                        <p><strong>Cartão de Crédito +</strong></p> 
4534                        <p><strong>Boleto Bancário</strong></p> 
4535                        <!-- <p>1ª parcela em <span>até 4x de R$ <span class="valorParcelaEntradaCartoesBoleto">265,50</span></span> sem juros no cartão</p> --> 
4536                        <p>1ª parcela no cartão</p> 
4537                        <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto">12</span>x de <br>R$ <span class="precoParcelaCartoesBoleto">1.062,00</span></span> sem juros no boleto</p> 
4538                     </div> 
4539                  </div> 
4540                
4541 
4542                  <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" > 
4543                     <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i> 
4544                     <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
4545                        <p><strong>Cartão de Crédito</strong></p> 
4546                        <p>(<span class="textoCartoesAceitos">Mastercard, Visa, Elo, American Express, Hipercard</span>)</p> 
4547                        <p>Em até <span><span class="numParcelaCartoes">12</span>x de R$ <span class="precoParcelaCartoes">34,53</span></span> sem juros</p> 
4548                     </div> 
4549                  </div> 
4550 
4551                  <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4 ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" id="content_boleto_0"> 
4552                     <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i> 
4553                     <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
4554                        <p><strong>Boleto Bancário</strong></p> 
4555                        <p>Em até <span><span class="numParcelaBoleto">12</span>x de R$ <span class="precoParcelaBoleto">34,53</span></span> sem juros</p> 
4556                     </div> 
4557                  </div> 
4558                   
4559                  <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-modal-emed-boxoito" data-info="data-para-matricula"><span class="ssp-card-modal-emed-valorObs obsspan"><i class="fas fa-exclamation-circle"></i>As vagas são limitadas e por ordem de chegada!</span>Garanta seu lugar! Matricule-se agora.</p> 
4560 
4561                  <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-card-modal-emed-boxDesconto" data-info="msg-20-desconto"><strong>E você ainda tem</strong><span style="color:#FC7834;font-weight:bold"> 20% desconto na mensalidade se:</span><br> 
4562                    - Estuda ou estudou no Senac<br>  
4563                    - É dependente de quem trabalha em empresa contribuinte do Senac<br>  
4564                    - Estuda ou estudou na rede pública de ensino 
4565                </p> 
4566 
4567               </div> 
4568 
4569            </div> 
4570             
4571 
4572            <a href="#a" class="btn btn-lg w-100 ssp-btn-emed__voltar-curso" style="margin-top: 20px;font-weight:600" id="" data-espaco-ex="true" data-unidade="" data-evento="" data-destino-compra="" data-index=""><span class="">Voltar para página do curso</span></a> 
4573 
4574             
4575             
4576    </div> 
4577  </div> 
4578 
4579  <#if isEMED> 
4580    <div id="modalAntesCompraEmed" class="ssp-modal"> 
4581      <div class="ssp-modal-local-realizacao"> 
4582        <div class="ssp-modal-local-realizacao__title-content"> 
4583          <h6 class="ssp-modal-local-realizacao__title" style="padding-left:10%;">IMPORTANTE!</h6> 
4584            <i class="ssp-card-modal-antes-compra__btn-close ssp-card-modal-forma-pagamento__btn-close"></i> 
4585        </div> 
4586        <div class="ssp-modal-local-realizacao__texto"> 
4587          <p class="texto-modal-emed textoEmedModalAntesCompra0010 d-none"> 
4588           
4589            Esta matrícula é somente para quem irá <b>pagar o curso.</b><br/><br/> 
4590            Sua matrícula é válida apenas no curso, turno e unidade escolhidos.<br/> 
4591           
4592          </p> 
4593          <p class="texto-modal-emed textoEmedModalAntesCompra0010Espera d-none"> 
4594           
4595            Saiba como funciona a lista de espera:<br/><br/> 
4596            - Esta inscrição é somente para quem irá <b>pagar o curso</b><br/> 
4597            - Sua inscrição é válida apenas no curso, turno e unidade escolhidos<br/> 
4598            - Se surgirem vagas na turma escolhida, você receberá um convite para matrícula<br/> 
4599           
4600          </p> 
4601          <p class="texto-modal-emed textoEmedModalAntesCompra0020e0030 d-none"> 
4602                       
4603            - Essa inscrição é para uma lista de espera de transferência para 2º ou 3º ano do Ensino Médio Técnico, por isso, ao realizá-la não garantimos a vaga<br/><br/> 
4604            - A inscrição só pode ser solicitada para quem deseja estudar no Senac realizando a compra do curso<br/><br/> 
4605            - Se a turma escolhida tiver vagas, você receberá um e-mail com orientações sobre a entrega de documentos e as formas de pagamento para efetivar a transferência 
4606                       
4607          </p> 
4608          <div class="btn ssp-modal-local-realizacao__btn-content"> 
4609            <button class="btn btn-lg btn-success w-100 mt-3" offercode="" id="btnCompraLocalEmed">Ok, desejo continuar</button> 
4610            <a class="ssp-modal-local-realizacao__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close" href="#a">Voltar</a> 
4611          </div> 
4612        </div> 
4613      </div> 
4614    </div> 
4615         
4616  </#if> 
4617 
4618   
4619   
4620           
4621   <script> 
4622     let showedFilters = false 
4623     var groupId = themeDisplay.getScopeGroupId(); 
4624 
4625   var urlSearchCursosPorCategory = '/o/senac-curso-services/cursosPorCategoryIds/{groupId}?categoryIds={categoryId}&start=0&end={limit}'; 
4626    
4627   var urlSearchOferta = '/o/senac-oferta-services/ofertasPorCategoryIds/' + groupId 
4628 
4629   var urlSearchUnidade = '/o/senacsearch/Unidade/{companyId}/{groupId}/{userId}?q=codigoUnidade_pt_BR:{codigoUnidade}'; 
4630   var urlUnidadeInfoDetalhe = '/o/senac-content-services/unidadeInfoDetalhe/{companyId}/{codigoUnidade}'; 
4631   var urlSearchCursosPodeGostar = '/o/senac-content-services/cursosVocePodeGostar/{companyId}/{groupId}/{userId}/{articleId}/{limit}'; 
4632   var urlSearchCursoInfo = '/o/senac-content-services/cursosInfoDetalhe/{groupId}/{cursosInfo}?inscricaoAberta={inscricaoAberta}&bolsaAberta={bolsaAberta}'; 
4633   var urlRegistroInteresse = '/o/senac-content-services/registroInteresse/'; 
4634   var urlRegistroInteresseEmailInteressado = '/o/senac-content-services/envioEmailRegistroInteresse/'; 
4635   var cntSelectUnidades = 1; 
4636   var urlPlanoCurso = 'https://www.sp.senac.br/jsp/includeMatdid.jsp?file=/ha1shared/projects/matdid/{codigoFT}-{dataEfetiva}.html'; 
4637   var urlGetServerT = '/o/senac-content-services/getServerTime';  
4638   var urlSearchCursosPodeGostarEmed = '/o/senac-curso-services/cursosPorCategoryIdsFilterAndOr/{groupId}/?categoryIdsOr={tiposDeCurso}&start=0&end={limit}&articleId={articleId}'; 
4639   var todayG = ''; 
4640   var codigoFTCursoAprendizagem = 18984; 
4641   var globalGroupId = Liferay.ThemeDisplay.getCompanyGroupId(); 
4642   var isAoVivo = 0; 
4643   var nomeFormatoAoVivoDxp = 'Senac Online - ao vivo'; 
4644   var ofertaUnidadeMap = new Map(); 
4645   var ultimaUnidade = 0; 
4646   var regIndex = new RegExp('\{index\}', 'g'); 
4647   var linkBotaoCompra = 'http://www.sp.senac.br/login/Login?destino=/ecommerceFrontEnd/?vcw_unidade={codigoUnidade}&vcw_evento={codigoOferta}'; 
4648   var carregouUltimaOferta = false; 
4649   var ofertasMap = new Map(); 
4650   var codUnidadeSenacAoVivo = '108'; 
4651   var ofertasComBolsa = false; 
4652 
4653    //funcao para pegar host do ambiente, se eh teste ou prod (utilizado no servico da bolsa)- 9546 
4654    function getServiceEnvironmentHost(){ 
4655      if(!isAmbienteTeste()) 
4656        return window.location.origin 
4657      else 
4658        return 'https://gesportal.sp.senac.br' 
4659
4660 
4661    var hostBolsa = getServiceEnvironmentHost() 
4662 
4663   // Montar object push - google tag manager - 1 
4664   let itensEcommerce = null;  
4665   let ofertaSelecionada = null; 
4666 
4667   const today = new Date; 
4668    
4669   var anoTurmaEmed = '2024'; 
4670 
4671   // A Pedido da GCR, Essa variável não está sendo considerada na página,  
4672   // todas as ofertas serão apresentadas 
4673   var dataInscricoesEmed = new Date('2022-08-29') 
4674 
4675    
4676   //categoryId -> cod unidade 
4677   var mapUnidadesIds = new Map(); 
4678   var objsTela = { 
4679     unidades: [], 
4680     unidadesRegistroInteresse: [], 
4681     categoriesIds:[], 
4682     ofertasAoVivoTodasUnidades: [], 
4683     primeiroChange: true 
4684   }; 
4685   var startOfertaParam = 0; 
4686   var endOfertaParam = 25; 
4687    
4688   var ehCursoTrampolim = false; 
4689    
4690   const isHibrido = $('input[name="formato"]').data('formato') === 'Presencial + EAD'; 
4691   
4692   var textoFormatoHibrido = ""; 
4693   var temTextoParaFormatoHibrido = false; 
4694   
4695   //Validar se o campo textoFormatoHibrido existe e se não está vazio 
4696   if(isHibrido){ 
4697                textoFormatoHibrido = $('input[name="textoFormatoHibrido"]').val(); 
4698                if(typeof textoFormatoHibrido !== 'undefined'){ 
4699                           if (textoFormatoHibrido.trim() !== '' ) { 
4700                                temTextoParaFormatoHibrido = true; 
4701                                textoFormatoHibrido += '<br>'; 
4702
4703
4704
4705    
4706   const HOST = window.location.origin; 
4707   const URLGeral = window.location.href; 
4708    
4709   //EMED 
4710   const tipoCursoNome = function(){ return $('.ssp-header-curso__tag-formato').text().trim(); } 
4711    
4712   const isEmed = (tipoCursoNome().indexOf('Ensino Médio Técnico') > -1); 
4713 
4714   const statusEmed = Object.freeze({ 
4715		NAO_ENCONTRADA: 0, 
4716    INSCRICAO: 1, 
4717		ESPERA: 2, 
4718		ESGOTADO: 3 
4719	}); 
4720    
4721   let unidadesToURL = [] 
4722    
4723   const localLivreOnline = function(textoLocal){  
4724     textoLocal = textoLocal || '' 
4725     textoLocal = textoLocal.replaceAll('online', 'on-line') 
4726 
4727     const textoOnline = 'Nesta turma, todas as aulas serão on-line e ao vivo pela plataforma digital Microsoft Teams'; 
4728      
4729     return textoLocal.toUpperCase().includes(textoOnline.toUpperCase()); 
4730
4731    
4732   const linkBolsa = function(oferta){ 
4733	    
4734      let tiposCurso = new Map(); 
4735      tiposCurso.set('livre', 'L'); 
4736      tiposCurso.set('tecnico', 'T'); 
4737      tiposCurso.set('aprendizagem', 'A'); 
4738      let letraTipoCurso = tiposCurso.get($('[name="tipoCurso"]').val()) || ''; 
4739  
4740      // verifica o campo destinoBolsa da oferta - 9546 
4741      var destinoBolsa = "" 
4742      if(oferta.destinoBolsa){ 
4743        destinoBolsa = parseInt(oferta.destinoBolsa,10)  
4744
4745      	 
4746      return hostBolsa+'/login/Login?origem=bolsas&destino=/jsp/default.jsp?template=2464.dwt&testeira=1540&idcourse='+ 
4747	      $('[name="codigoFT"]').val()+ 
4748	      '&cod_evento='+ 
4749	      oferta.codigoOferta+ 
4750	      '&cod_u='+ 
4751	      codigoUnidade+ 
4752	      '&nvg='+ 
4753	      oferta.qtdeTotalVagasPSG+ 
4754	      '&type='+ 
4755	      letraTipoCurso+ 
4756	      '&sel_unit=&ft=y'+ 
4757	      (destinoBolsa ? '&destino='+destinoBolsa : '');      
4758
4759    
4760    
4761   $('.ssp-ofertas-emed__filtro-content .btn').on('click', function(){ 
4762      
4763     var classAtivo = 'btn--filtro-ativo'; 
4764      
4765     if(!$(this).hasClass(classAtivo)){ 
4766      
4767       $(this).siblings().removeClass(classAtivo); 
4768        
4769       $(this).addClass(classAtivo); 
4770        
4771       populaOfertas(objsTela.ofertas); 
4772        
4773
4774      
4775   }); 
4776    
4777   //Cronometro 
4778	var hidden, visibilityChange; 
4779	var restartTimeout = null; 
4780	var interval01, interval15; 
4781	 
4782	if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support 
4783		hidden = "hidden"; 
4784		visibilityChange = "visibilitychange"; 
4785	} else if (typeof document.msHidden !== "undefined") { 
4786		hidden = "msHidden"; 
4787		visibilityChange = "msvisibilitychange"; 
4788	} else if (typeof document.webkitHidden !== "undefined") { 
4789		hidden = "webkitHidden"; 
4790		visibilityChange = "webkitvisibilitychange"; 
4791
4792	 
4793	// Verifica suporte a Visibility API 
4794	if (typeof document.addEventListener === "undefined" || hidden === undefined) { 
4795		console.log("Navegador incompativel com page visibility api"); 
4796	} else { 
4797		// Evento para quando a visibilidade da pagina mudar 
4798		document.addEventListener(visibilityChange, handleVisibilityChange, false); 
4799
4800    
4801   $(".ssp-saiba-mais-curso-accordion").on("click", ".ssp-saiba-mais-curso-accordion__heading", function() { 
4802   
4803       $(this).toggleClass("active").next().slideToggle(); 
4804   
4805       $(".sp-saiba-mais-curso-accordion__contents").not($(this).next()).slideUp(300); 
4806   
4807       $(this).siblings().removeClass("active"); 
4808   }); 
4809   
4810  function loadUnidadesRegistroInteresse(urlCursoInfo) { 
4811    if(objsTela.unidadesRegistroInteresse && objsTela.unidadesRegistroInteresse.length) 
4812      return 
4813 
4814    let urlUnidades = new URL(window.location.origin + urlCursoInfo) 
4815    let paramsUnidades = new URLSearchParams(urlUnidades.search) 
4816    paramsUnidades.delete('inscricaoAberta') 
4817    paramsUnidades.delete('bolsaAberta') 
4818    urlUnidades.search = '?' + paramsUnidades.toString() 
4819    urlUnidades = urlUnidades.href 
4820 
4821    $.ajax({ 
4822      url: urlUnidades, 
4823      method:'get', 
4824      async: false 
4825    }).done(function(data){ 
4826      if(data.length > 0){ 
4827        const cursoInfo = JSON.parse(data); 
4828        const unidadesOfertantes = cursoInfo.unidadesOfertantes; 
4829         
4830        $.each(unidadesOfertantes, function(k,item){ 
4831          var unidade = {}; 
4832          unidade['categoryId'] = item['categoryId']; 
4833          unidade['codigoUnidade'] = item['codigoUnidade']; 
4834          unidade['nome'] = item['nomeUnidade']; 
4835          unidade['enderecoUnidade'] =item['enderecoUnidade']; 
4836          unidade['numero'] =item['numEnderecoUnidade']; 
4837          unidade['complemento'] = item['complementoEnderecoUnidade']; 
4838          unidade['bairro'] = item['bairroUnidade']; 
4839          unidade['googlemapsUnidade'] = item['googlemapsUnidade']; 
4840          unidade['friendlyURL'] = item['friendlyURL']; 
4841          unidade['selecionado'] = false; 
4842          unidade['selectSelecionado'] = ""; 
4843          unidade['ofertas'] = []; 
4844               
4845          if(!objsTela.unidadesRegistroInteresse.filter(uni => uni['categoryId'] == unidade['categoryId']).length) 
4846            objsTela.unidadesRegistroInteresse.push(unidade) 
4847          }); 
4848
4849    }); 
4850
4851   
4852   function loadUnidades(showOptions, unidadeValue){ 
4853     //Busca as unidades do curso 
4854      
4855    const urlCursoInfo = urlSearchCursoInfo 
4856      .replace('\{groupId\}', groupId) 
4857      .replace('\{cursosInfo\}', $('[name="articleId"]').val()) 
4858      .replace('\{inscricaoAberta\}', $('#chkInscricao').prop('checked')) 
4859      .replace('\{bolsaAberta\}', $('#chkBolsa').prop('checked')); 
4860 
4861      loadUnidadesRegistroInteresse(urlCursoInfo) 
4862 
4863      $.ajax({ 
4864          url:urlCursoInfo, 
4865          method:'get', 
4866          async: false, 
4867        beforeSend: function () { 
4868          loading('.oferta-slick-area'); 
4869
4870        }).done( 
4871          function(data){ 
4872             
4873            if(data.length > 0){ 
4874               
4875              if(!isAoVivo) 
4876                $('.ssp-container-selecione-unidade').removeClass('d-none') 
4877               
4878              const cursoInfo = JSON.parse(data); 
4879               
4880                                       
4881              //GCR pediu para voltarmos no combo as unidades vinculadas e não somente as que possuem ofertas 
4882              //const unidades = cursoInfo.unidadesComOferta; 
4883              const unidades = cursoInfo.unidadesOfertantes; 
4884               
4885              objsTela.unidades = [] 
4886              mapUnidadesIds = new Map(); 
4887               
4888              $.each(unidades, function(k,item){ 
4889                   
4890                  var unidade = cloneObj(item) 
4891                  unidade['nome'] = item['nomeUnidade']; 
4892                  unidade['numero'] =item['numEnderecoUnidade']; 
4893                  unidade['complemento'] = item['complementoEnderecoUnidade']; 
4894                  unidade['bairro'] = item['bairroUnidade']; 
4895                  unidade['ofertas'] = []; 
4896                       
4897                    objsTela.unidades.push(unidade); 
4898                       
4899                      mapUnidadesIds.set(unidade['categoryId'], unidade['codigoUnidade']); 
4900 
4901                    objsTela.unidades.forEach(unidade => unidadesToURL.filter(u => u.friendlyURL == unidade.friendlyURL).length ? '' : unidadesToURL.push(unidade)) 
4902                }); 
4903                       
4904                             
4905              populaSelectUnidades(undefined, showOptions, unidadeValue);  
4906    
4907
4908      }); 
4909       
4910
4911   
4912function getOfertaObjectFromJson(ofertaJSON,index){ 
4913   
4914 
4915  var oferta =  {}; 
4916        var xml =  $($.parseXML(ofertaJSON.content)); 
4917          oferta['ordenar'] = paramOrdem(xml); 
4918          oferta['vagasTotal'] = xml.find('[name="vagasTotal"]').text().trim(); 
4919          var dataInicio = xml.find('[name="dataInicioOferta"]').text().split('-'); 
4920          var dataFim =xml.find('[name="dataFimOferta"]').text().split('-'); 
4921          oferta['dataInicio'] = dataInicio[2].trim()+'/'+dataInicio[1].trim()+'/'+dataInicio[0].trim(); 
4922          oferta['dataFim'] = dataFim[2].trim()+'/'+dataFim[1].trim()+'/'+dataFim[0].trim(); 
4923          oferta['horaInicio'] = xml.find('[name="horaInicioOferta"]').text(); 
4924          oferta['codigoOferta'] = xml.find('[name="codigoOferta"]').text().trim(); 
4925          var dias = []; 
4926          oferta['horaFimOferta'] = xml.find('[name="horaFimOferta"]').text().trim(); 
4927          xml.find('[name="diasDaSemanaOferta"]').find('option').each(function(index,dia){ 
4928            dias.push($(dia).text()); 
4929          }); 
4930          oferta['diasDaSemanaOferta'] = dias; 
4931          oferta['periodoDiaOferta'] = xml.find('[name="periodoDiaOferta"]').text().trim(); 
4932          oferta['precoCheioOferta'] = xml.find('[name="precoCheioOferta"]').text().trim(); 
4933          oferta['precoVendaOferta'] = xml.find('[name="precoVendaOferta"]').text().trim(); 
4934          oferta['numeroMaxParcelasOferta'] = xml.find('[name="numeroMaxParcelasOferta"]').text().trim(); 
4935           
4936          oferta['textoCartoesAceitos'] =  pegarTextoCartoesAceitos(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim()); 
4937          oferta['numParcelaCartoes'] =  pegaNumParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim()); 
4938          oferta['precoParcelaCartoes'] =  pegaValorParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim()); 
4939          oferta['numParcelaBoleto'] =  pegaNumParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim()); 
4940          oferta['precoParcelaBoleto'] =  pegaValorParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim()); 
4941           
4942          oferta['precoVendaMaxParcelaOferta'] = xml.find('[name="precoVendaMaxParcelaOferta"]').text().trim(); 
4943          oferta['formaDePagamentoOferta'] = xml.find('[name="formaDePagamentoOferta"]').text().trim(); 
4944          oferta['botaoCompraOferta'] = xml.find('[name="botaoCompraOferta"]').text().trim(); 
4945          oferta['vagasParaCompraOferta'] = xml.find('[name="vagasParaCompraOferta"]').text().trim(); 
4946          oferta['botaoBolsaOferta'] = xml.find('[name="botaoBolsaOferta"]').text().trim(); 
4947          oferta['vagasBolsaOferta'] = xml.find('[name="vagasBolsaOferta"]').text().trim(); 
4948          oferta['dataAberturaBolsaOferta'] = xml.find('[name="dataAberturaBolsaOferta"]').text().trim(); 
4949          oferta['horaAberturaBolsaOferta'] = xml.find('[name="horaAberturaBolsaOferta"]').text().trim(); 
4950          oferta['espacoExterno'] = xml.find('[name="espacoExterno"]').text().trim(); 
4951          oferta['localEspacoExterno'] = xml.find('[name="localEspacoExterno"]').text().trim(); 
4952          oferta['ruaEspacoExterno'] = xml.find('[name="ruaEspacoExterno"]').text().trim(); 
4953          oferta['numeroEspacoExterno'] = xml.find('[name="numeroEspacoExterno"]').text().trim(); 
4954          oferta['complementoEspacoExterno'] = xml.find('[name="complementoEspacoExterno"]').text().trim(); 
4955          oferta['bairroEspacoExterno'] = xml.find('[name="bairroEspacoExterno"]').text().trim(); 
4956          oferta['cidadeEspacoExterno'] = xml.find('[name="cidadeEspacoExterno"]').text().trim(); 
4957          oferta['ufEspacoExterno'] = xml.find('[name="ufEspacoExterno"]').text().trim(); 
4958          oferta['cepEspacoExterno'] = xml.find('[name="cepEspacoExterno"]').text().trim(); 
4959          oferta['qtdeTotalVagas'] = xml.find('[name="qtdeTotalVagas"]').text().trim(); 
4960          oferta['qtdeTotalVagasPSG'] = xml.find('[name="qtdeTotalVagasPSG"]').text().trim(); 
4961          oferta['horariosAllOferta'] = xml.find('[name="horariosAllOferta"]').text().trim(); 
4962          oferta['formaDePagamentoCartaoOferta'] = xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim(); 
4963          oferta['formaDePagamentoBoletoOferta'] = xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim(); 
4964          oferta['dtLimiteMatricula'] = xml.find('[name="dtLimiteMatricula"]').text().trim(); 
4965          oferta['dataAberturaMatricula'] = xml.find('[name="dataAberturaMatricula"]').text().trim(); 
4966          oferta['etapa'] = xml.find('[name="etapa"]').text().trim(); 
4967          oferta['destinoCompra'] = xml.find('[name="destinoCompra"]').text().trim();  
4968          //adicao do destinoBolsa na oferta - 9546 - 11/07/2022 
4969          oferta['destinoBolsa'] = xml.find('[name="destinoBolsa"]').text().trim(); 
4970 
4971          	if(isEmed){ 
4972		  		//EMED utilizar data matricula para bolsa 
4973		  	  	oferta['dataAberturaBolsaOferta'] = oferta['dataAberturaMatricula'];  
4974 
4975
4976           
4977         return oferta;  
4978
4979   
4980  const getStatusEmed = (oferta) => { 
4981 
4982	    const urlStatusEsperaEmed = () => { 
4983	  		let url = (isAmbienteTeste()) ?  
4984		  		'https://hinscricao-educacional-backend.sp.senac.br/api/lista-espera/' 
4985			    : 'https://inscricao-educacional-ms.sp.senac.br/api/lista-espera/'; 
4986	  		 
4987  	  		return url + oferta.codigoOferta; 
4988
4989  	  	 
4990  	  const callTl = async () => { 
4991	  		if(getCookie('tl') == null){ 
4992	  			return await $.ajax({ 
4993	  				url: '/o/senac-content-services/geraTokenServicosSenac', 
4994	  				method: 'GET' 
4995	  			}); 
4996
4997	  		return getCookie('tl'); 
4998
4999 
5000      const callListaEspera = async () => { 
5001  	    	var tl = ''; 
5002	    	  try{ 
5003  	    		tl = await callTl(); 
5004  	    		if(getCookie('tl') == null){ 
5005  	    			tl = JSON.parse(tl).token; 
5006  	    			writeCookie('tl', tl, 6, ''); 
5007
5008  	    	}catch(err){ 
5009  	    		console.error(err); 
5010  	    		return {}; 
5011
5012  	    	 
5013  	    	return $.ajax({ 
5014              url: urlStatusEsperaEmed(), 
5015              method: 'GET', 
5016  	        	beforeSend: function (xhr) { 
5017  	        		xhr.setRequestHeader("Authorization", tl); 
5018
5019  			  }) 
5020
5021 
5022      return new Promise(async function (resolve, reject) { 
5023        const resp = await callListaEspera(); 
5024        if(typeof resp !== 'object') resp = JSON.parse(resp); 
5025        let status = resp.STATUS; 
5026        resolve(status); 
5027      }); 
5028	  	 
5029
5030   
5031 function getOfertasAoVivo(codigoFT, dataEfetivaOferta, categoryIds){ 
5032       
5033  if(categoryIds && categoryIds.length) { 
5034    var params = new URLSearchParams(); 
5035    params.set('codigoFTOferta',codigoFT) 
5036    params.set('dataEfetivaOferta',dataEfetivaOferta) 
5037    params.set('categoryIds',categoryIds) 
5038    params.set('start',startOfertaParam) 
5039    params.set('end',endOfertaParam) 
5040    params.set('inscricaoAberta', $('#chkInscricao').prop('checked')) 
5041    params.set('bolsaAberta', $('#chkBolsa').prop('checked')) 
5042    params.set('cursoArticleId', $('[name="articleId"]').val() || ''); 
5043 
5044    if($('#chkBolsa').prop('checked')){ 
5045    	params.set('considerarDataBolsaFutura', true) 
5046
5047    const url = urlSearchOferta + '?' + params.toString() 
5048       
5049    $.ajax({ 
5050      url:url, 
5051      method:'get', 
5052      dataType:'json', 
5053      async: false 
5054    }).done( 
5055      function(data){ 
5056         
5057        if(data.length > 0){ 
5058         $('#ssp-alternadores').show() 
5059         showedFilters = true 
5060   
5061         objsTela.ofertasAoVivoTodasUnidades = [] 
5062           
5063          data.forEach(function(ofertaJSON,index){ 
5064   
5065            var oferta = getOfertaObjectFromJson(ofertaJSON,index); 
5066             
5067            //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo                
5068            ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));                
5069            objsTela.ofertasAoVivoTodasUnidades.push(oferta); 
5070   
5071          }); 
5072        } else { 
5073         loadAlternadores(data) 
5074
5075   
5076        populaOfertas(objsTela.ofertasAoVivoTodasUnidades); 
5077        addEventBolsa() 
5078
5079    ).fail(function(e) { 
5080      console.error(e) 
5081      populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []); 
5082    }) 
5083  } else { 
5084    loadAlternadores([]) 
5085    populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []) 
5086
5087 
5088  if(isAoVivo) { 
5089     if(objsTela.ofertasAoVivoTodasUnidades && objsTela.ofertasAoVivoTodasUnidades.length) 
5090       hideCardSemTurmas(true) 
5091     else 
5092       hideCardSemTurmas(false) 
5093
5094
5095    
5096  function mudouToggleOferta(ofertas) { 
5097    const oferta = ofertas && ofertas[0] 
5098    if(!oferta) 
5099      return true 
5100 
5101    const selecaoInscricao = $('#chkInscricao').prop('checked') 
5102    const selecaoBolsa = $('#chkBolsa').prop('checked') 
5103 
5104    return oferta.selecaoInscricao != selecaoInscricao || oferta.selecaoBolsa != selecaoBolsa 
5105
5106 
5107  function loadAlternadores(ofertas) { 
5108    if(showedFilters) { 
5109      $('#ssp-alternadores').show() 
5110      return 
5111
5112 
5113    if($('#unidades-ofertas').is(":hidden") || $('#unidades-ofertas option').length <= 1) { 
5114      if(isAoVivo) { 
5115        if(ofertas && ofertas.length) 
5116          $('#ssp-alternadores').show() 
5117        else { 
5118          if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')) 
5119            $('#ssp-alternadores').hide() 
5120          else 
5121            $('#ssp-alternadores').show() 
5122
5123      } else { 
5124        if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')) 
5125          $('#ssp-alternadores').hide() 
5126        else 
5127          $('#ssp-alternadores').show() 
5128
5129    } else 
5130      $('#ssp-alternadores').show() 
5131 
5132    showedFilters = showedFilters || $('#ssp-alternadores').is(":visible") 
5133
5134 
5135  function getOfertas(codigoFT, dataEfetivaOferta, categoryId){ 
5136       
5137    var indiceUnidade = -1; 
5138    const selecaoInscricao = $('#chkInscricao').prop('checked') 
5139    const selecaoBolsa = $('#chkBolsa').prop('checked') 
5140      
5141     for(var i = 0; i < objsTela.unidades.length; i++) 
5142         if(objsTela.unidades[i].categoryId == categoryId) 
5143           indiceUnidade = i; 
5144      
5145    ultimaUnidade = indiceUnidade; 
5146           
5147     if( !objsTela.categoriesIds.includes(categoryId) || mudouToggleOferta(objsTela.unidades[indiceUnidade]['ofertas'])){ 
5148       objsTela.unidades[indiceUnidade]['ofertas'] = [] 
5149        
5150        var params = new URLSearchParams(); 
5151        params.set('codigoFTOferta',codigoFT) 
5152        params.set('dataEfetivaOferta',dataEfetivaOferta) 
5153        params.set('categoryIds',categoryId) 
5154        params.set('start',startOfertaParam) 
5155        params.set('end',endOfertaParam) 
5156        params.set('inscricaoAberta', $('#chkInscricao').prop('checked')) 
5157        params.set('bolsaAberta', $('#chkBolsa').prop('checked')) 
5158        params.set('cursoArticleId', $('[name="articleId"]').val() || ''); 
5159 
5160        if($('#chkBolsa').prop('checked')){ 
5161        	params.set('considerarDataBolsaFutura', true) 
5162
5163         
5164        const url = urlSearchOferta + '?' + params.toString() 
5165   
5166       $.ajax({ 
5167         url:url, 
5168         method:'get', 
5169         dataType:'json', 
5170         async: false 
5171       }).done( 
5172         function(data){ 
5173            
5174           if(data.length > 0){ 
5175             $('#ssp-alternadores').show() 
5176             showedFilters = true 
5177              
5178             $('.ssp-container-selecione-unidade').show(); 
5179             
5180             data.forEach(function(ofertaJSON,index){ 
5181   
5182               var oferta = getOfertaObjectFromJson(ofertaJSON,index); 
5183                
5184               //Preenche as ofertas da unidade              
5185               objsTela.unidades[indiceUnidade]['ofertas'].push(oferta); 
5186               objsTela.unidades[indiceUnidade]['ofertas'].forEach(o => { 
5187                 o.selecaoInscricao = selecaoInscricao 
5188                 o.selecaoBolsa = selecaoBolsa 
5189               }) 
5190   
5191             }); 
5192           } else { 
5193              loadAlternadores() 
5194
5195           objsTela.categoriesIds.push(categoryId); 
5196           populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']); 
5197           addEventBolsa() 
5198
5199
5200   
5201       //Se estiver na cache, valida as ofertas 
5202     }else{ 
5203        
5204       populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']); 
5205        
5206
5207
5208       
5209   function populaSelectUnidades(unidades, showOptions, unidadeValue){       
5210    var unidadePreSelecionada = false; 
5211    var categoryIdUnidadePreSelecionada = ''; 
5212     
5213    //Oredenacao 
5214    objsTela.unidades.sort(function (a, b) { 
5215    	return ordenar(a, b, 'nome'); 
5216    }); 
5217     
5218    objsTela.unidadesRegistroInteresse.sort(function (a, b) { 
5219    	return ordenar(a, b, 'nome'); 
5220      }); 
5221     
5222    //console.log(objsTela.unidades); 
5223     
5224    $.each(objsTela.unidades, function(k,item){ 
5225       
5226      if(getURLData().includes('/'+item.friendlyURL+'/')){ 
5227        unidadePreSelecionada= true; 
5228        categoryIdUnidadePreSelecionada = item['categoryId']; 
5229
5230    }); 
5231     
5232    //console.log('Unidade Pre '+unidadePreSelecionada); 
5233     
5234    if(objsTela.unidades.length == 0){ 
5235      if(!showOptions) 
5236        $('.ssp-container-selecione-unidade').addClass('d-none'); 
5237      $('.oferta-slick-area').empty(); 
5238      $('.prev-mobile').addClass('d-none'); 
5239      $('.next-mobile').addClass('d-none'); 
5240      //EMED remove msg registro interesse 
5241      if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none'); 
5242
5243     
5244    if(isAoVivo){ 
5245       
5246        const codigoFT = $('[name="codigoFT"]').val(); 
5247    	const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val(); 
5248 
5249    	var unidadesCategoryAll = ''; 
5250     
5251    	$.each(objsTela.unidades, function(k,unidade){ 
5252      		unidadesCategoryAll += unidade['categoryId']+','; 
5253        }); 
5254       
5255    //tirando ultima virgula 
5256    unidadesCategoryAll = unidadesCategoryAll.substring(0,unidadesCategoryAll.length - 1); 
5257     
5258    getOfertasAoVivo(codigoFT, dataEfetivaOferta, unidadesCategoryAll);            
5259       
5260    }else{ 
5261      $('#unidades-ofertas').empty() 
5262 
5263      if(objsTela.unidades && objsTela.unidades.length){  
5264        if(isEmed) 
5265          $('#unidades-ofertas').append($('<option value="">Selecione uma unidade</option>')) 
5266        else 
5267          $('#unidades-ofertas').append($('<option value="">Clique na unidade de interesse</option>')) 
5268 
5269      } else 
5270        $('#unidades-ofertas').append($('<option value="">Nenhum resultado encontrado</option>')) 
5271 
5272      let unidadeFounded = criarOptionUnidadesPorRegiao(objsTela.unidades) 
5273       
5274      //Dispara o evento para primeira unidade ou pela friendlyURl da unidade 
5275      if(unidadeValue) { 
5276        $('#unidades-ofertas').val(unidadeValue); 
5277        $('#unidades-ofertas').change(); 
5278      } else if(unidadeFounded){	             
5279        $('#unidades-ofertas').val(unidadeFounded['categoryId']+"@"+unidadeFounded['codigoUnidade']); 
5280        $('#unidades-ofertas').change(); 
5281      } else if(!unidadePreSelecionada) { 
5282        $('#unidades-ofertas').change(); 
5283
5284       
5285      $('.ssp-card-registro-interesse__select.unidades').empty() 
5286      $('.ssp-card-registro-interesse__select.unidades').append('<option value="" disabled selected>Selecione uma unidade</option>') 
5287      $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
5288         
5289        $('.ssp-card-registro-interesse__select.unidades').append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>'); 
5290      }); 
5291
5292     
5293
5294 
5295   
5296   function mudarUnidade(ev){      
5297     startOfertaParam = 0; 
5298     endOfertaParam = 25; 
5299     carregouUltimaOferta = false; 
5300 
5301     var elem = $(ev.target); 
5302     var unidades = objsTela.unidades; 
5303      
5304     //verifica se selecionou alguma unidade 
5305     if(!elem.val()){ 
5306       $('#informe-novas-turmas, .ssp-ofertas-emed__section, .ssp-ofertas__box-endereco-unidade').addClass('d-none'); 
5307 
5308       if(isEmed) 
5309        $('#ssp-section-response').addClass('d-none') 
5310 
5311       if($('#unidades-ofertas option').length <= 1) 
5312         hideCardSemTurmas(false) 
5313       else 
5314         hideCardSemTurmas(true)          
5315 
5316       elem.val('') 
5317       habilitarRegistroInteresse(false) 
5318       //Zera variável que controla existência de ofertas com bolsa 
5319        ofertasComBolsa = false; 
5320        controlaPaginaBolsa(); 
5321        
5322       return; 
5323
5324      
5325     $('#informe-novas-turmas, .ssp-ofertas__box-endereco-unidade').removeClass('d-none'); 
5326     hideCardSemTurmas(true) 
5327     if(isEmed){ 
5328        $('.ssp-ofertas-emed__section').removeClass('d-none'); 
5329        $('#ssp-section-response').removeClass('d-none') 
5330        $('.ssp-card-oferta-curso__section-title').addClass('d-none'); 
5331        $('.prev-mobile, .next-mobile').addClass('d-none'); 
5332        var nomeUnidade = $('#unidades-ofertas option:selected').text(); 
5333        let tamScreen = $(window).width(); 
5334 
5335        if(tamScreen < 1024) 
5336	    	$('#titulo-emed').text('Turmas ' + anoTurmaEmed); 
5337        else 
5338        	$('#titulo-emed').text('Turmas ' + anoTurmaEmed + ' - ' + nomeUnidade); 
5339 
5340
5341      
5342     const codigoFT = $('[name="codigoFT"]').val(); 
5343     const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val(); 
5344      
5345     //colocamos dentro do option categoryId@codUnidade 
5346     splitted = elem.val().split("@"); 
5347     var categoryIdUnidade = splitted[0]; 
5348     var codUnidade = splitted[1]; 
5349           
5350     for(var i = 0; unidades.length > i ; i++){ 
5351        
5352       if(unidades[i].categoryId == categoryIdUnidade){ 
5353   
5354           var unidade = unidades[i]; 
5355            
5356           //Exibe o endereco da unidade 
5357           const urlBuscaUnidade = urlUnidadeInfoDetalhe 
5358         .replace('\{companyId\}',themeDisplay.getCompanyId()) 
5359         .replace('\{codigoUnidade\}', unidade.codigoUnidade); 
5360            
5361           $.ajax({ 
5362                 url :  urlBuscaUnidade, 
5363                 type : 'get', 
5364                 dataType: 'json', 
5365                 success: function( unidadeInfo ) { 
5366                   if(unidadeInfo != null && typeof unidadeInfo !== 'undefined'){ 
5367                       
5368                       var endereco = concatSTR(unidadeInfo.enderecoUnidade,unidadeInfo.numEnderecoUnidade,', '); 
5369                         endereco = concatSTR(endereco,unidadeInfo.complementoEnderecoUnidade, ' - '); 
5370                         endereco = concatSTR(endereco,unidadeInfo.bairroUnidade, ' - '); 
5371                 
5372                         $('.ssp-ofertas__endereco-unidade').text(endereco); 
5373                         $('.ssp-ofertas__endereco-unidade').attr('href',unidadeInfo.googlemapsUnidade); 
5374
5375                 }, 
5376                 error: function(data){ 
5377                   $('.ssp-ofertas__endereco-unidade').text(''); 
5378                   $('.ssp-ofertas__endereco-unidade').attr('href','#a'); 
5379                     console.log('Unidade não encontrada'); 
5380
5381             }) 
5382              
5383           getOfertas(codigoFT, dataEfetivaOferta, unidades[i].categoryId); 
5384            
5385           habilitarRegistroInteresse(!!(unidades && unidades.length)); 
5386            
5387
5388     }   
5389
5390     
5391   function pegarTextoCartoesAceitos(campo){ 
5392      indice = campo.indexOf(' em até '); 
5393      inicio = 0; 
5394      fim = indice; 
5395       
5396      return campo.substring(inicio, fim); 
5397
5398    
5399   function pegaNumParcela(campo){ 
5400    
5401      indice = campo.indexOf('até '); 
5402      inicio = indice + 4; 
5403      fim = indice +  6; 
5404       
5405      return campo.substring(inicio, fim); 
5406       
5407
5408    
5409   function pegaValorParcela(campo){ 
5410      
5411      indice = campo.indexOf('R$'); 
5412      inicio = indice+2;     
5413      valorAmericano = campo.substring(inicio) 
5414       
5415      return formataValor(valorAmericano); 
5416       
5417
5418    
5419   function montaHTMLOferta(oferta, index, codigoUnidade, posLoad){ 
5420	    
5421    var retornoDiasHorarios = processaDiasHorariosOferta(oferta.horariosAllOferta); 
5422    diasSemanaHTML = ""; 
5423	      
5424    for(var diaDaOferta of retornoDiasHorarios){ 
5425          diasSemanaHTML += htmlSlickAreaDiasSemana.replace('\{diasSemana\}',diaDaOferta.dias); 
5426          diasSemanaHTML = diasSemanaHTML.replace('\{horasSemana\}',diaDaOferta.horario) 
5427		      }    
5428		       
5429    var ofertaHTML = ""; 
5430		 
5431		if(isEmed){ 
5432			 
5433      ofertaHTML = htmlSlickAreaEmed(oferta); 
5434			$('[name="codUnidadeSelecionada"]').val(codigoUnidade); 
5435			 
5436			if(!posLoad) $('.ssp-slick-ofertas-emed').append(ofertaHTML) 
5437			else $('.ssp-slick-ofertas-emed').slick('slickAdd', ofertaHTML); 
5438		}else{ 
5439 
5440 
5441      ofertaHTML = htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) 
5442       
5443      if(!posLoad) 
5444        $('.oferta-slick-area').append(ofertaHTML); 
5445      else 
5446        $('.oferta-slick-area').slick('slickAdd', ofertaHTML); 
5447       
5448      ajustaTextoDiasHorarioOferta(oferta.codigoOferta); 
5449 
5450
5451 
5452    if(turmasIniciadas(oferta.dataInicio)) 
5453    	$("#aviso-turma-iniciada-"+index).show(); 
5454 
5455	//remove os botões/itens de compra/bolsa caso seja preciso 
5456    $('.oferta-slick-area').find('.d-none-btn').remove(); 
5457
5458 
5459 
5460  	//RECEBE A STRING DE HORARIOS E RETORNA UMA LISTA DE OBJETOS COM OS DIAS E HORARIOS FORMATADOS 
5461	//@horariosAllOferta String com os dias da semana em sigla seguido do horario da aula e separados por virgula EX: "Qui 12h às 13, Sex 12h às 13h"  
5462	function processaDiasHorariosOferta(horariosAllOferta){ 
5463 
5464   		var dias = horariosAllOferta.trim().split(','); 
5465   		let arrayDiasSemana = [{"Seg":"Segunda"},{"Ter":"Terça"},{"Qua":"Quarta"},{"Qui":"Quinta"},{"Sex":"Sexta"},{"Sab":"Sábado"},{"Dom":"Domingo"}] 
5466 
5467   		var arrayDia = []; 
5468   	   	if(dias.length >= 1){ 
5469   		    for(var k=0; dias.length > k; k++){ 
5470   		 		var diasSplit = dias[k].trim().split(' '); 
5471   	          	var diasSemana = diasSplit.shift() 
5472   		      	var ultimaPos = diasSplit.length-1; 
5473   	          	var horasStr = diasSplit[0] + ' às ' + diasSplit[ultimaPos]  
5474   	         	arrayDia.push({horasStr,diasSemana}); 
5475
5476
5477 
5478   		arrayDia = groupByArray(arrayDia, 'horasStr','diasSemana'); 
5479   		arrayDia = orderByArray(arrayDia,arrayDiasSemana); 
5480   		 
5481   		var ret = diaHorarioOfertaFormatado(arrayDia,arrayDiasSemana); 
5482			return ret; 
5483
5484 
5485   //cria um array de objetos Agrupando de acordo ao campo informado como chave.  
5486   //@arr = Array multidimensional que tenha os campos key e valueAdd 
5487   //@key = campo que será chave nesse array 
5488   //@valueAdd = campo que será agrupado caso tenha a mesma informação passada no campo key 
5489   const groupByArray = (arr, key,valueAdd) => { 
5490   		const initialValue = []; 
5491   		const retornoValue = []; 
5492   		arr.forEach((acc, cval) => { 
5493   			const myAttribute = cval[key]; 
5494   			acc[key] in retornoValue ? retornoValue[acc[key]].push(acc[valueAdd]):retornoValue[acc[key]]=[acc[valueAdd]]; 
5495   			return acc; 
5496     		}, initialValue); 
5497   	return retornoValue; 
5498   }; 
5499 
5500 
5501   //Cria um array de objetos a partir do primeiro array inserido e ordenados de acordo a ordem do segundo array informado.  
5502   //@arrayOrdena = Array de objetos que tenha os campos que precisa ser ordenados 
5503   //@ordem = array com a sequencia que queira ordenar - ex: seg, ter, qua, qua 
5504   const orderByArray = (arrayOrdena, ordem) => { 
5505 
5506   	let diasSem = []; 
5507   	const arrayOrdenado = []; 
5508   	let controle; 
5509   	 
5510   	//percorre cada campo existente no ordem e busca o mesmo no arrayOrdena, encontrando insere no arrayOrdenado 
5511   	for(let campo of ordem){	 
5512   		Object.entries(arrayOrdena).forEach(([key, value]) => { 
5513   			for(let diaOferta of value){ 
5514   				if(diaOferta===Object.keys(campo)[0]){ 
5515   					arrayOrdenado[key]=arrayOrdena[key]; 
5516
5517
5518   	    }) 
5519
5520   	return arrayOrdenado; 
5521   }; 
5522 
5523   //retorna o valor de um objeto dentro de um array 
5524   //@objetoBusca = array de objetos que sera buscado o valor 
5525   //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor 
5526   function findValueInObject(objetoBusca, keyBusca){ 
5527   	var retorno = ""; 
5528   	Object.entries(objetoBusca).forEach(([horario, dias]) => { 
5529   		Object.entries(dias).forEach(([key,val]) => { 
5530   			if(key.trim()==keyBusca.trim()){ 
5531   				retorno = val; 
5532
5533   		}); 
5534   	}); 
5535   	return retorno; 
5536
5537 
5538   //Recebe um objeto com valores dos dias da semana e define se sao dias seguidos ou alternados.  
5539   //@arrayComDiasDaSemana = array com os dias da semana a serem validados - exemplo ['Qua','Qui','Sex'] 
5540   //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor 
5541   function diasSequenciaisOuAlternados(arrayComDiasDaSemana, arrayDiasDaSemana){ 
5542   	 
5543   	let arrayValidador = []; 
5544   	 
5545   	//cria um array com o index dos dias das semanas encontrados [0 = seg, 1 = ter ... 6 = dom] 
5546   	for(let diaOferta of arrayComDiasDaSemana){ 
5547   		for(let i = 0; i < arrayDiasDaSemana.length; i++){ 
5548   			if(diaOferta === Object.keys(arrayDiasDaSemana[i])[0]){ 
5549   				arrayValidador[i] = true; 
5550   			}				 
5551
5552
5553 
5554   	let keyCompair = 99; 
5555   	var sequencial = true; 
5556 
5557   	//verifica quais posições foram criadas no array, e se os valores delas estão em sequencia. 
5558   	for(let keyValidator of Object.keys(arrayValidador)){ 
5559   		keyValidator = parseInt(keyValidator); 
5560   		if(keyCompair!==99){ 
5561   			if(keyValidator===keyCompair){ 
5562   				sequencial = true; 
5563   			}else{ 
5564   				sequencial = false; 
5565   				break; 
5566
5567
5568   		keyCompair = keyValidator+1; 
5569
5570   	return sequencial; 
5571
5572 
5573 
5574   //Exibe as informações de dia e horario de oferta de acordo a sua estrutura 
5575   //Caso os dias sejam sequenciais exibe a primeiro e ultimo dia da semana ligados com a letra 'a' Ex: Segunda a Quinta  
5576   //Caso os dias Nao sejam sequenciais exibem todos os dias separados por virgula  Ex: Segunda, terça, sexta e domingo 
5577   //@arrayAgrupadoEOrdenado = array de objetos que sera exibido 
5578   //@arrayDiasDaSemana = array com os dias da semana, sendo chave a sigla da semana (ex: Qua) e o valor o nome esperado (ex: Quarta) 
5579   function diaHorarioOfertaFormatado(arrayAgrupadoEOrdenado, arrayDiasDaSemana){ 
5580 
5581   	var stringAux = "";		 
5582   	var listRetorno = []; 
5583   		 
5584   	Object.entries(arrayAgrupadoEOrdenado).forEach(([key, value]) => {		 
5585 
5586   		var sequencial = diasSequenciaisOuAlternados(value, arrayDiasDaSemana); 
5587   		var stringAux = "";		 
5588   		var diaOferta = {}; 
5589 
5590   		if(sequencial){ 
5591   			switch (value.length) { 
5592       			case 1: 
5593   					stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+": "; 
5594   					diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula 
5595   					diaOferta.horario = key; 
5596   				break; 
5597   				case 2: 
5598   					stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": "; 
5599   					diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula 
5600   					diaOferta.horario = key; 
5601   				break; 
5602   				default: 
5603          				stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" a "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": "; 
5604   					 
5605   					diaOferta.dias =  stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula 
5606   					diaOferta.horario = key; 
5607   				break; 
5608   			}	 
5609   		}else{ 
5610   			switch (value.length) { 
5611       			case 2: 
5612   					stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": "; 
5613   					diaOferta.dias =  stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula 
5614   					diaOferta.horario = key; 
5615   				break; 
5616   				default: 
5617   					var ct = 0; 
5618   					var stringDias=""; 
5619   					for(let v of value){ 
5620       					ct++; 
5621   						ct==value.length ? stringDias=stringDias.substring(0,stringDias.length - 2)+" e "+findValueInObject(arrayDiasDaSemana,v) : stringDias+=findValueInObject(arrayDiasDaSemana,v)+", "; 
5622
5623          				stringAux = stringAux+stringDias+": "; 
5624   					diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula 
5625   					diaOferta.horario = key; 
5626   				break; 
5627
5628
5629 
5630   		listRetorno.push(diaOferta); 
5631   	}) 
5632   	return listRetorno; 
5633   }; 
5634 
5635 
5636   //Distribui dia e horario com quebra de linha entre eles ou nao dependendo da resolução de tela e tamanho da string 
5637   function ajustaTextoDiasHorarioOferta(codOferta){ 
5638 
5639	   var classOferta = ".codigoOferta_"+codOferta;  
5640	   let oferta = $(classOferta); 
5641 
5642	   let ofertaDiasSemana = $(oferta).find('*[data-dia-hora="dias-semana"]'); 
5643 
5644	   let widthDevice = window.screen.width; 
5645	   let tamLimDesktop = 185; 
5646	 
5647	   if(widthDevice <= 1024){ 
5648	       tamLimDesktop = 180; 
5649
5650	  
5651	   ofertaDiasSemana.each(function(index){ 
5652 
5653		   		   	 
5654	       let widthDiaSemana = $(this).width(); 
5655	 
5656	       let contentDiaHora = $(this).parent().parent().parent(); 
5657	   	 
5658	       if(!(widthDiaSemana <= tamLimDesktop)){ 
5659			   $(this).css("display","block"); 
5660
5661	 
5662		   if(ofertaDiasSemana.length == parseInt(index+1)){ 
5663		       contentDiaHora.css("opacity","1"); 
5664
5665 
5666   		})  
5667
5668 
5669   function getObjBtnComprar(oferta){ 
5670      let obj = {}; 
5671      obj['dataEspacoEx'] = (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? 'true' : 'false'; 
5672      if($('#manutencao-compra').val()){ 
5673        obj['classeBotao'] = 'disabled manutencao'; 
5674        obj['textoBotao'] = $('#manutencao-compra').val(); 
5675      }  
5676      else{ 
5677        obj['classeBotao'] = oferta.botaoCompraOferta == 'true' ? (oferta.vagasParaCompraOferta == 'true' ? '' : 'disabled') : 'd-none-btn'; 
5678        obj['textoBotao'] = oferta.vagasParaCompraOferta == 'true' ? 'COMPRAR' : 'Vagas esgotadas para compra'; 
5679
5680      return obj; 
5681
5682    
5683     function getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade){ 
5684        
5685       var formaPagtoObj = {}; 
5686	    
5687	     var regNumMaxParce = new RegExp('\{numeroMaxParcelasOferta\}', 'g'); 
5688         var regPrecMaxParce = new RegExp('\{precoVendaMaxParcelaOferta\}', 'g') 
5689 
5690       formaPagtoObj['regIndex']  = index; 
5691       formaPagtoObj['precoCheioOferta'] = formataValor(oferta.precoCheioOferta); 
5692       formaPagtoObj['textoCartoesAceitos'] = oferta.textoCartoesAceitos; 
5693 
5694       formaPagtoObj['numParcelaCartoes'] = oferta.numParcelaCartoes; 
5695       formaPagtoObj['precoParcelaCartoes'] = oferta.precoParcelaCartoes; 
5696       formaPagtoObj['numParcelaBoleto'] = oferta.numParcelaBoleto; 
5697       formaPagtoObj['precoParcelaBoleto'] = oferta.precoParcelaBoleto; 
5698       formaPagtoObj['precoVendaOferta'] = formataValor(oferta.precoVendaOferta); 
5699        
5700       formaPagtoObj['economia'] = formataValor(parseFloat(oferta.precoCheioOferta).toFixed(2) - parseFloat(oferta.precoVendaOferta).toFixed(2)); 
5701       formaPagtoObj['espacoExterno'] = oferta.espacoExterno == 'true' ? 'true' : 'false'; 
5702       formaPagtoObj['dataUnidade'] = codigoUnidade; 
5703       formaPagtoObj['dataEvento'] = oferta.codigoOferta; 
5704       formaPagtoObj['destinoCompra '] = oferta.destinoCompra; 
5705        
5706       //EMED nao restringe o botao 
5707       if(isEmed){ 
5708          let manutencao = $('#manutencao-compra').val();  
5709          formaPagtoObj['textoBotaoComprar'] = manutencao || 'COMPRAR'; 
5710           formaPagtoObj['classeBotaoComprar'] = manutencao ? 'disabled manutencao' : ''; 
5711       }else{ 
5712          let btnComprar = getObjBtnComprar(oferta);  
5713          formaPagtoObj['textoBotaoComprar'] = btnComprar.textoBotao; 
5714           formaPagtoObj['classeBotaoComprar'] = btnComprar.classeBotao; 
5715
5716 
5717       formaPagtoObj['regNumMaxParce'] = oferta.numeroMaxParcelasOferta; 
5718       formaPagtoObj['regPrecMaxParce'] = formataValor(oferta.precoVendaMaxParcelaOferta); 
5719        
5720       //valores extensao - como o modal de livre e tec nao tem as classes especificas de extensao, nao há problema criar os valores abaixo para qualquer tipo de curso  
5721       formaPagtoObj['precoAVistaPadraoExt'] = formataValor(oferta.precoVendaOferta); 
5722       var precoContribuinteExtensao = (parseFloat(oferta.precoVendaOferta).toFixed(2) * 0.80).toFixed(2); 
5723       formaPagtoObj['precoContrExt'] = formataValor(precoContribuinteExtensao); 
5724       formaPagtoObj['economiaExt'] = formataValor(parseFloat(oferta.precoVendaOferta).toFixed(2) - precoContribuinteExtensao); 
5725       formaPagtoObj['precoParcelaBoletoExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaBoleto).toFixed(2)); 
5726       formaPagtoObj['precoParcelaCartoesExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaCartoes).toFixed(2)); 
5727       formaPagtoObj['precoAVistaContrExt'] = formataValor( (precoContribuinteExtensao * 0.92).toFixed(2)); 
5728          
5729       return formaPagtoObj; 
5730
5731      
5732     function calculaPrecoAvista(precoVendaOferta){ 
5733      return (parseFloat(precoVendaOferta).toFixed(2) * 0.92).toFixed(2); 
5734
5735 
5736    function createModalFormaPagto(formaPagtoObj, oferta, index) { 
5737      let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio) 
5738      temDesconto = temDesconto && !possuiMensalidade99(oferta)       
5739       
5740      result = ` 
5741        <div id="modalFormaPagto" class="ssp-modal"> 
5742          <div class="ssp-card-modal-forma-pagamento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"> 
5743            <div class="ssp-card-modal-forma-pagamento__header" style="border: 0; margin-bottom: 0 !important;"> 
5744              <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold" style="color:#454F63">Descontos e ` + (temDesconto ? 'pagamento' : 'parcelamento') + `</h6> 
5745              <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_` + index + `"></i> 
5746            </div> 
5747
5748        + (temDesconto ? '' : '<div class="ssp-card-oferta-curso__line-divider mt-0 mb-5 mb-md-8"></div>') + 
5749
5750            <div class="ssp-card-modal-forma-pagamento__body">               
5751      `       
5752      if(temDesconto) { 
5753        result = result + ` 
5754             <div> 
5755                <p class="my-0"><strong>Valor com </strong> 
5756                  <span class="ssp-card-oferta-curso__valor-desconto mt-0 mb-0">50% de desconto*</span>                   
5757                </p> 
5758              </div> 
5759              <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar((strToFloat(oferta.precoVendaOferta)/strToFloat(oferta.numeroMaxParcelasOferta))/2, 2)) + `*</h6>` 
5760               
5761        if($('[name="tipoCurso"]').val() == 'extensao') { 
5762          result = result + `<p class="modal-extensao_txteconomiza my-0">*Desconto válido para quem tem ou trabalha em empresa do setor de comércio e serviços, estudantes ou ex-estudantes de cursos técnicos no Senac ou para quem já finalizou o Ensino Médio Técnico no Senac.</p>` 
5763        } else { 
5764          result = result + `<p class="modal-extensao_txteconomiza my-0">*Desconto válido para quem tem ou trabalha em empresa do setor de comércio e serviços.</p>` 
5765
5766               
5767         
5768        result = result + ` 
5769              <div class="ssp-card-oferta-curso__line-divider mb-5 mb-md-2 mt-2"></div> 
5770              <p class="my-0"><strong>Valor:</strong></p> 
5771              <h6 class="ssp-card-oferta-curso__item-valor-investimento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6> 
5772              <p class="mt-0 mb-0"><strong>Valor Total: </strong> ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</p> 
5773              <div class="ssp-card-oferta-curso__line-divider mt-4 mb-md-3 mb-4"></div> 
5774              <p class="my-0"><strong>Parcele e garanta mais tempo para pagar:</strong></p> 
5775
5776      } else { 
5777        if(formaPagtoObj.precoCheioOferta == formaPagtoObj.precoVendaOferta) { 
5778          result = result + ` 
5779              <p class="ssp-card-modal-forma-pagamento__valor-desconto mt-n3">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p> 
5780              <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p> 
5781              <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px">Se preferir, parcele e garanta muito mais tempo para pagar:</small> 
5782            </div> 
5783
5784        } else { 
5785          const textoDesc = temDesconto ? 'Valor com 30% de desconto:' : 'Valor com desconto:' 
5786           
5787          result = result + ` 
5788              <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px;">` + textoDesc + `</small> 
5789              <p class="ssp-card-modal-forma-pagamento__valor-cheio">R$ <span class="precoCheioOferta">` + formaPagtoObj.precoCheioOferta + `</span></p> 
5790              <p class="ssp-card-modal-forma-pagamento__valor-desconto">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p> 
5791              <p class="ssp-card-modal-forma-pagamento__total-economia">Você economiza <span>R$ <span class="economia">` + formaPagtoObj.economia + `</span></span></p> 
5792              <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p> 
5793              <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px">Se preferir, parcele e garanta muito mais tempo para pagar:</small> 
5794            </div> 
5795
5796
5797
5798 
5799      let textoParcelaCartoes, textoParcelaBoleto       
5800      if(temDesconto) { 
5801        const precoParcelaCartoes = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaCartoes)/2, 2)) 
5802        const precoParcelaBoleto = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaBoleto)/2, 2)) 
5803 
5804        if(formaPagtoObj.numParcelaCartoes) 
5805          textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x</span> sem juros</p>` 
5806 
5807        if(formaPagtoObj.numParcelaBoleto) 
5808          textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x</span> sem juros</p>` 
5809      } else { 
5810        if(formaPagtoObj.numParcelaCartoes) 
5811          textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x de R$ <span class="precoParcelaCartoes">` + formaPagtoObj.precoParcelaCartoes + `</span></span> sem juros</p>` 
5812         
5813        if(formaPagtoObj.numParcelaBoleto) 
5814          textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x de R$ <span class="precoParcelaBoleto">` + formaPagtoObj.precoParcelaBoleto + `</span></span> sem juros</p>` 
5815
5816 
5817      if(temDesconto) {  
5818        result = result + ` 
5819              <div class="ssp-card-modal-forma-pagamento__tipos">` 
5820 
5821        if(textoParcelaBoleto) 
5822          result = result + ` 
5823                <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start"> 
5824                  <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i> 
5825                  <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
5826                      <p><strong>Boleto Bancário</strong></p>` 
5827                      + textoParcelaBoleto +    
5828                  `</div> 
5829                </div>` 
5830 
5831        if(textoParcelaCartoes) 
5832          result = result + ` 
5833                <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4"> 
5834                  <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i> 
5835                  <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
5836                      <p><strong>Cartões</strong></p> 
5837                      <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>` 
5838                      + textoParcelaCartoes +    
5839                  `</div> 
5840                </div> 
5841              </div> 
5842
5843      } else { 
5844        result = result + ` 
5845              <div class="ssp-card-modal-forma-pagamento__tipos">` 
5846 
5847        if(textoParcelaCartoes) 
5848          result = result + ` 
5849                <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start"> 
5850                  <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i> 
5851                  <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
5852                      <p><strong>Cartões</strong></p> 
5853                      <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>` 
5854                      + textoParcelaCartoes +    
5855                  `</div> 
5856                </div>` 
5857 
5858        if(textoParcelaBoleto) 
5859          result = result + ` 
5860                <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4"> 
5861                  <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i> 
5862                  <div class="ssp-card-modal-forma-pagamento__info-cartao"> 
5863                      <p><strong>Boleto Bancário</strong></p>` 
5864                      + textoParcelaBoleto +    
5865                  `</div> 
5866                </div> 
5867              </div> 
5868
5869
5870 
5871      if(temDesconto) {  
5872        result = result + ` 
5873            <p class="txt-desconto-oito my-0">Pague à vista e ganhe <span style="color:#5ACC75;font-weight:bold">8% de desconto.</span></p> 
5874
5875
5876 
5877      result = result + ` 
5878            <a href="#a" class="btn btn-lg btn-success w-100" style="margin-top: 20px;font-weight:600"><span class="textoBotaoComprar">` + formaPagtoObj.textoBotaoComprar + `</span></a>` 
5879     
5880      if(temDesconto) {  
5881        result = result + ` 
5882            <a class="btn btn-primary modal-extensao-btn-conheca mt-3" href="/descontos-e-parcelamentos" target="_blank">Conheça os descontos</a> 
5883
5884
5885           
5886      result = result + ` 
5887         </div> 
5888        </div> 
5889
5890 
5891      return result; 
5892
5893      
5894     function montaHTMLModalFormaPgto(oferta, index, codigoUnidade){ 
5895        
5896       var tipoCurso = $('[name="tipoCurso"]').val(); 
5897        
5898       var formaPagtoObj = getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade); 
5899        
5900       var modalFormaPagto 
5901       if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) { 
5902          modalFormaPagto = $('#modalFormaPagtoExt').clone(); 
5903 
5904          $.each(formaPagtoObj, function(k,v){ 
5905            if(modalFormaPagto.find('.'+k).length > 0) 
5906              modalFormaPagto.find('.'+k).text(v); 
5907          }) 
5908        } else if(isEmed) { 
5909          modalFormaPagto = $('#modalPagtoEmed').clone(); 
5910 
5911          $.each(formaPagtoObj, function(k,v){ 
5912            if(modalFormaPagto.find('.'+k).length > 0) 
5913              modalFormaPagto.find('.'+k).text(v); 
5914          }) 
5915        } else 
5916           modalFormaPagto = $(createModalFormaPagto(formaPagtoObj, oferta, index)); 
5917          
5918       modalFormaPagto.removeAttr('id'); 
5919       modalFormaPagto.removeClass('d-none'); 
5920       modalFormaPagto.attr('id','myModal_'+index); 
5921        
5922       if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)){ 
5923          
5924         var botoaoCompraOk = modalFormaPagto.find('.modal-extensao-aluno__btn.ok'); 
5925         botoaoCompraOk.attr('id','btnComprarConhecaDescontoOk_'+index); 
5926          
5927         botoaoCompraOk.attr('data-espaco-ex', formaPagtoObj.espacoExterno); 
5928         botoaoCompraOk.attr('data-unidade', formaPagtoObj.dataUnidade); 
5929         botoaoCompraOk.attr('data-evento', formaPagtoObj.dataEvento); 
5930         botoaoCompraOk.attr('data-destino-compra', formaPagtoObj.destinoCompra); 
5931         botoaoCompraOk.attr('data-index', index); 
5932         botoaoCompraOk.addClass(formaPagtoObj.classeBotaoComprar); 
5933          
5934         var botoaoCompraNot =modalFormaPagto.find('.modal-extensao-aluno__btn.not'); 
5935         botoaoCompraNot.attr('id','btnComprarConhecaDescontoNot_'+index); 
5936          
5937         botoaoCompraNot.attr('data-espaco-ex', formaPagtoObj.espacoExterno); 
5938         botoaoCompraNot.attr('data-unidade', formaPagtoObj.dataUnidade); 
5939         botoaoCompraNot.attr('data-evento', formaPagtoObj.dataEvento); 
5940         botoaoCompraNot.attr('data-destino-compra', formaPagtoObj.destinoCompra); 
5941         botoaoCompraNot.attr('data-index', index); 
5942         botoaoCompraNot.addClass(formaPagtoObj.classeBotaoComprar); 
5943          
5944         modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.sim').attr('id','btn-aluno-sim_'+index); 
5945         modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.nao').attr('id','btn-aluno-nao_'+index); 
5946          
5947         modalFormaPagto.find('.modal-extensao-voltar-icon').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index); 
5948          
5949         modalFormaPagto.find('.modal-extensao-btn-conheca').attr('id','btnModalExtConheca_'+index); 
5950          
5951         modalFormaPagto.find('.modal-pergunta-aluno-ext').attr('id','modalExtAluno_'+index); 
5952          
5953         modalFormaPagto.find('.msg-alunoSim').attr('id','msg-alunoSim_'+index); 
5954         modalFormaPagto.find('.msg-alunoNao').attr('id','msg-alunoNao_'+index); 
5955          
5956         var botaoCompra = modalFormaPagto.find('.modal-extensao__btn.mt-3');  
5957      
5958       }else{ 
5959   
5960         modalFormaPagto.find('.mt-4').attr('id','content_boleto_'+index); 
5961         modalFormaPagto.find('.ssp-card-modal-forma-pagamento__btn-close').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index); 
5962          
5963         var botaoCompra = modalFormaPagto.find('.btn.w-100'); 
5964   
5965
5966        
5967       if(isEmed){ 
5968          
5969    	   	var elementoPai = modalFormaPagto.find('.ssp-card-modal-forma-pagamento'); 
5970	    		  
5971          //Cria botao inscreva-se ajustado ao modal 
5972          var dadosAbertura = calculaTempoAberturaBolsa(oferta.dataAberturaBolsaOferta, oferta.horaAberturaBolsaOferta); 
5973          if($('#manutencao-compra').val()){ 
5974            textoBotao = $('#manutencao-compra').val(); 
5975            classeBotao = 'disabled manutencao'; 
5976          }else{ 
5977            if(oferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta){ 
5978              textoBotao = 'Lista de espera'; 
5979              classeBotao = 'btn-emed-lista-espera'; 
5980            }else{ 
5981                if (dadosAbertura.bolsaJaAberta || !oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == ''){ 
5982                  if(oferta.etapa == '0020' || oferta.etapa == '0030'){ 
5983                    textoBotao = 'Lista de espera'; 
5984                    classeBotao = 'btn-emed-lista-espera'; 
5985                  }else{ 
5986                    textoBotao = 'Fazer matrícula'; 
5987                    classeBotao = ''; 
5988
5989                }else{ 
5990                  textoBotao = 'Inscrições em '+formataDataAberturaBolsa(oferta.dataAberturaBolsaOferta, oferta.horaAberturaBolsaOferta); 
5991                  classeBotao = 'disabled'; 
5992
5993
5994
5995          criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, 'btnComprarEmedModal_' + index, elementoPai, index); 
5996          preencheDadosEmedModal(oferta, index); 
5997          
5998       }else{ 
5999	       botaoCompra.attr('id', "btnComprarFormaPgto_"+index); 
6000	       botaoCompra.attr('data-espaco-ex', formaPagtoObj.espacoExterno); 
6001	       botaoCompra.attr('data-unidade', formaPagtoObj.dataUnidade); 
6002	       botaoCompra.attr('data-evento', formaPagtoObj.dataEvento); 
6003	       botaoCompra.attr('data-destino-compra', formaPagtoObj.destinoCompra); 
6004	       botaoCompra.attr('data-index', index); 
6005		   botaoCompra.addClass(formaPagtoObj.classeBotaoComprar); 
6006
6007        
6008       $('.oferta-slick-area_modal').append(modalFormaPagto); 
6009       $('.oferta-slick-area_modal').find('.d-none-btn').remove(); 
6010        
6011       //Evita o erro de exibição de Nan 
6012       if(oferta.numParcelaBoleto.length == 0){ 
6013    	   $('#content_boleto_'+index).remove(); 
6014
6015
6016 
6017    
6018   function montaHTMLModalLocalRealizacao(oferta, index){ 
6019      
6020     var tituloLocalRealizacao = (localLivreOnline(oferta.localEspacoExterno) && !isHibrido) ? 
6021          '<i class="fas fa-wifi icon-wifi-title__modal"></i> <h6 class="title-idioma-online__modal"> Aulas Online - ao vivo</h6>' 
6022           : '<i class="ssp-modal__local-realizacao-content__icon-wifi"></i> <i class="ssp-modal__local-realizacao-content__icon-chalkboard-teacher"></i> <h6 class="ssp-modal-local-realizacao__title"> ONDE AS AULAS VÃO ACONTECER?</h6>'; 
6023      
6024     if(textoFormatoHibrido.length>0 && oferta.espacoExterno=="true") 
6025             textoFormatoHibrido += '</br>'; 
6026                        
6027     var localRealizacaoHTMLModal = htmlModalLocalRealizacao 
6028         .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text()) 
6029         .replace('\{textoFormatoHibrido\}', textoFormatoHibrido ) 
6030         .replace('\{localEspacoExterno\}',  oferta.espacoExterno=="true"? oferta.localEspacoExterno: "" ) 
6031         .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none") 
6032         .replace('\{classeEnderecoRealizacao\}',oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6033         .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno) 
6034         .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno) 
6035         .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno) 
6036         .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6037         .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno) 
6038         .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6039         .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno) 
6040         .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6041         .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno) 
6042        .replace(regIndex, index) 
6043        .replace('\{tituloLocalRealizacao\}', tituloLocalRealizacao) 
6044        .replace('\{classeEntendi\}', (localLivreOnline(oferta.localEspacoExterno)) ? "btn-modal-entendi__idioma-online" : ""); 
6045 
6046        $('.oferta-slick-area_modal').append(localRealizacaoHTMLModal); 
6047        $('.oferta-slick-area_modal').find('.d-none-btn').remove(); 
6048 
6049        if(oferta.ruaEspacoExterno == "") 
6050           $('.localEspacoExternoTexto_'+index).removeClass('ssp-modal-local-realizacao__subtitle'); 
6051
6052    
6053   function  montaHTMLModalAntesCompra(oferta, index, codigoUnidade){ 
6054 
6055    if(isEmed){ 
6056              
6057      $('#modalAntesCompraEmed_' + oferta.indice).remove(); 
6058      const antesCompraHTMLModal = $('#modalAntesCompraEmed').clone(); 
6059      antesCompraHTMLModal.attr('id', 'modalAntesCompraEmed_' + oferta.indice); 
6060      antesCompraHTMLModal.find('.ssp-card-modal-antes-compra__btn-close').addClass('ssp-card-modal-antes-compra__btn-close_'+oferta.indice); 
6061      antesCompraHTMLModal.find('.ssp-card-modal-selecionar-outro__btn-close').addClass('ssp-card-modal-selecionar-outro__btn-close_'+oferta.indice); 
6062      antesCompraHTMLModal.insertAfter('#modalAntesCompraEmed'); 
6063       
6064      if(oferta.etapa == '0010'){ 
6065        if(oferta.permiteListaEspera == statusEmed.ESPERA){ 
6066          antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010Espera').removeClass('d-none'); 
6067        }else{ 
6068          antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010').removeClass('d-none'); 
6069
6070      }else{ 
6071    	  antesCompraHTMLModal.find('.textoEmedModalAntesCompra0020e0030').removeClass('d-none'); 
6072
6073 
6074      const btnCompra = antesCompraHTMLModal.find('#btnCompraLocalEmed'); 
6075      btnCompra.attr('id', 'btnCompraLocalEmed_' + oferta.indice); 
6076      btnCompra.attr('offercode', oferta.codigoOferta); 
6077 
6078      btnCompra.on('click', function(ev){ 
6079        ev.preventDefault(); 
6080        execCompraEmed(oferta); 
6081      }); 
6082 
6083    }else{ 
6084    	 
6085   	 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val()); 
6086 
6087   	 
6088     var antesCompraHTMLModal = htmlModalAntesCompra 
6089         .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text()) 
6090         .replace('\{textoFormatoHibrido\}', textoFormatoHibrido ) 
6091         .replace('\{localEspacoExterno\}', oferta.espacoExterno=="true"? oferta.localEspacoExterno:"" ) 
6092         .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none") 
6093         .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != ""  ? "" : "d-none") 
6094         .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno) 
6095         .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno) 
6096         .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno) 
6097         .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6098         .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno) 
6099         .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6100         .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno) 
6101         .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none") 
6102         .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno) 
6103         .replace('\{componentBuyConfirmation\}', componentBuyConfirmation(codigoUnidade, oferta, dataEfetivaFormat)) 
6104         .replace('\{linkBtnBolsa\}', linkBolsa(oferta)) 
6105        .replace(regIndex, index);   
6106 
6107        $('.oferta-slick-area_modal').append(antesCompraHTMLModal); 
6108        $('.oferta-slick-area_modal').find('.d-none-btn').remove(); 
6109
6110
6111    
6112   async function populaOfertas(ofertas){ 
6113     
6114     //Zera variável que controla existência de ofertas com bolsa 
6115    ofertasComBolsa = false; 
6116 
6117    objsTela.ofertas = ofertas; 
6118 
6119    if(ofertas && ofertas.length)  
6120      $('#ssp-h3-turmas').show() 
6121    else  
6122      $('#ssp-h3-turmas').hide() 
6123        
6124     if(isEmed){ 
6125 
6126      $('.ssp-slick-ofertas-emed').empty(); 
6127         // executa a class do slick slider 
6128         $('.ssp-slick-ofertas-emed').removeClass('slick-initialized slick-slider slick-dotted'); 
6129      var etapa = getEtapaSelecionadaEmed(); 
6130      if(today < dataInscricoesEmed){ 
6131        ofertas = [] 
6132      } else { 
6133        ofertas = filtraOfertasEtapa(etapa, ofertas); 
6134
6135
6136 
6137     if(ofertas.length == 0){ 
6138        
6139      if($('#unidades-ofertas').val() || $('#chkInscricao').prop('checked') || $('#chkBolsa').prop('checked')) 
6140        hideCardSemTurmas(false) 
6141        
6142       $('.oferta-slick-area').empty(); 
6143       $('.prev-mobile').addClass('d-none'); 
6144       $('.next-mobile').addClass('d-none'); 
6145        
6146       //Mostrar section registro interesse quando nao tiver oferta 
6147       
6148       habilitarRegistroInteresse(true); 
6149       //EMED remove msg registro interesse 
6150        //if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none'); 
6151        controlaPaginaBolsa() 
6152       return; 
6153     }else{ 
6154           hideCardSemTurmas(true) 
6155          if(!isEmed) $('.prev-mobile, .next-mobile').removeClass('d-none'); 
6156          habilitarRegistroInteresse(false); 
6157
6158     
6159     
6160     $('.oferta-slick-area').empty(); 
6161     $('.oferta-slick-area_modal').empty(); 
6162     ofertas = ofertas.sort(function(a, b){ 
6163       return ordenar(a, b, 'ordenar'); 
6164     }); 
6165     // executa a class do slick slider 
6166     $('.oferta-slick-area').removeClass('slick-initialized slick-slider slick-dotted'); 
6167      
6168     //busca o codigoUnidade para o link do ecommerce 
6169     if(!isAoVivo){ 
6170      var selectedUnidade = $('#unidades-ofertas').val().split('@')[0]; 
6171      for(var i=0;objsTela.unidades.length > i ;i++){ 
6172        if(selectedUnidade == objsTela.unidades[i].categoryId) 
6173          codigoUnidade = objsTela.unidades[i].codigoUnidade; 
6174
6175
6176      
6177    // Montar object push - google tag manager - 2 
6178    itensEcommerce = criaItensEcommerce(ofertas); 
6179    sendEventEcommerce("view_item_list", Array.from(itensEcommerce.values())); 
6180 
6181     for(var i=0;ofertas.length > i ;i++){ 
6182   
6183       var oferta = ofertas[i]; 
6184        
6185       //guardando a oferta no map para chamar ajax com infos de bolsa em tempo real 
6186       oferta['indice'] = i; 
6187       ofertasMap.set(oferta.codigoOferta, oferta); 
6188        
6189       if(isAoVivo) 
6190          codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta); 
6191 
6192      if(isEmed && oferta.etapa == '0010'){ 
6193          try{ 
6194            let status = await getStatusEmed(oferta); 
6195            oferta['permiteListaEspera'] = status; 
6196          }catch(err){ 
6197            console.log(err); 
6198
6199
6200       montaHTMLOferta(oferta, i, codigoUnidade, false);  
6201       montaHTMLModalFormaPgto(oferta, i, codigoUnidade);  
6202       montaHTMLModalLocalRealizacao(oferta, i);  
6203       montaHTMLModalAntesCompra(oferta, i, codigoUnidade); 
6204       verificaBotaoBolsaSS(oferta); 
6205       verificaCursoAprendizagem(i); 
6206       verificaCursoTrampolim(i, oferta.codigoOferta); 
6207        
6208       associaEventoBtnFormaPagamento(i); 
6209       associaEventoBtnComprar(i);  
6210       associaEventoBtnComprarDentroFormaPgto(i); 
6211       associaEventoBtnLocalRealizacao(i); 
6212       associaEventosFecharModal(i); 
6213       
6214         if($('[name="tipoCurso"]').val() == 'extensao'){ 
6215             associaEventoBtnConheca(i);	 
6216             associaEventoBtnComprarConhecaDescontoOk(i); 
6217             associaEventoBtnComprarConhecaDescontoNot(i); 
6218             associaEventoBtnAlunoNao(i); 
6219             associaEventoBtnAlunoSim(i); 
6220
6221         
6222
6223   
6224     if(isEmed) sliderOfertasEmed() 
6225     else sliderOfertas(); 
6226 
6227     controlaPaginaBolsa() 
6228      
6229
6230 
6231   function hideCardSemTurmas(hide){ 
6232    if(!isEmed){ 
6233      if(hide) 
6234        $('.ssp-card-oferta-curso__sem-vaga').addClass('d-none'); 
6235      else 
6236        $('.ssp-card-oferta-curso__sem-vaga').removeClass('d-none'); 
6237    } else { 
6238 
6239      if(today < dataInscricoesEmed){ 
6240            //Texto emed 2023 
6241            const dataInscricoesFormat = dataInscricoesEmed.getUTCDate() + '/' + (dataInscricoesEmed.getUTCMonth() + 1) + '/' + dataInscricoesEmed.getUTCFullYear() 
6242            $('.ssp-emed__section__introCard').children().text('As inscrições já começam em ' + dataInscricoesFormat) 
6243            $('.ssp-emed__section__textCard').children('.texto').text('Antecipamos a data! Aproveite e registre seu interesse que a gente envia um lembrete.') 
6244            $('.ssp-emed__section__introCardCTA').text('Quer receber aviso por e-mail sobre a abertura das inscrições?') 
6245      } else { 
6246            $('.ssp-emed__section__introCard').children().text('Estude com a gente na próxima turma!') 
6247            $('.ssp-emed__section__textCard').children('.texto').text('Registre seu interesse e avisaremos você sobre a abertura das inscrições para o próximo ano.') 
6248            $('.ssp-emed__section__introCardCTA').text('Quer receber um aviso sobre as turmas do próximo ano?') 
6249
6250      
6251 
6252      if(hide){ 
6253        $('.sem-vaga-emed').addClass('d-none'); 
6254      }else{ 
6255        $('.sem-vaga-emed').removeClass('d-none'); 
6256        var tamScreen = $(window).width(); 
6257        if(tamScreen < 768){ 
6258            $('.slick-area-emed').slick({ 
6259            slidesToShow: 2, 
6260            slidesToScroll: 2, 
6261            autoplay: false, 
6262            infinite: false, 
6263            dots: false, 
6264            arrows: false, 
6265            centerPadding: 0, 
6266                        centerMode: false, 
6267            responsive: [ 
6268
6269                    breakpoint: 768, 
6270                    settings: { 
6271                        slidesToShow: 1, 
6272                        slidesToScroll: 1, 
6273                        variableWidth: false, 
6274                        infinite: false, 
6275                        centerPadding: 0, 
6276                        centerMode: false, 
6277                        dots: true, 
6278
6279
6280
6281        }); 
6282
6283
6284
6285
6286    
6287   function verificaCursoAprendizagem(i){ 
6288 
6289      //Esconde elementsos quando o curso é aprendizagem 
6290      if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){ 
6291         $('#btnComprar_'+i).remove(); 
6292         $('#container_investimento_'+i).remove(); 
6293         $('#container_forma_pgto_'+i).remove(); 
6294          
6295         var avisoAprendizagem = $('#aviso-curso-aprendizagem').clone(); 
6296         let btnFormAprendizagem = '<button class="btn btn-lg btn-success w-100 mt-3 btnModalAprendizagem" data-modal="open-modal" style="font-size:16px;background:#1FC923;font-weight: 600;">Preencher formulário</button>' 
6297         avisoAprendizagem.removeAttr('id'); 
6298         avisoAprendizagem.removeClass('d-none'); 
6299         $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoAprendizagem); 
6300         $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(btnFormAprendizagem); 
6301
6302
6303    
6304   function verificaCursoTrampolim(i, codOferta){ 
6305     if(ehCursoTrampolim){ 
6306          $('#btnComprar_'+i).remove(); 
6307          $('#container_investimento_'+i).remove(); 
6308          $('#container_forma_pgto_'+i).remove(); 
6309          $('.ssp-card-oferta-curso .codigoOferta_'+codOferta).hide(); 
6310           
6311          var avisoTrampolim = $('#avisoTrampolim').clone(); 
6312          avisoTrampolim.removeAttr('id'); 
6313          avisoTrampolim.removeClass('d-none'); 
6314          $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoTrampolim); 
6315
6316
6317    
6318   function verificaBotoesEmed(dadosOferta, verificaBolsa){	            
6319          
6320       if(!verificaBolsa || !dadosOferta.dataAberturaBolsaOferta || dadosOferta.dataAberturaBolsaOferta == ''){ 
6321         dadosOferta.vagasBolsaOferta = false; 
6322         dadosOferta.botaoBolsaOferta = false; 
6323
6324 
6325       var elementoPai = $('.codigoOferta_'+dadosOferta.codigoOferta+' .ssp-ofertas-emed__card-info-investimento'); 
6326                  
6327            //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs) 
6328            var dadosAbertura = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta); 
6329              var textoBotao = 'Fazer matrícula'; 
6330              var textoBotaoBolsa = ''; 
6331              var classeBotao = ''; 
6332              var classeBotaoBolsa = ''; 
6333              var exibirBotaoBolsa = false; 
6334              var exibirContador = false; 
6335              var htmlBotaoBolsa = ''; 
6336              var htmlBotao = ''; 
6337                 
6338              //verifica se o botão de concorrer a bolsa deve aparecer 
6339              //Oferta EMED possui bolsa apenas no 1o ano 
6340              if(dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !dadosAbertura.exibirContador){ 
6341                exibirBotaoBolsa = true; 
6342                if($('#manutencao-bolsa').val()){ 
6343                  classeBotaoBolsa = 'disabled manutencao'; 
6344                  textoBotaoBolsa = $('#manutencao-bolsa').val(); 
6345                }else{ 
6346                  if(dadosOferta.vagasBolsaOferta){ 
6347                    classeBotaoBolsa = dadosAbertura.bolsaJaAberta ? '' : 'disabled'; 
6348                    textoBotaoBolsa = dadosAbertura.bolsaJaAberta ? 'Inscrever para bolsa de estudo' : 'Bolsas em '+formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta); 
6349                  }else{ 
6350                    classeBotaoBolsa = 'disabled'; 
6351                    textoBotaoBolsa = 'Bolsas de Estudo Esgotadas'; 
6352
6353
6354
6355                   
6356                  //Verifica se o botão do cronômetro deve aparecer 
6357                  if(dadosAbertura.exibirContador){ 
6358                    textoBotao = dadosAbertura.textoContador; 
6359                    textoBotaoBolsa = dadosAbertura.textoContador; 
6360                    exibirContador = true; 
6361                    exibirBotaoBolsa = false; 
6362                  }else{ 
6363                    if($('#manutencao-compra').val()){ 
6364                      textoBotao = $('#manutencao-compra').val(); 
6365                      classeBotao = 'disabled manutencao'; 
6366                    }else{ 
6367 
6368                      if(dadosOferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta){ 
6369                        textoBotao = 'Lista de espera'; 
6370                        classeBotao = 'btn-emed-lista-espera'; 
6371                      }else{ 
6372                        classeBotao = ''; 
6373                        if (dadosAbertura.bolsaJaAberta || !dadosOferta.dataAberturaBolsaOferta || dadosOferta.dataAberturaBolsaOferta == ''){ 
6374                          textoBotao = 'Fazer matrícula'; 
6375                           
6376                          if(dadosOferta.etapa == '0020' || dadosOferta.etapa == '0030'){ 
6377                            textoBotao = 'Lista de espera'; 
6378                            classeBotao = 'btn-emed-lista-espera'; 
6379
6380                           
6381                           
6382                        }else{ 
6383                          textoBotao = 'Inscrições em '+formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta); 
6384
6385                        if(!dadosAbertura.bolsaJaAberta)  
6386                          classeBotao = 'disabled'; 
6387
6388                    }                                 
6389                     
6390                      criaBotaoInscreverEmed(dadosOferta, textoBotao, classeBotao, 'btnComprarEmed_' + dadosOferta.indice, elementoPai); 
6391
6392                 
6393              if(exibirBotaoBolsa){ 
6394                   
6395              if(!ofertasComBolsa) ofertasComBolsa = true; 
6396 
6397                criaBotaoBolsaEmed(dadosOferta, textoBotaoBolsa, classeBotaoBolsa); 
6398                     
6399              }else if(exibirContador){ 
6400 
6401                if(!ofertasComBolsa && dadosOferta.etapa == '0010') ofertasComBolsa = true; 
6402 
6403                //codigoOferta como index para usar o ofertasMap 
6404                htmlBotao = '<button id="btnContadorComprar_'+ dadosOferta.indice +'" data-index="'+ dadosOferta.codigoOferta +'" class="btn btn-card-investimento --inscreva-se">Inscreva-se em <span>'+textoBotao+'</span></button>'; 
6405                elementoPai.append(htmlBotao); 
6406                 
6407                if(dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta){ 
6408                    htmlBotao = '<button id="btnContadorBolsa_'+ dadosOferta.indice +'" data-index="'+ dadosOferta.codigoOferta +'" class="btn btn-card-investimento --bolsas">Bolsa em <span>'+textoBotaoBolsa+'</span></button>'; 
6409                    elementoPai.append(htmlBotao); 
6410
6411                   
6412
6413 
6414
6415    
6416   function criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, idBotao, elementoPai, index){ 
6417     criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai); 
6418     var btnInscr = elementoPai.find('#btnComprarEmedModal_' + index); 
6419     btnInscr.removeClass(btnInscr.classList); 
6420     btnInscr.addClass('btn btn-lg btn-success w-100'); 
6421     btnInscr.attr('style', 'margin-top: 20px;font-weight:600'); 
6422      
6423     //Reposiciona o botao voltar 
6424     var btnVoltar = elementoPai.find('.ssp-btn-emed__voltar-curso'); 
6425     elementoPai.find('.ssp-btn-emed__voltar-curso').remove(); 
6426     elementoPai.append(btnVoltar); 
6427     btnVoltar.addClass('ssp-btn-emed__voltar-curso_'+index); 
6428     btnVoltar.click(() => { 
6429    	 $('[id^="myModal_"]').each(function(index,modal){ 
6430			modal.style.display = "none"; 
6431		}) 
6432	}); 
6433
6434    
6435   function preencheDadosEmedModal(oferta,index){ 
6436	   var parcelaEntrada = 1; 
6437	   console.log(oferta); 
6438	   $('#myModal_'+index+' .numParcelaCartoesBoleto').text(oferta.numeroMaxParcelasOferta - parcelaEntrada); 
6439	   $('#myModal_'+index+' .precoParcelaCartoesBoleto').text(formataValor(oferta.precoVendaMaxParcelaOferta)); 
6440	   $('#myModal_'+index+' .numParcelaEmedModal').text(oferta.numeroMaxParcelasOferta - parcelaEntrada); 
6441	   $('#myModal_'+index+' .precoParcelaEmedModal').text(formataValor(oferta.precoVendaMaxParcelaOferta)); 
6442	   //$('#myModal_'+index+' .valorParcelaEntradaCartoesBoleto').text(formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta)/4, 2))); 
6443	    
6444
6445 
6446    
6447   function criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai){ 
6448      if(oferta.permiteListaEspera && oferta.permiteListaEspera == statusEmed.NAO_ENCONTRADA) return; 
6449       var htmlBotao = '<button id="'+ idBotao +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --inscreva-se '+ classeBotao +'"><span>'+textoBotao+'</span></button>'; 
6450      elementoPai.append(htmlBotao); 
6451              
6452      if(!classeBotao.includes('disabled')){ 
6453       
6454        elementoPai.on("click", '#'+ idBotao, function(ev){ 
6455          ev.preventDefault(); 
6456          const _modal = $('#modalAntesCompraEmed_'+$(this).data('index')); 
6457          _modal.css('display','flex'); 
6458           
6459           
6460        }); 
6461         
6462
6463 
6464
6465    
6466   function criaBotaoBolsaEmed(oferta, textoBotaoBolsa, classeBotaoBolsa=""){ 
6467      
6468     var htmlBotao = '<a id="btnBolsa_'+ oferta.indice +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --bolsas '+ classeBotaoBolsa +'">'+ textoBotaoBolsa +'</a>'; 
6469     $('.codigoOferta_'+oferta.codigoOferta+' .ssp-ofertas-emed__card-info-investimento').append(htmlBotao); 
6470       
6471     if(!classeBotaoBolsa.includes('disabled')){ 
6472       // Associa o evento de clique no botão de bolsa 
6473       $('#btnBolsa_'+oferta.indice).attr('href', linkBolsa(oferta)); 
6474       $('#btnBolsa_'+oferta.indice).attr('target', '_blank'); 
6475
6476
6477    
6478   function criaBotaoBolsa(oferta, textoBotaoBolsa, classeBotaoBolsa=""){ 
6479	    
6480	   const botao = $('<a>'+ textoBotaoBolsa +'</a>'); 
6481	   botao.attr('id', 'btnBolsa_' + oferta.indice); 
6482	   botao.attr('data-index', oferta.indice); 
6483	   botao.attr('class', 'btn btn-lg btn-info w-100 mt-3 ' + (classeBotaoBolsa || '')); 
6484	   botao.css('font-size', '14px'); 
6485	   botao.css('font-weight', '600'); 
6486	   botao.css('background-color', '#004EFF'); 
6487	   if(!classeBotaoBolsa.includes('disabled')){ 
6488		   if(oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)){ 
6489			   botao.attr('data-espaco-ex', 'true'); 
6490			   botao.click((ev)=>{  
6491					 ev.preventDefault();  
6492			         $('#btnCompraLocal_'+oferta.indice).hide(); 
6493			         $('#btnBolsaLocal_'+oferta.indice).show(); 
6494			         const _modal = $('#modalAntesCompra_'+oferta.indice); 
6495			         _modal.css('display','flex'); 
6496				}); 
6497		   }else{ 
6498		   botao.attr('href', linkBolsa(oferta)); 
6499		   botao.attr('target', '_blank'); 
6500
6501
6502	    
6503	   return botao; 
6504    
6505
6506 
6507   function verificaBotaoBolsaSS(oferta, codigoUnidade){ 
6508 
6509      
6510     if(!isEmed && (!oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == '') ) return; 
6511      
6512     if(!ehCursoTrampolim){ 
6513       $.ajax({ 
6514             url :  getUrlConsultaBolsa(oferta), 
6515             type : 'get', 
6516             dataType: 'json', 
6517             beforeSend: function (xhr) { 
6518             xhr.setRequestHeader ("Authorization", "KGG4KMW5s0CVowr7d6y6Ww=="); 
6519             }, 
6520         }) 
6521         .done(function(infosBolsa){ 
6522 
6523            
6524           if(infosBolsa != null && typeof infosBolsa !== 'undefined'){ 
6525        	    
6526             var codigoOfertaRetornoBolsa = infosBolsa.DATA[0].COD_EVENTO; 
6527             var retornoOfertaBolsaSenac = infosBolsa.DATA[0]; 
6528			  
6529			 //Sobrescreve as flags de bolsa com o retorno do serviço SS 
6530             ofertasMap.get(codigoOfertaRetornoBolsa).vagasBolsaOferta = retornoOfertaBolsaSenac.TEM_VAGA_BOLSA; 
6531             ofertasMap.get(codigoOfertaRetornoBolsa).botaoBolsaOferta = retornoOfertaBolsaSenac.BOTAO_BOLSA; 
6532			  
6533             var dadosOferta = ofertasMap.get(codigoOfertaRetornoBolsa); 
6534              
6535             //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs) 
6536             var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta); 
6537             var textoBotaoBolsa = ''; 
6538             var classeBotaoBolsa = ''; 
6539             var textoBotaoContadorBolsa = ''; 
6540             var exibirBotaoBolsa = false; 
6541             var exibirContadorBolsa = false; 
6542              
6543             //EMED 
6544           if(isEmed){ 
6545             verificaBotoesEmed(ofertasMap.get(codigoOfertaRetornoBolsa), true); 
6546             return; 
6547
6548              
6549             //Verifica o texto do botão de bolsa 
6550            if($('#manutencao-bolsa').val()) textoBotaoBolsa = $('#manutencao-bolsa').val(); 
6551            else{ 
6552 
6553              if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA){ 
6554                             
6555                if(dadosAberturaBolsa.bolsaJaAberta) 
6556                  textoBotaoBolsa = "Inscrever para bolsa de estudo"; 
6557                   
6558                else 
6559                  textoBotaoBolsa = "Inscrições para bolsas a partir de "+formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta); 
6560 
6561                  if(!ofertasComBolsa){ ofertasComBolsa = true; 
6562
6563              }else 
6564                textoBotaoBolsa = "Vagas esgotadas para bolsas de estudo"; 
6565
6566                 
6567             //verifica se o botão de concorrer a bolsa deve aparecer 
6568             if(retornoOfertaBolsaSenac.BOTAO_BOLSA && !dadosAberturaBolsa.exibirContador){ 
6569                
6570               exibirBotaoBolsa = true; 
6571 
6572               if(!ofertasComBolsa) ofertasComBolsa = true; 
6573                
6574               if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA && dadosAberturaBolsa.bolsaJaAberta && !$('#manutencao-bolsa').val()){ 
6575                   classeBotaoBolsa = ''; 
6576               }else{ 
6577                   classeBotaoBolsa = 'disabled'; 
6578
6579
6580              
6581             //Verifica se o botão do cronômetro deve aparecer 
6582             if(dadosAberturaBolsa.exibirContador && !$('#manutencao-bolsa').val()){ 
6583               textoBotaoContadorBolsa = dadosAberturaBolsa.textoContador; 
6584               exibirContadorBolsa = true; 
6585
6586              
6587             if(exibirBotaoBolsa) 
6588                $('.codigoOferta_'+codigoOfertaRetornoBolsa+' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append( criaBotaoBolsa(dadosOferta, textoBotaoBolsa, classeBotaoBolsa) ) 
6589             else if(exibirContadorBolsa) 
6590                $('.codigoOferta_'+codigoOfertaRetornoBolsa+' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append('<a id="btnContadorBolsa_'+dadosOferta.indice+'" data-index="'+dadosOferta.indice+'"  class="btn btn-lg btn-info w-100 mt-3" >Você poderá se inscrever para bolsa em <span>'+textoBotaoContadorBolsa+'</span></a>') 
6591             else { 
6592                $('.codigoOferta_'+codigoOfertaRetornoBolsa+'.content-btn-bolsa').hide() 
6593                $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide() 
6594             }      
6595                                   
6596           }else{ 
6597             //EMED 
6598              if(isEmed){ 
6599                verificaBotoesEmed(oferta, false); 
6600
6601
6602 
6603           controlaPaginaBolsa() 
6604         }) 
6605         .fail(function(){  
6606           $('.content-btn-bolsa.codigoOferta_'+oferta.codigoOferta).hide() 
6607           $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide() 
6608 
6609             //EMED 
6610           if(isEmed){ 
6611             verificaBotoesEmed(oferta, false); 
6612
6613         }); 
6614          
6615          
6616
6617      
6618
6619 
6620   function controlaPaginaBolsa(){ 
6621    if(ofertasComBolsa) 
6622      $("#ssp-abrir-pagina-bolsa").removeClass("d-none") 
6623    else 
6624      $("#ssp-abrir-pagina-bolsa").addClass("d-none") 
6625
6626 
6627   function associaEventoBtnFormaPagamento(i){ 
6628      var modal = document.getElementById("myModal_"+i); 
6629 
6630      var btn = document.getElementById("myBtn_"+i); 
6631 
6632      if(btn!=null){ 
6633         btn.onclick = function(ev) { 
6634             event.preventDefault() 
6635               
6636               $('#modalExtAluno_'+i).addClass('d-none'); 
6637                
6638             var elem = $(ev.target); 
6639             var _modal = document.getElementById( 
6640                 'myModal_'+elem.data('index')); 
6641             _modal.style.display = "block"; 
6642               $('#myModal_'+i).find('.modal-extensao_content:first-child').removeClass('d-none'); 
6643                
6644
6645
6646      
6647       
6648      
6649       
6650
6651    
6652  	    
6653   function actionBtnComprar(elem){ 
6654            
6655        // Montar object push - google tag manager - 3 
6656        ofertaSelecionada = itensEcommerce.get(elem.attr('data-evento')) 
6657        sendEventEcommerce("select_item", ofertaSelecionada); 
6658        sendEventEcommerce("view_item", ofertaSelecionada); 
6659                
6660               //Verifica se deve exibir o modal com a localização 
6661               if(elem.attr('data-espaco-ex') == 'true'){ 
6662         $('#btnCompraLocal_'+elem.data('index')).show(); 
6663 
6664         //Limpa onclicks para nao repetir execucao 
6665         $('#modalAntesCompra_'+elem.data('index')).off('click', '#btnCompraLocal_'+elem.data('index')) 
6666         $('#modalAntesCompra_'+elem.data('index')).on('click', '#btnCompraLocal_'+elem.data('index'), function () { 
6667          // Montar object push - google tag manager - 4 
6668          sendEventEcommerce("add_to_cart", ofertaSelecionada); 
6669          if( elem.attr('data-destino-compra') != '2' ) 
6670            sendEventEcommerce("begin_checkout", ofertaSelecionada); 
6671         }) 
6672         $('#btnBolsaLocal_'+elem.data('index')).hide(); 
6673         const _modal = $('#modalAntesCompra_'+elem.data('index')); 
6674         _modal.css('display','flex'); 
6675               }else{ 
6676                 var urlCompra  = linkBotaoCompra.replace('\{codigoUnidade\}', elem.attr('data-unidade')).replace('\{codigoOferta\}', elem.attr('data-evento')); 
6677     
6678                 if( elem.attr('data-destino-compra') == '2' ){ 
6679                	 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val()); 
6680	                  	 
6681                	 addItemBackpack(elem.attr('data-evento'), '#' + elem.attr('id'),elem.attr('data-unidade'), dataEfetivaFormat);    
6682    
6683                 }else{ 
6684                	 window.open(urlCompra, '_blank'); 
6685
6686
6687 
6688        
6689                  
6690
6691    
6692   function associaEventoBtnComprar(i){ 
6693	   var btnComprar = document.getElementById("btnComprar_"+i); 
6694	    
6695	   if(btnComprar != null && !btnComprar.classList.contains('disabled')){ 
6696         btnComprar.onclick = function(ev) { 
6697            
6698               ev.preventDefault() 
6699               var elem = $(ev.target); 
6700               actionBtnComprar(elem); 
6701                
6702
6703
6704
6705    
6706   function associaEventoBtnComprarDentroFormaPgto(i){ 
6707	   var btnComprarFormaPgto = document.getElementById("btnComprarFormaPgto_"+i); 
6708	    
6709	   if(btnComprarFormaPgto != null && !btnComprarFormaPgto.classList.contains('disabled')){ 
6710         btnComprarFormaPgto.onclick = function(ev) { 
6711               event.preventDefault() 
6712                 var elem =  $('#btnComprarFormaPgto_'+i); 
6713               actionBtnComprar(elem); 
6714
6715
6716
6717      
6718     function associaEventoBtnComprarConhecaDescontoOk(i){ 
6719       var btnComprarConhecaDescontoOk = document.getElementById("btnComprarConhecaDescontoOk_"+i); 
6720        
6721       if(btnComprarConhecaDescontoOk != null){ 
6722         btnComprarConhecaDescontoOk.onclick = function(ev) { 
6723                 event.preventDefault() 
6724               var elem = $(ev.target); 
6725                 actionBtnComprar(elem); 
6726
6727
6728
6729    
6730     function associaEventoBtnComprarConhecaDescontoNot(i){ 
6731       var btnComprarConhecaDescontoNot = document.getElementById("btnComprarConhecaDescontoNot_"+i); 
6732        
6733       if(btnComprarConhecaDescontoNot != null){ 
6734         btnComprarConhecaDescontoNot.onclick = function(ev) { 
6735                 event.preventDefault() 
6736                 var elem =  $(ev.target); 
6737                 actionBtnComprar(elem); 
6738
6739
6740
6741      
6742     function associaEventoBtnAlunoNao(i){ 
6743       var btnAlunoNao = document.getElementById("btn-aluno-nao_"+i); 
6744        
6745       if(btnAlunoNao != null){ 
6746         btnAlunoNao.onclick = function(ev) { 
6747                 event.preventDefault() 
6748                 var elem =  $(ev.target); 
6749                 elem.addClass('modal-extensao-btn-aluno-sim-ativo'), 
6750                 elem.closest('.sim').removeClass('modal-extensao-btn-aluno-sim-ativo'); 
6751                 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo') 
6752                 $('#msg-alunoNao_'+i).removeClass('d-none'); 
6753                 $('#msg-alunoSim_'+i).addClass('d-none');      
6754
6755
6756
6757        
6758     function associaEventoBtnAlunoSim(i){ 
6759       var btnAlunoSim = document.getElementById("btn-aluno-sim_"+i); 
6760        
6761       if(btnAlunoSim != null){ 
6762         btnAlunoSim.onclick = function(ev) { 
6763                 event.preventDefault() 
6764                 var elem =  $(ev.target); 
6765                 elem.addClass('modal-extensao-btn-aluno-sim-ativo'), 
6766                 elem.closest('.nao').removeClass('modal-extensao-btn-aluno-sim-ativo'); 
6767                 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo') 
6768                 $('#msg-alunoSim_'+i).removeClass('d-none'); 
6769                 $('#msg-alunoNao_'+i).addClass('d-none');              
6770                  
6771
6772
6773     }	    
6774      
6775     function associaEventoBtnConheca(i){ 
6776       var btnModalExtConheca = document.getElementById("btnModalExtConheca_"+i); 
6777        
6778       if(btnModalExtConheca != null){ 
6779         btnModalExtConheca.onclick = function(ev) { 
6780                 event.preventDefault(); 
6781                 var elem =  $(ev.target); 
6782                 elem.closest('.modal-extensao_content').addClass('d-none'); 
6783                 $('#modalExtAluno_'+i).removeClass('d-none'); 
6784                 $('#msg-alunoSim_'+i).addClass('d-none'); 
6785                 $('#msg-alunoNao_'+i).addClass('d-none'); 
6786                 $('#btn-aluno-sim_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo'); 
6787                 $('#btn-aluno-nao_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo'); 
6788 
6789
6790
6791
6792      
6793   function associaEventoBtnLocalRealizacao(i){ 
6794	   var btnLocalRealizacao = document.getElementById("btnLocalRealizacao_"+i); 
6795	    
6796	   if(btnLocalRealizacao!=null){ 
6797         btnLocalRealizacao.onclick = function(ev) { 
6798                 event.preventDefault(); 
6799               var elem = $(ev.target); 
6800               var _modal = document.getElementById( 
6801                   'modalLocalRealizacao_'+elem.data('index')); 
6802               _modal.style.display = "flex"; 
6803
6804
6805
6806 
6807   function associaEventosFecharModal(i){ 
6808 
6809      var span = document.getElementsByClassName("ssp-card-modal-forma-pagamento__btn-close_"+i); 
6810      var closeModalLocalRealizacao = document.getElementsByClassName("ssp-card-modal-local-realizacao__btn-close_"+i)[0]; 
6811       var closeModalAntesCompra = document.getElementsByClassName("ssp-card-modal-antes-compra__btn-close_"+i)[0]; 
6812       var closeModalSelecionarOutro = document.getElementsByClassName("ssp-card-modal-selecionar-outro__btn-close_"+i)[0]; 
6813       var btnEntendiLocalRealizacao = document.getElementsByClassName("ssp-modal-local-realizacao__btn_"+i)[0]; 
6814       var closeModalBotaoBolsa = document.getElementById("btnBolsaLocal_"+i) 
6815 
6816       if(isEmed){ 
6817    	   var closeModalFormaPagamento = document.getElementsByClassName("ssp-btn-emed__voltar-curso_"+i); 
6818   	      for (const val of closeModalFormaPagamento) {  
6819 
6820   	    	  val.onclick = function() { 
6821   	        	 $('[id^="myModal_"]').each(function(index,modal){ 
6822   	           	 	modal.style.display = "none"; 
6823   	        	 }); 
6824
6825   	      }; 
6826
6827        
6828	  //event close modal 
6829      for (const val of span) {  
6830 
6831    	  val.onclick = function() { 
6832        	 $('[id^="myModal_"]').each(function(index,modal){ 
6833           	 	modal.style.display = "none"; 
6834        	 }); 
6835
6836      }; 
6837   
6838      closeModalLocalRealizacao.onclick = function() { 
6839   
6840           $('[id^="modalLocalRealizacao_"]').each(function(index,modal){ 
6841             modal.style.display = "none"; 
6842              
6843           }); 
6844
6845 
6846       closeModalAntesCompra.onclick = function() { 
6847          
6848           $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){ 
6849             modal.style.display = "none"; 
6850           }); 
6851
6852 
6853       closeModalSelecionarOutro.onclick = function() { 
6854          
6855      $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){ 
6856          modal.style.display = "none"; 
6857        }); 
6858
6859          
6860       btnEntendiLocalRealizacao.onclick = function() { 
6861          
6862           $('[id^="modalLocalRealizacao_"]').each(function(index,modal){ 
6863             modal.style.display = "none"; 
6864           }); 
6865
6866		 
6867       if(closeModalBotaoBolsa != null){ 
6868	       closeModalBotaoBolsa.onclick = function() { 
6869	          
6870	         $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){ 
6871	             modal.style.display = "none"; 
6872	           }); 
6873
6874
6875 
6876       // When the user clicks anywhere outside of the modal, close it 
6877       window.onclick = function(event) { 
6878   
6879         $('[id^="myModal_"]').each(function(index,_modal){ 
6880             if (event.target == _modal)  
6881              _modal.style.display = "none"; 
6882         }); 
6883         $('[id^="modalLocalRealizacao_"]').each(function(index,_modal){ 
6884             if (event.target == _modal)  
6885              _modal.style.display = "none"; 
6886         }); 
6887          
6888         $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,_modal){ 
6889             if (event.target == _modal)  
6890              _modal.style.display = "none"; 
6891         }); 
6892
6893
6894    
6895   function turmasIniciadas(dataInicioCurso){ 
6896     
6897      var hoje = new Date();  
6898      var dataInicioPartes = dataInicioCurso.split('/');  
6899      var dataInicioCursoOferta = new Date(dataInicioPartes[2], dataInicioPartes[1] - 1, dataInicioPartes[0] , hoje.getHours(),hoje.getMinutes(),hoje.getSeconds(),hoje.getMilliseconds()); 
6900 
6901      return dataInicioCursoOferta.getTime() <= hoje.getTime(); 
6902
6903    
6904    
6905   function concatSTR(str1, str2, separador){ 
6906   
6907     if(str2){ 
6908   
6909       return str1+separador+str2; 
6910
6911     return str1; 
6912
6913    
6914   //Formata exibicao de datas conforme especificacao GCR 
6915   function formataPeriodo(dataInicio, dataFim){ 
6916     
6917      var dtInicioPartes = dataInicio.split('/'); 
6918      var dtFimPartes = dataFim.split('/'); 
6919       
6920      //Não exibir o número zero antes dos números e o dia 1 como 1º 
6921      var dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) +'/'+parseInt(dtInicioPartes[1].trim())+'/'+dtInicioPartes[2].trim(); 
6922      var dFimFormatada = (parseInt(dtFimPartes[0].trim()) == 1 ? '1º' : parseInt(dtFimPartes[0].trim())) +'/'+parseInt(dtFimPartes[1].trim())+'/'+dtFimPartes[2].trim(); 
6923     
6924      //Quando um curso inicia e finaliza dentro do mesmo ano: 17/2 a 25/4/2020 
6925      if(dtInicioPartes[2].trim() == dtFimPartes[2].trim()){ 
6926         
6927        dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()))+'/'+parseInt(dtInicioPartes[1].trim()); 
6928         
6929        //Quando um curso inicia e finaliza dentro do mesmo mês: 5 a 30/4/2020 
6930        if(dtInicioPartes[1].trim() == dtFimPartes[1].trim()) 
6931          dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())); 
6932
6933     
6934    return dInicioFormatada + ' a ' + dFimFormatada; 
6935
6936    
6937  //Decrementa os contadores de abertudas de bolsa 
6938   function atualizaTempoAberturasBolsas() { 
6939   
6940	  var btnsContador = (isEmed) ? $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]') : $('[id^="btnContadorBolsa_"]'); 
6941	   
6942    btnsContador.each(function() { 
6943       
6944      var index = $(this).data('index'); 
6945      var btnContent = $(this).parent('.ssp-btn-group__content'); 
6946       
6947      if(isEmed){ 
6948     		//EMED filtra ofertas e usa outra lista para referenciar as ofertas carregadas 
6949    	  var dadosAberturaBolsa = calculaTempoAberturaBolsa(ofertasMap.get('' +index).dataAberturaBolsaOferta, ofertasMap.get('' + index).horaAberturaBolsaOferta); 
6950      }else{ 
6951          	//calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs) 
6952      var dadosAberturaBolsa = calculaTempoAberturaBolsa(objsTela.ofertas[index].dataAberturaBolsaOferta, objsTela.ofertas[index].horaAberturaBolsaOferta, objsTela.ofertas[index].botaoBolsaOferta); 
6953
6954       
6955      $(this).find('span').text(dadosAberturaBolsa.hours+':'+dadosAberturaBolsa.minutes+':'+dadosAberturaBolsa.seconds); 
6956       
6957      //Se esgotou o contador 
6958      if(dadosAberturaBolsa.hours == 0 && dadosAberturaBolsa.minutes == 0 && dadosAberturaBolsa.seconds == 0){ 
6959         
6960    	var elId = $(this).attr('id'); 
6961    	   
6962        //remove o contador 
6963        $(this).remove(); 
6964         
6965        //Habilitar inscrição EMED 
6966        if(isEmed){ 
6967          var ofertaEmed = ofertasMap.get('' +index); 
6968        var elementoPai = $('.codigoOferta_'+ofertaEmed.codigoOferta+' .ssp-ofertas-emed__card-info-investimento'); 
6969         
6970          if(elId.indexOf('btnContadorBolsa') >= 0){ 
6971              if($('#manutencao-bolsa').val())   
6972                criaBotaoBolsaEmed(ofertaEmed, $('#manutencao-bolsa').val(), 'disabled manutencao'); 
6973              else if(ofertaEmed.vagasBolsaOferta == true || ofertaEmed.vagasBolsaOferta == "true") 
6974                criaBotaoBolsaEmed(ofertaEmed, 'Inscrever para bolsa de Estudo', ''); 
6975              else 
6976                criaBotaoBolsaEmed(ofertaEmed, 'Bolsas de Estudo Esgotadas', 'disabled'); 
6977          }else if(elId.indexOf('btnContadorComprar') >= 0){ 
6978	       		 
6979        	  	var textoBotao, classeBotao; 
6980        	   
6981              textoBotao = $('#manutencao-compra').val() || 'Fazer matrícula'; 
6982              classeBotao = $('#manutencao-compra').val() ? 'disabled manutencao' : ''; 
6983             
6984 
6985            criaBotaoInscreverEmed(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmed_' + ofertaEmed.indice, elementoPai); 
6986             
6987            //Altera o botao do modal de pagamento 
6988            var btnIndex = elId.slice(elId.indexOf('_')+1); 
6989            var modal = $('#myModal_' + btnIndex).find('.ssp-card-modal-forma-pagamento'); 
6990            var btnModal = modal.find('#btnComprarEmedModal_' + btnIndex); 
6991            if(btnModal){ 
6992              btnModal.remove();					   
6993              criaBotaoInscreverEmedModal(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmedModal_' + btnIndex, modal, btnIndex); 
6994              preencheDadosEmedModal(ofertaEmed,btnIndex); 
6995
6996 
6997 
6998          }	         
6999           
7000        }else{ 
7001         
7002	        //Checa as condições das vagas do botão de bolsa 
7003          var btnBolsaHTML = null; 
7004          if($('#manutencao-bolsa').val())   
7005            btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], $('#manutencao-bolsa').val(), 'disabled manutencao'); 
7006	        else if(objsTela.ofertas[index].vagasBolsaOferta == true || objsTela.ofertas[index].vagasBolsaOferta == "true") 
7007        	  btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Inscrever para bolsa de estudo'); 
7008	        else 
7009        	  btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Vagas esgotadas para bolsas de estudo', 'disabled'); 
7010	         
7011            $('.codigoOferta_'+ objsTela.ofertas[index].codigoOferta +'.ssp-container-botao-bolsa').append(btnBolsaHTML); 
7012	         
7013 
7014
7015
7016       
7017    }); 
7018    
7019
7020    
7021   // Retorna um objeto com o tempo de abertura da bolsa, em horas, minutos e segundos 
7022    function calculaTempoAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa){ 
7023       
7024        var dadosAberturaBolsa = { 
7025              days : '', 
7026            hours : '', 
7027            minutes : '', 
7028            seconds : '', 
7029            bolsaJaAberta: false, 
7030            exibirContador: false, 
7031            textoContador: '' 
7032          }; 
7033       
7034      if(dataAberturaBolsa.length == 0 || horaAberturaBolsa.length == 0) 
7035         return dadosAberturaBolsa; 
7036       
7037      var now = todayG; 
7038      var dia = now.getDate(); 
7039      var horarioDia = now.getHours(); 
7040         
7041      var tempoRestante= tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa); 
7042       
7043      //console.log('tempo restante '+tempoRestante); 
7044       
7045      var diaAberturaBolsa = dataAberturaBolsa.split('-')[2]; 
7046     
7047      var delta = tempoRestante / 1000; 
7048       
7049      var days = Math.floor(delta / 86400); 
7050       
7051      delta -= days * 86400; 
7052       
7053      var hours = Math.floor(delta / 3600) % 24; 
7054      delta -= hours * 3600; 
7055       
7056      var minutes = Math.floor(delta / 60) % 60; 
7057      delta -= minutes * 60; 
7058       
7059      var seconds = Math.floor(delta % 60); 
7060       
7061      //Zerar contador para data que ja passou 
7062      if(days < 0){ 
7063          dadosAberturaBolsa.days = 0; 
7064          dadosAberturaBolsa.hours = '00'; 
7065          dadosAberturaBolsa.minutes = '00'; 
7066          dadosAberturaBolsa.seconds = '00'; 
7067      }else{ 
7068          dadosAberturaBolsa.days = days; 
7069          dadosAberturaBolsa.hours = hours < 10 ? '0'+hours : hours; 
7070          dadosAberturaBolsa.minutes = minutes < 10 ? '0'+minutes : minutes; 
7071          dadosAberturaBolsa.seconds = seconds < 10 ? '0'+seconds : seconds; 
7072
7073 
7074      dadosAberturaBolsa.bolsaAberta = days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0; 
7075      var horaExibeContador = (isEmed) ? 11 : 8; 
7076      if(!isEmed && botaoBolsa == false){ 
7077    	  dadosAberturaBolsa.exibirContador = false; 
7078      }else{ 
7079          dadosAberturaBolsa.exibirContador = days == 0 && horarioDia >= horaExibeContador && !dadosAberturaBolsa.bolsaAberta && (diaAberturaBolsa == dia); 
7080          dadosAberturaBolsa.textoContador = dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ":"+ dadosAberturaBolsa.seconds; 
7081
7082      dadosAberturaBolsa.bolsaJaAberta = tempoRestante < 0; 
7083       
7084      return dadosAberturaBolsa; 
7085   
7086
7087    
7088   // Verifica se uma oferrta já chegou sua data de abertura 
7089   function tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){ 
7090     // console.log(dataAberturaBolsa); 
7091     // console.log(horaAberturaBolsa); 
7092       
7093      //var today = new Date(); 
7094       
7095       
7096      //console.log( "TodayG "+ todayG); 
7097       
7098      //Precisa fazer formatação nos horários pois pode estar como 9h ou 9h30 
7099      var partesHora = horaAberturaBolsa.split('h'); 
7100       
7101      var partesHora = partesHora.filter(function (el) { 
7102        return el != ""; 
7103      }); 
7104       
7105      //formato 9h 
7106      if(partesHora.length == 1) 
7107        var aberturaBolsa = new Date(dataAberturaBolsa+'T'+horaAberturaBolsa.replace('h', '').trim()+":00"); 
7108   
7109      else{ 
7110         
7111        //format 9h3 
7112        if(partesHora[1].length == 1) 
7113          var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1] +'0'); 
7114           
7115        //formato 9h30 
7116        else 
7117          var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1]); 
7118
7119        
7120     // console.log(aberturaBolsa); 
7121      return aberturaBolsa - todayG; 
7122
7123    
7124   function formataDataAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){ 
7125      var dataPartes = dataAberturaBolsa.split('-'); 
7126       
7127      return dataPartes[2]+'/'+dataPartes[1]+ ' às '+horaAberturaBolsa.replace('h', '').trim()+' horas'; 
7128       
7129
7130   
7131   function formataValor(valor){ 
7132       
7133      if(!valor.toString().includes(".")){ 
7134        valor = parseFloat(valor).toLocaleString('pt-BR')+",00"; 
7135      }else{ 
7136         valor = parseFloat(valor).toLocaleString('pt-BR'); 
7137          
7138         if(valor.split(",").length == 2){ 
7139            
7140           if(valor.split(",")[1].length == 1) 
7141              valor += "0"; 
7142            
7143         }else 
7144           valor += ",00"; 
7145
7146       
7147      return valor; 
7148
7149 
7150  function ajustarCasasDecimaisSemArredondar(numero, casas) { 
7151    const str = numero + '' 
7152    const arr = str.split('.') 
7153    return parseFloat(arr[0].concat('.').concat(arr[1] ? arr[1].substring(0, casas) : '0')) 
7154
7155 
7156  function possuiCriteriosDesconto2022(dt) { 
7157    return dt.substring(dt.lastIndexOf('/') + 1) >= 2022 
7158      && ( 
7159        $('[name="tipoCurso"]').val() == 'livre' 
7160        || ($('[name="tipoCurso"]').val() == 'tecnico' && $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio') 
7161        || $('[name="tipoCurso"]').val() == 'extensao' 
7162
7163
7164 
7165  function strToFloat(str) { 
7166    const separator = str.includes(',') ? ',' : '.' 
7167 
7168    const numArr = str.split(separator) 
7169    const inteiro = numArr[0].replaceAll('.', '').replaceAll(',', '.') 
7170    const decimal = numArr[1] ? numArr[1].replaceAll('.', '').replaceAll(',', '.') : '' 
7171    return parseFloat(inteiro.concat('.').concat(decimal ? decimal : '0')) 
7172
7173 
7174  function possuiMensalidade99(oferta) { 
7175    if(!oferta.precoVendaMaxParcelaOferta  
7176    || (oferta.precoVendaMaxParcelaOferta != 99 
7177    && parseFloat(oferta.precoParcelaCartoes.replace(',','.')) != 99 
7178    && parseFloat(oferta.precoParcelaBoleto.replace(',','.')) != 99)) 
7179      return false 
7180 
7181    if($('[name="modalidades"]').val() == 'hab.-tecnica-de-nivel-medio') 
7182      return true 
7183 
7184    if($('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio') 
7185      return true 
7186 
7187    if($('[name="modalidades"]').val() == 'qualificacao-profissional') 
7188      return true 
7189     
7190    return false 
7191
7192    
7193  function htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) { 
7194    let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio) 
7195    temDesconto = temDesconto && !possuiMensalidade99(oferta) 
7196     
7197    const btnLocalReal = function(oferta){ 
7198       
7199      var btn = `<div class="container-local-realizacao ` + ((oferta.espacoExterno == 'true'|| (isHibrido && temTextoParaFormatoHibrido))  ? '' : 'd-none-btn') + (localLivreOnline(oferta.localEspacoExterno) ? ' idioma-online' : '') + `">`; 
7200       
7201      btn += (localLivreOnline(oferta.localEspacoExterno)) ? 
7202            `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="btn-idiomas__aula-online" href="#"> 
7203            <i class="fas fa-wifi"></i>Aulas Online - ao vivo</a>` 
7204            : `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__local-realizacao-content__title" href="#"><i class="fas fa-user"></i>Onde as aulas vão acontecer?</a>`; 
7205       
7206        btn += `</div>`; 
7207         
7208      return btn; 
7209     
7210
7211 
7212    // Card Oferta 
7213     
7214    let result = ` 
7215        <div class="slick-area__item card_oferta_` + index + ` codigoOferta_` + oferta.codigoOferta + ` ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"> 
7216 
7217          <div class="ssp-card-oferta-curso"> 
7218 
7219            <div class="content-data-dias"> 
7220 
7221              <div class="ssp-card-oferta__info-turma-iniciada" id="aviso-turma-iniciada-` + index + `" style="display:none"> 
7222                <h6 style="color:white;background-color:#ff7157;border-radius: 5px;padding: 8px 0px;width: 60%;font-size: 12px;margin-top: 0;"><strong>Turma iniciada, comece já!</strong></h6> 
7223              </div> 
7224 
7225 
7226              <div> 
7227                <small class="ssp-card-oferta-curso__title-item">Período:</small> 
7228                <h6 class="ssp-card-oferta-curso__item-data-periodo item-data-periodo_` + index + `">` + formataPeriodo(oferta.dataInicio, oferta.dataFim) + `</h6> 
7229	          </div> 
7230	 
7231              <div class="content-horario-dias-semana"> 
7232	 
7233                <div class="horario"> 
7234                  <small class="ssp-card-oferta-curso__title-item">Horário e dias das aulas:</small> 
7235                </div> ` + 
7236	 
7237                `<div class="ssp-card-oferta-curso__dia-hora_content"> 
7238                  ` + diasSemanaHTML + ` 
7239	              </div> 
7240	 
7241	          </div> 
7242	 
7243      ` + btnLocalReal(oferta); 
7244 
7245      result = result + ` 
7246        </div> 
7247
7248      
7249      //Regra adicionada em 04/01/22 devido aos cursos de Garçon e Cozinheiro. Definimos como regra geral que caso botaoCompra seja falso, não faz sentido mostrar os valores 
7250      //Adicionada a validação dos preços da oferta em 07/06/2022 - Tarefa 9498 
7251      const estaSemValorOferta =   oferta.botaoCompraOferta == ''  
7252                          || oferta.botaoCompraOferta == 'false'  
7253                          || !oferta.precoVendaOferta  
7254                          || !oferta.precoCheioOferta  
7255                          || !oferta.precoVendaMaxParcelaOferta 
7256                          || strToFloat(oferta.precoVendaOferta) == 0 
7257                          || strToFloat(oferta.precoCheioOferta)  == 0 
7258                          || strToFloat(oferta.precoVendaMaxParcelaOferta)  == 0 
7259      
7260      //Trecho inicial do Bolsa de estudo 
7261      result += `<div class="content-btn-bolsa codigoOferta_` + oferta.codigoOferta + (estaSemValorOferta ? ' pb-0' : '') + `"> 
7262                  <div class="ssp-card-oferta__info-turma-content"> 
7263                    <h6 class="ssp-card-oferta__info-turma mb-0">Bolsas de estudo</h6> 
7264                  </div> 
7265                  <div class="codigoOferta_` + oferta.codigoOferta + ` ssp-container-botao-bolsa"></div>    
7266                </div>                
7267
7268     
7269    if(estaSemValorOferta) { 
7270      result = result + ` 
7271      		<div class="content-buttons hide"> 
7272			  </div> 
7273
7274      return result; 
7275
7276 
7277	 
7278    //Trecho final do Bolsa de estudo e inclusao de botao de expansao do "Valores para compra" 
7279    result += ` <div class="show-price-content codigoOferta_` + oferta.codigoOferta + `"> 
7280                  <div class="ou-separator-desconto">Ou</div> 
7281                  <button type="button" class="btn-show-price"> 
7282                    <p>Saiba mais sobre:</p> 
7283                    <div onclick="togglePriceCard('codigoOferta_` + oferta.codigoOferta + `')"> 
7284                      <i class="fas fa-money-bill"></i> 
7285                      <span>Valores para compra</span> 
7286                    </div> 
7287                  </button> 
7288                </div> 
7289
7290 
7291    result = result + ` 
7292          <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `"> 
7293
7294         
7295    if( temDesconto && !ehCursoTrampolim ) { 
7296      result = result + ` 
7297            <div class="ssp-card-oferta__info-turma-content"> 
7298              <h6 class="ssp-card-oferta__info-turma">Valores para compra</h6> 
7299            </div> 
7300	 
7301            <div class="block-valor-desconto"> 
7302	          	 
7303            <div class="tag-label-desconto"> 
7304              <small class="ssp-card-oferta-curso__title-item">Valor com </small> 
7305              <span class="ssp-card-oferta-curso__valor-desconto">50% de desconto*</span> 
7306	      </div> 
7307	 
7308            <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar((strToFloat(oferta.precoVendaOferta)/strToFloat(oferta.numeroMaxParcelasOferta))/2, 2)) + `</h6> 
7309 
7310            <div class="ssp-card-oferta-curso__desconto-content"> 
7311              <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</span></p> 
7312              <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta)/2, 2)) + `</span></p> 
7313            </div> 
7314
7315           
7316      if($('[name="tipoCurso"]').val() == 'extensao') { 
7317        result = result + `<p class="modal-extensao_txteconomiza my-2">* Válido para quem trabalha ou tem sua própria empresa no setor de comércio e serviços, estudantes ou ex-estudantes de cursos técnicos no Senac ou para quem já finalizou o Ensino Médio Técnico no Senac.</p></div>` 
7318      } else { 
7319        result = result + `<p class="modal-extensao_txteconomiza my-2">*Válido para quem trabalha ou tem sua própria empresa no setor de comércio e serviços.</p></div>` 
7320
7321   
7322      result = result + ` 
7323          <div class="ou-separator-desconto">Ou</div> 
7324       
7325          <div class="block-valor-total"> 
7326 
7327            <small class="ssp-card-oferta-curso__title-item">Valor sem desconto:</small> 
7328 
7329            <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6> 
7330 
7331            <div class="ssp-card-oferta-curso__desconto-content"> 
7332              <p>Valor total: <strong>R$ ` + formataValor(strToFloat(oferta.precoVendaOferta)) + `</strong></p> 
7333            </div> 
7334             
7335          </div> 
7336
7337                 		 }else{ 
7338                 			 
7339      // itens que são diferentes entre técnico e livres comprado a extensão 
7340      if($('[name="tipoCurso"]').val() == 'extensao'){ 
7341        result = result + ` 
7342 
7343          <div class="block-valor-total"> 
7344 
7345            <div class="investimento" id="container_investimento_` + index + `"> 
7346 
7347              <small class="ssp-card-oferta-curso__title-item">Investimento:</small> 
7348 
7349              <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6> 
7350 
7351              <div class="ssp-card-oferta-curso__desconto-content"> 
7352                <p>Ou: <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span> à vista</p> 
7353              </div> 
7354 
7355            </div>   
7356 
7357          </div> 
7358
7359      } else { 
7360        result = result + ` 
7361          <div class="block-valor-total"> 
7362            <div class="investimento" id="container_investimento_` + index + `"> 
7363
7364   
7365        // Não mostrar mensagem de 30% de desconto em casos especificos 
7366        if(temDesconto){ 
7367          result = result + ` 
7368              <small class="ssp-card-oferta-curso__title-item font-weight-bold">Valor com 30% de desconto:</small> 
7369
7370
7371   
7372        if(oferta.precoCheioOferta == oferta.precoVendaOferta) {        
7373          result = result + ` 
7374              <small class="ssp-card-oferta-curso__title-item">Valor do curso:</small> 
7375              <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6> 
7376 
7377              <div class="ssp-card-oferta-curso__desconto-content"> 
7378                <p>Ou <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p> 
7379              </div> 
7380            </div> 
7381            </div> 
7382          `   
7383        } else { 
7384          result = result + ` 
7385              <small class="ssp-card-oferta-curso__title-item">Investimento:</small> 
7386              <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6> 
7387 
7388              <div class="ssp-card-oferta-curso__desconto-content"> 
7389                <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(oferta.precoCheioOferta) + `</span></p> 
7390                <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p> 
7391              </div> 
7392            </div> 
7393            </div> 
7394          `    
7395
7396
7397
7398 
7399    let dataBtnComprar = getObjBtnComprar(oferta); 
7400     
7401    // itens que são diferentes entre técnico e livres comprado a extensão   
7402    result = result + ` 
7403 
7404              <div class="ssp-card-oferta-curso__formas-pagamento-content"  id="container_forma_pgto_` + index + `"> 
7405                 
7406                <span>Saiba mais sobre:</span> 
7407 
7408                <div> 
7409                  <i class="ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card"></i> 
7410                  <a id="myBtn_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__formas-pagamento-content__title" style="font-weight: 600;" href="#">` + (temDesconto ? 'Descontos e pagamento' : 'Descontos e parcelamento') + `</a> 
7411                </div> 
7412 
7413              </div> 
7414 
7415            <div class="content-buttons"> 
7416 
7417              <div class="ssp-btn-group__content botoes-oferta-container_` + index + `"> 
7418 
7419                <a href="#a" id="btnComprar_` + index + `" data-espaco-ex="` + dataBtnComprar.dataEspacoEx + `" data-unidade="` + codigoUnidade + `" data-evento="` + oferta.codigoOferta + `" data-destino-compra="` + oferta.destinoCompra + `" data-index="` + index + `"  class="btn btn-lg btn-success w-100 mt-3 ` + dataBtnComprar.classeBotao + `" style="font-size:16px;font-weight: 600;">` + dataBtnComprar.textoBotao + `</a> 
7420 
7421              </div> 
7422 
7423            </div> 
7424 
7425          </div> 
7426 
7427        </div> 
7428
7429 
7430    return result 
7431
7432   
7433  var htmlModalLocalRealizacao = '<div id="modalLocalRealizacao_{index}" class="ssp-modal">' 
7434     htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao">' 
7435     htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__title-content">' 
7436 
7437    htmlModalLocalRealizacao += '{tituloLocalRealizacao}' 
7438          
7439    htmlModalLocalRealizacao += '<i class="ssp-card-modal-local-realizacao__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>' 
7440    htmlModalLocalRealizacao += '</div>' 
7441    htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__texto">' 
7442    htmlModalLocalRealizacao += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>' 
7443    htmlModalLocalRealizacao += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>' 
7444    htmlModalLocalRealizacao += '<address>' 
7445    htmlModalLocalRealizacao += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>' 
7446    htmlModalLocalRealizacao += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>' 
7447    htmlModalLocalRealizacao += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>' 
7448    htmlModalLocalRealizacao += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>' 
7449    htmlModalLocalRealizacao += '</address>' 
7450    htmlModalLocalRealizacao += '<div class="btn ssp-modal-local-realizacao__btn-content">' 
7451    htmlModalLocalRealizacao += '<a class="btn ssp-modal-local-realizacao__btn {classeEntendi} ssp-modal-local-realizacao__btn_{index}" href="#a">Entendi</a>' 
7452    htmlModalLocalRealizacao +='</div>' 
7453    htmlModalLocalRealizacao +='</div>' 
7454    htmlModalLocalRealizacao +='</div>' 
7455    htmlModalLocalRealizacao +='</div>'; 
7456   
7457    var htmlModalAntesCompra = '<div id="modalAntesCompra_{index}" class="ssp-modal">' 
7458      htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao">' 
7459    htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__title-content">' 
7460    htmlModalAntesCompra += '<h6 class="ssp-modal-local-realizacao__title"> LEMBRETE IMPORTANTE!</h6>' 
7461    htmlModalAntesCompra += '<i class="ssp-card-modal-antes-compra__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>' 
7462    htmlModalAntesCompra += '</div>' 
7463    htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__texto">' 
7464    htmlModalAntesCompra += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>' 
7465    htmlModalAntesCompra += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>' 
7466    htmlModalAntesCompra += '<address>' 
7467    htmlModalAntesCompra += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>' 
7468    htmlModalAntesCompra += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>' 
7469    htmlModalAntesCompra += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>' 
7470    htmlModalAntesCompra += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>' 
7471    htmlModalAntesCompra += '</address>' 
7472    htmlModalAntesCompra += '<div class="btn ssp-modal-local-realizacao__btn-content">' 
7473    htmlModalAntesCompra += '{componentBuyConfirmation}' 
7474    htmlModalAntesCompra += '<a id="btnBolsaLocal_{index}" class="btn btn-lg btn-info w-100 mt-3" href="{linkBtnBolsa}" target="_blank" style="display:none;">OK, inscrever para bolsa</a>' 
7475    htmlModalAntesCompra += '<a class="ssp-modal-local-realizacao__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_{index}" href="#a" >Selecionar outra turma</a>' 
7476    htmlModalAntesCompra +='</div>' 
7477    htmlModalAntesCompra +='</div>' 
7478    htmlModalAntesCompra +='</div>' 
7479    htmlModalAntesCompra +='</div>'; 
7480          
7481   var htmlSlickAreaDiasSemana = '<div class="ssp-card-oferta-curso__dia-hora-item">' 
7482   	 htmlSlickAreaDiasSemana +='<p class="ssp-card-oferta-curso__dia-hora-item__dia">'  
7483     htmlSlickAreaDiasSemana += '<span data-dia-hora="dias-semana">{diasSemana}</span>' 
7484     htmlSlickAreaDiasSemana += '<span data-dia-hora="horário">{horasSemana}</span>' 
7485     htmlSlickAreaDiasSemana += '</p>' 
7486   	 htmlSlickAreaDiasSemana += '</div>'; 
7487    	         
7488      
7489  //Montar object push - google tag manager - 5 
7490  function criaItensEcommerce(ofertas){ 
7491 
7492    let nomeUnidadeSelecionada = objsTela.unidades[ultimaUnidade].nome 
7493 
7494    let dadosCurso = { 
7495      //Pegar do freemarker  
7496        tituloComercial : $('[name="tituloComercial"]').val(), 
7497        tipoCurso : $('[name="nomeCategoriaTipoCurso"]').val(), 
7498        formato : $('[name="formato"]').data("formato") 
7499
7500 
7501    let ecommerceObject = { 
7502 
7503      item_id: "", //codOferta - oferta, 
7504			item_name: "", //Nome do curso - curso, 
7505			affiliation: "", //nome da unidade - oferta, 
7506			currency: "BRL", //Moeda - "BRL", 
7507			discount: "", //desconto - oferta, 
7508			index: "", //indice da lista - i, 
7509			item_brand: "Senac SP", //"Senac SP", 
7510			item_category: "", //categoria do curso - curso, 
7511			item_list_id: "", //"60", 
7512			item_list_name: "", //"São Carlos" - Oferta, 
7513			item_variant: "", //modalidade - curso, 
7514			price: "", //preco cheio - oferta, 
7515			quantity: 1 
7516 
7517
7518 
7519    let itensEcommerce = new Map(); 
7520 
7521    for(var i = 0; i < ofertas.length; i++){ 
7522 
7523      itensEcommerce.set(ofertas[i].codigoOferta, { 
7524 
7525            item_id: ofertas[i].codigoOferta, //codOferta - oferta, 
7526            item_name: dadosCurso.tituloComercial, //Nome do curso - curso, 
7527            affiliation: nomeUnidadeSelecionada, //nome da unidade - oferta, 
7528            currency: "BRL", //Moeda - "BRL", 
7529            discount: parseFloat(ofertas[i].precoCheioOferta - ofertas[i].precoVendaOferta).toFixed(2), //desconto - oferta, 
7530            index: i, //indice da lista - i, 
7531            item_brand: "Senac SP", //"Senac SP", 
7532            item_category: dadosCurso.tipoCurso, //categoria do curso - curso, 
7533            item_list_id: objsTela.unidades[ultimaUnidade].codigoUnidade, //"60", 
7534            item_list_name: nomeUnidadeSelecionada, //"São Carlos" - Oferta, 
7535            item_variant: dadosCurso.formato, //modalidade - curso, 
7536            price: parseFloat(ofertas[i].precoCheioOferta).toFixed(2), //preco cheio - oferta, 
7537            quantity: 1 
7538 
7539
7540
7541
7542 
7543    return itensEcommerce; 
7544
7545   
7546  //EMED - ELEMENTOS DINAMICOS 
7547  const htmlSlickAreaEmed = function(oferta){ 
7548    var btnid = 'myBtn_' + oferta.indice; 
7549    const diasHorarios = function(oferta){ 
7550      return oferta.diasDaSemanaOferta.join(', ').toLowerCase();  
7551       
7552
7553 
7554 
7555    return ` 
7556        <div class="ssp-ofertas-emed__card codigoOferta_`+ oferta.codigoOferta + `"> 
7557   
7558        <div class="ssp-ofertas-emed__card-info-turma"> 
7559   
7560            <div class="item-content"> 
7561                <i class="fas fa-calendar-alt calendar-icon-turma"></i> 
7562                <p class="title-turma">`+ oferta.titulo +`</p> 
7563                <span class="text-default" data-info="info-turma">Alunos na turma: <strong>até `+ oferta.qtdeTotalVagas +`</strong></span> 
7564            </div> 
7565   
7566            <div class="content-previsao-inicio-termino"> 
7567   
7568                <div class="item-content"> 
7569                    <span class="text-default">Previsão de início:</span> 
7570                    <span class="text-default-lg">`+ formatarDataEmed(oferta.dataInicio,oferta.etapa,false) +`</span> 
7571                </div> 
7572   
7573                <div class="item-divisor"></div> 
7574   
7575                <div class="item-content"> 
7576                    <span class="text-default">Previsão de término:</span> 
7577                    <span class="text-default-lg">`+ formatarDataEmed(oferta.dataFim,oferta.etapa,true) +`</span> 
7578                </div> 
7579   
7580            </div> 
7581   
7582   
7583            <div class="item-divisor"></div> 
7584   
7585            <div class="item-content"> 
7586                <span class="text-default">Dias e horários das aulas:</span> 
7587                <span class="text-default-lg" style="text-transform: capitalize;">`+ diasHorarios(oferta) +`</span> 
7588                <span class="text-default-lg">`+ oferta.horaInicio.replace(':', 'h') + ' às ' + oferta.horaFimOferta.replace(':', 'h') +`</span> 
7589            </div> 
7590             
7591        </div> 
7592   
7593        <div class="ssp-ofertas-emed__card-info-investimento"> 
7594            <p class="title-investimento">Investimento anual:</p> 
7595   
7596            <div class="item-content-investimento"> 
7597                <span class="txt-parcelas">Até `+ oferta.numeroMaxParcelasOferta +`x</span> 
7598                <span class="txt-valor-parcela">R$ `+ formataValor(oferta.precoVendaMaxParcelaOferta) +`</span> 
7599            </div> 
7600   
7601            <div class="item-content-investimento"> 
7602                <p class="txt-boleto-cartao">(boleto bancário ou cartão de crédito)</p> 
7603            </div> 
7604   
7605            <div class="item-content-investimento"> 
7606                <i class="fas fa-credit-card icon-cartao-credito"></i> 
7607                <a id="`+ btnid +`" data-index="`+ oferta.indice +`" href="#" class="link-descontos-parcelamentos">Descontos e Parcelamentos</a> 
7608            </div> 
7609               
7610        </div> 
7611   
7612    </div> 
7613 
7614    `; 
7615
7616   
7617    
7618   function loadCursosVocePodeGostar(){ 
7619       
7620    if(isEmed){ 
7621      var url = urlSearchCursosPodeGostarEmed 
7622        .replace('\{groupId\}', groupId) 
7623        .replace('\{tiposDeCurso\}',$('[name="idTipoCurso"]').val()) 
7624        .replace('\{limit\}', 12) 
7625        .replace('\{articleId\}', $('[name="articleId"]').val()); 
7626    }else{ 
7627      var url = urlSearchCursosPodeGostar 
7628        .replace('\{companyId\}',themeDisplay.getCompanyId()) 
7629        .replace('\{groupId\}', groupId) 
7630        .replace('\{userId\}',themeDisplay.getUserId()) 
7631        .replace('\{articleId\}',$('[name="articleId"]').val()) 
7632        .replace('\{limit\}', 12); 
7633
7634 
7635   
7636       $.ajax({ 
7637           url :  url, 
7638           type : 'get', 
7639           beforeSend: function(){ 
7640             loading('#slider-curso'); 
7641
7642       }) 
7643       .done(function(cursos){ 
7644          
7645         if(cursos.length > 0){ 
7646   
7647           cursos = JSON.parse(cursos); 
7648            
7649           if(isEmed) cursos = cursos['cursos']; 
7650            
7651           if(cursos.length > 0) $('#section-cursos-voce-pode-gostar').removeClass('d-none'); 
7652           else { 
7653             $('#section-cursos-voce-pode-gostar').addClass('d-none'); 
7654             return; 
7655
7656            
7657           var articles = []; 
7658            
7659            $.each(cursos, function(k, c){ 
7660             articles.push(c.articleId); 
7661            }); 
7662             
7663           //Verifica a situação dos botoes de inscrições e bolsa 
7664          $.ajax({ 
7665                url :  '/o/senac-content-services/verificaBotoesInscricaoEBolsa/'+groupId+'/'+articles.join(','), 
7666                type : 'get' 
7667            })  
7668            .done(function(infoBotoes){ 
7669               
7670              if(infoBotoes.length > 0) { 
7671                 
7672                  infoBotoes = JSON.parse(infoBotoes); 
7673                   
7674                  $('#slider-curso').empty(); 
7675   
7676                      $.each(cursos, function(k, c){ 
7677                    	  $('#slider-curso').append(buildCardCurso(c, infoBotoes)); 
7678         
7679                      }); 
7680         
7681                      $('#slider-curso').addClass( 
7682                      'slick-area slick-area--md-bleed slider-container slick-area-cursos-pode-gostar'); 
7683         
7684                      sliderCurso('.slick-area-cursos-pode-gostar'); 
7685
7686            }); 
7687
7688   
7689        }) 
7690        .fail(function(jqXHR, textStatus, msg){ 
7691            // alert(msg); 
7692        }); 
7693   
7694
7695   
7696   /* 
7697    * Armazena a navegação em cookies, se habilitado 
7698    */ 
7699  $(document).on("click", ".ck-curso", function() { 
7700      
7701  //Verifica se o cookie está habilitado 
7702   if(getCookie('portalSenacCookie') != null){ 
7703      
7704    var articleId = $(this).data('ck'); 
7705    manageCookieArray('ck-cursos', articleId); 
7706        
7707
7708   
7709   }); 
7710   
7711   
7712 
7713   
7714   
7715  $(function(){ 
7716   
7717   if($('#unidades-ofertas').find('option').length ==0){ 
7718   
7719     $('.ssp-container-selecione-unidade').addClass('d-none') 
7720   
7721
7722   
7723  }); 
7724   
7725     function avisoNovasTurmas(){ 
7726        
7727       
7728       window.event.preventDefault() 
7729         
7730       //var unidadeSelecionada = $('#select-registro-interesse').val(); 
7731       //este select tem 2 valores separados por @ -> categoryId@codUnidade 
7732      //  var unidadeSelecionada = $('#unidades-ofertas').val(); 
7733        
7734       //Código fixo quando Senac Ao Vivo 
7735       var codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1]; 
7736         
7737      //  if(codUnidadeSelectRegInt && codUnidadeSelectRegInt.length){ 
7738          
7739         //Se ja tiver logado , redireciona para o registro 
7740         if(getCookie('ticket') == null){ 
7741            
7742           //Abre modal login 
7743               $('#modal-login').removeClass('d-none'); 
7744            
7745         }else{ 
7746            
7747          abrirModalRegistroInteresse(codUnidadeSelectRegInt); 
7748                  
7749            verificaBtnEnviarRegistroInteresseAtivo(); 
7750
7751          
7752         window.onclick = function(event) { 
7753            $('[id="modal-registro-interesse"]').each(function(index,_modal){ 
7754                if (event.target == _modal) { 
7755                   $('#modal-registro-interesse').addClass('d-none'); 
7756                   $("body").removeClass("overflow-hidden") 
7757
7758            }); 
7759
7760              
7761      //  } 
7762
7763     function login(){ 
7764      var unidadeSelecionada 
7765      var codUnidadeSelectRegInt 
7766      doLogin({ 
7767        user: $('#login-email-modal').val(), 
7768        pass: $('#login-password-modal').val(), 
7769        btnLoadingSelector: '#btnLogin', 
7770        before: () => { 
7771          $('#mensagem-erro-login').addClass('d-none') 
7772           
7773          unidadeSelecionada = $('#unidades-ofertas').val(); 
7774          codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1]; 
7775        }, 
7776        done: (data) => { 
7777          var loginData = JSON.parse(data); 
7778           
7779          if(loginData.status == 200 || loginData.status == 201){				 
7780            //Após logar-se, exibe o modal p/registro de interesse 
7781            abrirModalRegistroInteresse(codUnidadeSelectRegInt); 
7782            verificaBtnEnviarRegistroInteresseAtivo(); 
7783            //esconde o modal de login 
7784            $('#modal-login').addClass('d-none'); 
7785          }  
7786        }, 
7787        errorMessageSelector: '#mensagem-erro-login', 
7788        error: (err) => console.error(err) 
7789      }) 
7790
7791   
7792  function registroSelecionaTodosDias(){ 
7793     
7794    if($(this).hasClass('ssp-week-day-active')){ 
7795      $(this).removeClass('ssp-week-day-active') 
7796       $('.ssp-week-day').removeClass('ssp-week-day-active') 
7797    }else{ 
7798      $(this).addClass('ssp-week-day-active') 
7799      $('.ssp-week-day').addClass('ssp-week-day-active') 
7800
7801        
7802    verificaBtnEnviarRegistroInteresseAtivo(); 
7803
7804   
7805  function registroSelecionaTodosPeriodos(){ 
7806     
7807    if($(this).is(':checked')){ 
7808      $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', true); 
7809    }else{ 
7810      $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', false); 
7811
7812     
7813    verificaBtnEnviarRegistroInteresseAtivo(); 
7814
7815  $('.turmas-registro-interesse input[type=checkbox]').on('click', function() { 
7816    var $selecionado = $(this); 
7817    if ($selecionado.is(":checked")) { 
7818      $('.turmas-registro-interesse input[type=checkbox]').prop("checked", false); 
7819      $selecionado.prop("checked", true); 
7820    } else { 
7821      $selecionado.prop("checked", false); 
7822
7823}); 
7824     function enviarRegistroInteresse(){ 
7825       
7826	  const codigoUsr = getCookie('codigo'); 
7827	   
7828	  if(codigoUsr == null){ 
7829		  //Sem o cookie refaz o login 
7830		  $('#modal-registro-interesse').addClass('d-none'); 
7831	      $('body').removeClass('overflow-hidden'); 
7832	      $('#modal-login').removeClass('d-none'); 
7833	      return; 
7834
7835	   
7836      var codigoFT = $('[name="codigoFT"]').val(); 
7837       
7838      var unidades = new Set(); 
7839       
7840      var diasSemana = ''; 
7841       
7842      //Senac ao vivo nao tem opçao de dias da semana nem unidades 
7843      if(isAoVivo){ 
7844        unidades.add(codUnidadeSenacAoVivo); 
7845      }else{ 
7846          $.each($('.ssp-week-day').not('#todosDias'), function(k, v){ 
7847              if($(this).hasClass('ssp-week-day-active')){ 
7848                diasSemana += $(this).text()+','; 
7849
7850          }); 
7851             
7852          if(diasSemana.length > 0) diasSemana = diasSemana.slice(0, -1); 
7853           
7854          $.each($('.ssp-card-registro-interesse__select'), function(k,item){ 
7855               
7856            unidades.add(item.value); 
7857          }); 
7858
7859 
7860       
7861      var periodos = ''; 
7862       
7863      $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){ 
7864        if($(this).is(':checked')){ 
7865          periodos += $(this).val()+','; 
7866
7867      }); 
7868 
7869      var turmas = ''; 
7870 
7871      $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k, v) { 
7872          if ($(this).is(':checked')) { 
7873              turmas += $(this).val() + ','; 
7874
7875      }); 
7876 
7877      if (periodos.length > 0) periodos = periodos.slice(0, -1); 
7878      if (turmas.length > 0) turmas = turmas.slice(0, -1); 
7879 
7880      var usuarioNotificado = false; 
7881       
7882      loadingSubmitButton('#enviar-registro-interesse-btn'); 
7883 
7884      unidades.forEach(function(codigoUnidade) { 
7885          var data = { 
7886              codigoFT: codigoFT, 
7887              codigo: codigoUsr, 
7888              diasSemana: diasSemana, 
7889              periodos: periodos, 
7890              turmas, turmas, 
7891              codigoUnidade: codigoUnidade, 
7892              interesseBolsa: 'N', 
7893              isEmed: isEmed ? 'S' : 'N' 
7894          }; 
7895 
7896          const url = urlRegistroInteresse; 
7897 
7898          $.ajax({ 
7899              url: url, 
7900              method: 'POST', 
7901              data: JSON.stringify(data), 
7902              headers: { 
7903                  'Accept': 'application/json', 
7904                  'Content-Type': 'application/json' 
7905              }, 
7906          }).done( 
7907              function(retornoData) { 
7908 
7909                  var retornoData = JSON.stringify(retornoData); 
7910 
7911                  if (retornoData.length > 0) { 
7912             
7913                    cleanLoadingSubmitButton('#enviar-registro-interesse-btn'); 
7914                     
7915                      var retorno = JSON.parse(retornoData); 
7916 
7917                      if (retorno.status == 200 || retorno.status == 201) { 
7918               
7919                        //Evita que o usuário recebe um email para cada unidade de interesse 
7920                        if(usuarioNotificado) return; 
7921                         
7922                          //Mensagem de sucesso registro interesse 
7923                          $('#modal-registro-interesse-sucesso').removeClass('d-none'); 
7924 
7925                          var prefixUrl = themeDisplay.getLayoutRelativeURL(); 
7926 
7927                          if (prefixUrl.indexOf('staging/') > 1) 
7928                              prefixUrl = prefixUrl.substring(0, prefixUrl.lastIndexOf('staging/') + 8); 
7929                          else 
7930                              prefixUrl = HOST; 
7931 
7932                          $('#btn-voltar-home').attr('href', prefixUrl); 
7933 
7934                          //Busca os dados do nome do usuário logado 
7935                          var username = getCookie('name').split(' ')[0]; 
7936 
7937                          //Prioridade para nomeSocial 
7938                          if (getCookie('nome_social') != null) { 
7939                              var nomeSocial = getCookie('nome_social').replace(/['"]+/g, ''); 
7940 
7941                              if (nomeSocial.length > 0) username = getCookie('nome_social'); 
7942 
7943
7944 
7945                          username = username.replace(/['"]+/g, ''); 
7946						   
7947                          var unidadesSel = getUnidadesSelecionadasRI(); 
7948                           
7949                          //Disara um email para o usuário interessado              
7950                          var data = { 
7951                              emailInteressado: getCookie('email'), 
7952                              nomeInteressado: username, 
7953                              tituloCurso: $('.ssp-card-detalhe-curso__title').text(), 
7954                              unidades: unidadesSel.unidades, 
7955                              unidadesPrefix: unidadesSel.unidadesPrefix 
7956                          }; 
7957 
7958                          $.ajax({ 
7959                              url: urlRegistroInteresseEmailInteressado, 
7960                              method: 'POST', 
7961                              data: JSON.stringify(data), 
7962                              headers: { 
7963                                  'Accept': 'application/json', 
7964                                  'Content-Type': 'application/json' 
7965                              }, 
7966                          }).done(function(retornoData) {}); 
7967 
7968              				usuarioNotificado = true; 
7969               
7970                          window.onclick = function(event) { 
7971                              $('[id="modal-registro-interesse-sucesso"]').each(function(index, _modal) { 
7972                                  if (event.target == _modal) { 
7973                                      $('#modal-registro-interesse-sucesso').addClass('d-none'); 
7974                                      $('#modal-registro-interesse').addClass('d-none'); 
7975                                      $("body").removeClass("overflow-hidden") 
7976
7977                              }); 
7978
7979 
7980                      } else { 
7981                          //Mensagem de erro registro interesse 
7982                          $('#modal-registro-interesse-erro').removeClass('d-none'); 
7983
7984                  } else { 
7985                      //Mensagem de erro registro interesse 
7986                      $('#modal-registro-interesse-erro').removeClass('d-none'); 
7987
7988              }).fail(function(){ 
7989				  cleanLoadingSubmitButton('#enviar-registro-interesse-btn'); 
7990				  $('#modal-registro-interesse-erro').removeClass('d-none'); 
7991			  }); 
7992      }); 
7993
7994   
7995  function verificaBtnEnviarRegistroInteresseAtivo(){ 
7996     
7997    var diasSemanaSelecionado = false; 
7998    var periodoSelecionado = false; 
7999    var turmaSelecionada = false; 
8000    var politicaPrivacidadeSelecionado = false; 
8001     
8002     
8003    $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){ 
8004      if($(this).is(':checked')) 
8005        periodoSelecionado = true; 
8006    }); 
8007 
8008    $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){ 
8009      if($(this).is(':checked')) 
8010        turmaSelecionada = true; 
8011    }); 
8012     
8013    if($('#check-politica-privacidade').is(':checked')) politicaPrivacidadeSelecionado = true; 
8014     
8015    var ativo = true 
8016     
8017    //Caso tenha algum dos selects de unidade sem uma opção válida selecionada 
8018    if(!isAoVivo) 
8019      ativo = ativo && !Array.from($('.ssp-card-registro-interesse__select.unidades')).filter(sel => !$(sel).val()).length 
8020     
8021    ativo = ativo && periodoSelecionado && politicaPrivacidadeSelecionado; 
8022     
8023    if(!isAoVivo && !isEmed){ 
8024       
8025        $.each($('.ssp-week-day').not('#todosDias'), function(k, v){ 
8026            if($(this).hasClass('ssp-week-day-active')) 
8027              diasSemanaSelecionado = true; 
8028          }); 
8029      ativo = ativo && diasSemanaSelecionado; 
8030       
8031
8032 
8033    if(isEmed) 
8034      ativo = ativo && turmaSelecionada; 
8035     
8036    if(ativo) 
8037        $('#enviar-registro-interesse-btn').attr("disabled", false); 
8038    else 
8039        $('#enviar-registro-interesse-btn').attr("disabled", true); 
8040
8041   
8042    function loadPlanoCurso(){ 
8043       
8044      const urlGetPlanoCurso = urlPlanoCurso 
8045											 
8046      .replace('\{codigoFT\}',  $('[name="codigoFT"]').val()) 
8047      .replace('\{dataEfetiva\}', $('[name="dataEfetivaSTR"]').val()); 
8048   
8049        $.ajax({ 
8050            url:urlGetPlanoCurso, 
8051            method:'get', 
8052            crossDomain: true, 
8053            dataType: 'html', 
8054            success: function( data ) { 
8055   
8056   
8057              //Atualiza o link com o plano de curso do servi¿o (ja retorna o texto) 
8058              $('#plano-curso').append('<br/>'+data);  
8059            }, 
8060            error: function(data){ 
8061               
8062              console.log('Não existe a URL do plano de curso'); 
8063								 
8064
8065         
8066          }); 
8067
8068     
8069  function checkCursoTrampolim(){ 
8070    return $('[name="codigoFT"]').val() == "24493";  
8071
8072   
8073  /*function verificaOfertaValida(oferta){ 
8074       
8075    if(oferta['precoCheioOferta'] == '' || oferta['precoVendaOferta'] == '' || oferta['numeroMaxParcelasOferta'] == '' || oferta['precoVendaMaxParcelaOferta']  == '') 
8076      return false; 
8077     
8078    var atual = new Date(); 
8079   
8080    var dataOfertaPartes = oferta['dataInicio'].split('/'); 
8081     
8082    var dataOferta = new Date(dataOfertaPartes[2], dataOfertaPartes[1] - 1, dataOfertaPartes[0]); 
8083     
8084    var dataLimiteMatriculaOfertaPartes = ""; 
8085    var dataLimiteMatriculaOferta = ""; 
8086     
8087    if(oferta['dtLimiteMatricula'] != ""){ 
8088    dataLimiteMatriculaOfertaPartes = oferta['dtLimiteMatricula'].split('-'); 
8089      dataLimiteMatriculaOferta = new Date(dataLimiteMatriculaOfertaPartes[0], dataLimiteMatriculaOfertaPartes[1] - 1, dataLimiteMatriculaOfertaPartes[2] ,atual.getHours(),atual.getMinutes(),atual.getSeconds(),atual.getMilliseconds());  
8090     
8091
8092     
8093     
8094    //Só deve aparecer ofertas D-1 . Se ela iniciou, aparece se o campo dtLimiteMatr estiver preenchido e com data até o dia de hoje  
8095    if(dataOferta <= atual) 
8096      if(dataLimiteMatriculaOferta == "" || (dataLimiteMatriculaOferta != "" &&  atual.getTime() > dataLimiteMatriculaOferta.getTime())) 
8097        return false; 
8098     
8099    return true; 
8100  }*/ 
8101   
8102   
8103  function loadServerDate(){ 
8104   
8105    $.ajax({ 
8106      url:urlGetServerT, 
8107      method:'get', 
8108      dataType: 'json', 
8109      cache: 'false', 
8110      headers: { 
8111      'Cache-Control': 'no-store, no-cache, max-age=0', 
8112      'Expires': '0', 
8113      'Pragma': 'no-cache' 
8114      }, 
8115      success: function( data ) { 
8116        todayG = new Date(data.year,(data.month - 1),data.day,(data.hour),data.minutes,data.seconds); 
8117        startTimer(); 
8118
8119    }); 
8120     
8121
8122   
8123   function handleVisibilityChange() { 
8124     
8125     if (!document[hidden] ){ 
8126      restartTimer(); 
8127
8128     
8129
8130   
8131  function restartTimer(){ 
8132     
8133    if(restartTimeout == null){ 
8134      loadServerDate(); 
8135      restartTimeout = setTimeout(function(){ 
8136        restartTimeout = null; 
8137      }, 5000); 
8138
8139     
8140
8141    
8142	 function startTimer(){ 
8143		 
8144		var mSeconds = todayG.getTime(); 
8145		if(interval01 != null){ 
8146			clearInterval(interval01); 
8147
8148		interval01 = setInterval(function(){ 
8149			todayG.setTime(todayG.getTime() + 1000); 
8150		}, 1000); 
8151		 
8152		if(interval15 != null){ 
8153			clearInterval(interval15); 
8154
8155		interval15 = setInterval(function(){ 
8156			mSeconds = mSeconds + 15000; 
8157			todayG.setTime(mSeconds); 
8158		}, 15000); 
8159		 
8160
8161   
8162  function checkIsAoVivo(){ 
8163    isAoVivo = $("input[name='formato']").attr("data-formato") == nomeFormatoAoVivoDxp; 
8164
8165   
8166   
8167  //Ao clicar na setinha next do slider, busca dinamicamente uma proxima oferta 
8168  function buscaProximaOferta(){ 
8169    //Zera variável que controla existência de ofertas com bolsa 
8170    //ofertasComBolsa = false; 
8171  	  
8172     //Verificamos se a ultima oferta já foi exibida, para evitar de fazer novas buscas 
8173     if(carregouUltimaOferta)  
8174        return; 
8175 
8176     //Fazemos o cálculo do que está sendo exibido, para verificar se existe apenas um card 'escondido'. Caso tenha apenas um, a busca deve ser executada, caso contrário não.	 
8177     var totalOfertasSlick = $('#turmas-container .slick-area__item').length; 
8178     //Pegamos o índice da oferta do meio (central) 
8179     var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index')); 
8180 
8181     var totalOfertasADireita = totalOfertasSlick - currentSliderIndex; 
8182 
8183     //Se o total de ofertas à direita for maior a 2 não precisa realizar a busca 
8184     if(totalOfertasADireita > 2)  
8185        return; 
8186 
8187	 startOfertaParam = endOfertaParam; 
8188	 endOfertaParam += 16; 
8189	  
8190     const codigoFT = $('[name="codigoFT"]').val(); 
8191  	 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val(); 
8192	 
8193  	 var unidadeCategoryId = ''; 
8194     var unidadeCodigoSelect = ''; 
8195  	 
8196  	if(isAoVivo){ 
8197  	   
8198  		$.each(objsTela.unidades, function(k,unidade){ 
8199  			unidadeCategoryId += unidade['categoryId']+','; 
8200      	}); 
8201  		 
8202  		//tirando ultima virgula 
8203  	    unidadeCategoryId = unidadeCategoryId.substring(0,unidadeCategoryId.length - 1); 
8204  	   
8205  	}else{ 
8206  		 var splitted = $('#unidades-ofertas').val().split("@"); 
8207  		 unidadeCategoryId = splitted[0]; 
8208       unidadeCodigoSelect = splitted[1]; 
8209
8210     
8211    var params = new URLSearchParams(); 
8212    params.set('codigoFTOferta',codigoFT) 
8213    params.set('dataEfetivaOferta',dataEfetivaOferta) 
8214    params.set('categoryIds',unidadeCategoryId) 
8215    params.set('start',startOfertaParam) 
8216    params.set('end',endOfertaParam) 
8217    params.set('inscricaoAberta', $('#chkInscricao').prop('checked')) 
8218    params.set('bolsaAberta', $('#chkBolsa').prop('checked')) 
8219    params.set('cursoArticleId', $('[name="articleId"]').val() || ''); 
8220 
8221    if($('#chkBolsa').prop('checked')){ 
8222    	params.set('considerarDataBolsaFutura', true) 
8223
8224     
8225    const url = urlSearchOferta + '?' + params.toString() 
8226 
8227    $.ajax({ 
8228      url:url, 
8229      method:'get', 
8230      dataType:'json' 
8231    }).done( 
8232      function(data){ 
8233         
8234        if(data.length > 0){ 
8235          var indiceOferta = startOfertaParam; 
8236 
8237        	for (var index = 0; index < data.length; index++) { 
8238        		 
8239				var ofertaJSON = data[index]; 
8240	            var oferta = getOfertaObjectFromJson(ofertaJSON,index); 
8241				             
8242	            //Verificamos se a oferta buscada já existe na tela (que ocorre quando chega na última oferta) 
8243	            if($('.codigoOferta_'+oferta.codigoOferta).length > 0){ 
8244	              console.log('Ja tem a oferta '+oferta.codigoOferta); 
8245	              carregouUltimaOferta = true; 
8246	              break; 
8247
8248	 
8249	            //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo                
8250	            ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds))); 
8251	      
8252	            ofertasMap.set(oferta.codigoOferta, oferta); 
8253	 
8254	            if(isAoVivo) 
8255	            	objsTela.ofertasAoVivoTodasUnidades.push(oferta); 
8256	 
8257	             //O indice é igual ao ultimo elemento buscado - 1 
8258	             var i = indiceOferta; 
8259	             oferta['indice'] = i; 
8260	 
8261	             if(isAoVivo) 
8262	                codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta); 
8263	             else codigoUnidade = unidadeCodigoSelect; 
8264	 
8265	              
8266	             montaHTMLOferta(oferta, i, codigoUnidade, true);  
8267	             montaHTMLModalFormaPgto(oferta, i, codigoUnidade);  
8268 
8269	             montaHTMLModalLocalRealizacao(oferta, i);  
8270	             montaHTMLModalAntesCompra(oferta, i, codigoUnidade); 
8271	             verificaBotaoBolsaSS(oferta); 
8272	             verificaCursoAprendizagem(i); 
8273	             verificaCursoTrampolim(i); 
8274	              
8275	             associaEventoBtnFormaPagamento(i); 
8276	             associaEventoBtnComprar(i);  
8277	             associaEventoBtnComprarDentroFormaPgto(i); 
8278	             associaEventoBtnLocalRealizacao(i); 
8279	             associaEventosFecharModal(i); 
8280 
8281                 if($('[name="tipoCurso"]').val() == 'extensao'){ 
8282                   associaEventoBtnConheca(i); 
8283                   associaEventoBtnComprarConhecaDescontoOk(i); 
8284                   associaEventoBtnComprarConhecaDescontoNot(i); 
8285                   associaEventoBtnAlunoNao(i); 
8286                   associaEventoBtnAlunoSim(i); 
8287                    
8288
8289                  
8290               indiceOferta++; 
8291
8292           
8293          controlaPaginaBolsa(); 
8294
8295
8296    ); 
8297     
8298
8299 
8300  function setUrlParam(key, value) { 
8301    const url = new URL(window.location.href) 
8302 
8303    if(value) 
8304      url.searchParams.set(key, value); 
8305    else 
8306      url.searchParams.delete(key); 
8307 
8308    window.history.pushState({}, '', url.toString()) 
8309
8310   
8311   function selectFilter(paramkey, el) { 
8312    setUrlParam(paramkey, el.prop("checked")) 
8313    const currentUnidadeFriendlyURLSelected = $('#unidades-ofertas').find('option').filter(':selected').attr('data-unidade-friendly-url') 
8314    loadUnidades(!isAoVivo, $('[data-unidade-friendly-url="' + currentUnidadeFriendlyURLSelected + '"]').val()) 
8315 
8316    if($('#chkInscricao').prop("checked") || $('#chkBolsa').prop("checked")) $('#msgFiltroAplicado').show() 
8317    else $('#msgFiltroAplicado').hide() 
8318
8319    
8320  function defineCurrentUrl(ev) { 
8321    const currentUnidadeFriendlyURLSelected = $(ev.target).find('option').filter(':selected').attr('data-unidade-friendly-url') 
8322 
8323    const hasPathWeb = window.location.pathname.includes('/web') 
8324    const hasPathGuest = window.location.pathname.includes('/guest') 
8325 
8326    let currentPath = window.location.pathname 
8327    currentPath = hasPathWeb ? currentPath.substring(4) : currentPath 
8328    currentPath = hasPathGuest ? currentPath.substring(6) : currentPath 
8329 
8330    objsTela.unidadesRegistroInteresse.forEach(unidade => currentPath = currentPath.replace('/' + unidade.friendlyURL, '')) 
8331 
8332    currentPath = (currentUnidadeFriendlyURLSelected ? '/' + currentUnidadeFriendlyURLSelected : '') + currentPath 
8333    currentPath = hasPathGuest ? '/guest' + currentPath : currentPath 
8334    currentPath = hasPathWeb ? '/web' + currentPath : currentPath 
8335 
8336    if(keepURL()) 
8337    window.history.replaceState(window.history.state, '', currentPath + window.location.search) 
8338
8339   
8340  let isKeepURL = true   
8341  /** Verifica se é para manter a URL atual. Isso deve acontecer somente ao iniciar a página #9674 */ 
8342  function keepURL() { 
8343    const aux = isKeepURL 
8344    isKeepURL = false 
8345    return !aux 
8346
8347   
8348  loadServerDate(); 
8349  $(document).ready(function(){ 
8350 
8351    if("${normalizedCategoryName}" == "graduacao" || "${normalizedCategoryName}" == "pos-graduacao"){ 
8352      document.location.href = '/erro-404' 
8353
8354     
8355    ehCursoTrampolim = checkCursoTrampolim(); 
8356    checkIsAoVivo(); 
8357    loadPlanoCurso(); 
8358    loadCursosVocePodeGostar(); 
8359 
8360    if(!isAoVivo) { 
8361      $('#unidades-ofertas').change(ev => { 
8362        mudarUnidade(ev) 
8363        defineCurrentUrl(ev) 
8364      }); 
8365
8366 
8367    const urlParams = new URLSearchParams(window.location.search) 
8368    $('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true') 
8369    $('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')) ) 
8370     
8371    if($('#chkBolsa').length) { 
8372      $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true') 
8373      $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')) ) 
8374      loadUnidades(!isAoVivo); 
8375    } else { 
8376      selectFilter('bolsa', $('#chkBolsa')) 
8377
8378           
8379      //Função para Montar breadcrumb Mobile 
8380   
8381      function breadcrumbMobile(){ 
8382   
8383		const linkEl = $('.ssp-card-detalhe-curso__secunday-info-back-link');   	  
8384    	   
8385        if ( $.trim(linkEl.html()) === 'Técnico'){ 
8386   
8387        	linkEl.attr("href", "/cursos-tecnicos"); 
8388   
8389        } else if ( $.trim(linkEl.html()) === 'Livre'){ 
8390       
8391           if(isAoVivo){ 
8392        	   	linkEl.html('Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo') 
8393             	linkEl.attr("href", "/cursos-livres-senac-online-ao-vivo"); 
8394           }else{ 
8395        	   	linkEl.attr("href", "/cursos-livres"); 
8396
8397        } else if ( $.trim(linkEl.html()) === 'Aprendizagem'){ 
8398   
8399        	linkEl.attr("href", "/jovem-aprendiz"); 
8400   
8401        }else if ( $.trim(linkEl.html()) === 'Extensão Universitária'){ 
8402   
8403        	linkEl.attr("href", "/extensao-universitaria"); 
8404         
8405        }else if ( $.trim(linkEl.html()) === 'Ensino Médio Técnico'){ 
8406        		   
8407            	linkEl.attr("href", "/ensino-medio-tecnico");	 
8408
8409   
8410
8411   
8412      breadcrumbMobile() 
8413       
8414    //Esconde elementos quando o curso é aprendizagem 
8415      if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){ 
8416        $('.ssp-section-novas-turmas').remove(); 
8417        $("div[class^='botoes-oferta-container_']").remove(); 
8418
8419   
8420     //retira os itens de dentro do container 
8421      $('.bg-').css('background-color','#e4e4e4') 
8422     $('.container.py-3').removeClass('container py-3') 
8423     //ajuste para versao 7.4 
8424     $('.lfr-layout-structure-item-container.container-fluid.container-fluid-max-xl').removeClass() 
8425 
8426   
8427     //Fecha modal registro de interesse 
8428   
8429     $('#btn-close-Modal-registro-interesse').click(function(){ 
8430   
8431       $('#modal-registro-interesse').addClass('d-none') 
8432       $("body").removeClass("overflow-hidden") 
8433   
8434     }) 
8435   
8436      $( "#modal-registro-interesse" ).click( function(event) { 
8437   
8438          
8439   
8440         if(event.target.id==$('#modal-registro-interesse')[0].id){ 
8441               $(this).addClass('d-none') 
8442
8443   
8444      }); 
8445   
8446       
8447      //Aviso sobre interesse em turmas 
8448      $('.ssp-card-registro-interesse').on('click', '#enviar-registro-interesse-btn', enviarRegistroInteresse); 
8449      if(!isEmed){ 
8450        $('.ssp-aviso-novas-turmas__content').on('click', '#btn-aviso-novas-turmas', avisoNovasTurmas); 
8451        $('.ssp-card-registro-interesse').on('click', '#todosDias', registroSelecionaTodosDias); 
8452      } else { 
8453        $('.ssp-emed__card-slider-body').on('click', '#btnOptin', avisoNovasTurmas) 
8454      }  
8455      $('#div-campo-todos').on('change', 'input[type=checkbox]', registroSelecionaTodosPeriodos); 
8456   
8457      $('#btnLogin').click(function(){ 
8458        
8459        login() 
8460         
8461       }); 
8462       
8463       $('#btn-close-loginModal').click(function(){ 
8464           $('#modal-login').addClass('d-none') 
8465       }); 
8466        
8467       $('.ssp-week-day').not('#todosDias').click(function(){ 
8468   
8469           $(this).toggleClass('ssp-week-day-active'); 
8470           verificaBtnEnviarRegistroInteresseAtivo(); 
8471            
8472       }); 
8473        
8474       $('#add-unidade-regsitro-interesse').click(function(e){ 
8475           var element = $('.ssp-card-registro-interesse__select.unidades').first().clone(); 
8476           element.empty(); 
8477            element.append('<option value="" disabled selected>Selecione uma unidade</option>') 
8478                $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8479 
8480                    if(!unidade['selecionado']){      
8481                        element.append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>'); 
8482
8483 
8484                }); 
8485            element.change(changeSelectUnidades) 
8486 
8487   
8488           element.css('margin-top', '10px'); 
8489            
8490           if(element.find("option").length > 1 && $('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){ 
8491              element.attr("id", "select_" + cntSelectUnidades++) 
8492              $('#select-unidades-registro-interesse').append(element); 
8493          }    
8494 
8495          if($('.ssp-card-registro-interesse__select.unidades').length == objsTela.unidadesRegistroInteresse.length){ 
8496              $('#add-unidade-regsitro-interesse').addClass("d-none") 
8497
8498   
8499           verificaBtnEnviarRegistroInteresseAtivo(); 
8500       }); 
8501        
8502       $('#remove-unidade-regsitro-interesse').click(function(e){ 
8503          
8504         if($('.ssp-card-registro-interesse__select').length > 1){ 
8505          
8506              var element = $('.ssp-card-registro-interesse__select').last(); 
8507     
8508              var valueSelecionado = element.val(); 
8509 
8510              $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8511 
8512                  if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){ 
8513                      unidade['selecionado'] = false; 
8514                      unidade['selectSelecionado'] = ""; 
8515
8516 
8517              }); 
8518              element.val(""); 
8519              cntSelectUnidades--; 
8520              element.change() 
8521 
8522              element.remove(); 
8523
8524   
8525         if($('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){ 
8526              $('#add-unidade-regsitro-interesse').removeClass("d-none") 
8527
8528 
8529          verificaBtnEnviarRegistroInteresseAtivo(); 
8530       }) 
8531        
8532       $('.ssp-card-registro-interesse__check-item').on('change', 'input[type=checkbox]', function(){ 
8533         verificaBtnEnviarRegistroInteresseAtivo(); 
8534       }); 
8535   
8536       //Contador em ofertas de bolsas proximas 
8537       var cancel = setInterval(atualizaTempoAberturasBolsas, 1000); 
8538        
8539        // Manipua o breadcrumb para as regras do Senac 
8540          
8541        if($('ol.breadcrumb').find('li:first').text().trim() == "Cursos Pai") 
8542          $('ol.breadcrumb').find('li:first').remove(); 
8543         
8544        var li = $('ol.breadcrumb').find('li:first'); 
8545   
8546        if(li.text().trim() == 'Cursos'){ 
8547       
8548          var primeiro = li.clone(); 
8549          primeiro.html(htmlBreadcrumb('/', 'Cursos', 'Home')); 
8550          li.parent().prepend(primeiro); 
8551       
8552          var tipoCurso = $('.ssp-header-curso__tag-formato').text().trim(); 
8553          var tipoBreadcrumb = ''; 
8554           
8555          const isPresencialEad = (tipoCurso.toLowerCase().includes("presencial + ead")) 
8556           
8557          if(tipoCurso.includes("Cursos Livres")){ 
8558            if(isPresencialEad) { 
8559              tipoBreadcrumb =  htmlBreadcrumb('/presencial-ead#cursos-livres', tipoCurso); 
8560            } else { 
8561              tipoBreadcrumb = htmlBreadcrumb( 
8562                    isAoVivo ? '/cursos-livres-senac-online-ao-vivo' : '/cursos-livres',  
8563                  isAoVivo ? nomeFormatoAoVivoDxp : tipoCurso); 
8564            }         
8565          }else if(tipoCurso.includes("Extensão")){ 
8566            if(isPresencialEad) { 
8567              tipoBreadcrumb =  htmlBreadcrumb('/presencial-ead#extensao-universitaria', tipoCurso); 
8568            } else { 
8569        	  	tipoBreadcrumb =  htmlBreadcrumb('/extensao-universitaria', tipoCurso); 
8570            }           
8571          }else if(tipoCurso.includes("Ensino Médio Técnico")){ 
8572            if(isPresencialEad) { 
8573              tipoBreadcrumb =  htmlBreadcrumb('/presencial-ead#ensino-medio-tecnico', tipoCurso); 
8574            } else { 
8575              tipoBreadcrumb =  htmlBreadcrumb('/ensino-medio-tecnico', tipoCurso); 
8576
8577          }else if(tipoCurso.includes("Jovem Aprendiz")){ 
8578            if(isPresencialEad) { 
8579              tipoBreadcrumb =  htmlBreadcrumb('/presencial-ead#jovem-aprendiz', tipoCurso); 
8580            } else { 
8581              tipoBreadcrumb =  htmlBreadcrumb('/jovem-aprendiz', tipoCurso); 
8582
8583          }else{ 
8584            if(isPresencialEad) { 
8585              tipoBreadcrumb =  htmlBreadcrumb('/presencial-ead#cursos-tecnicos', tipoCurso); 
8586            } else { 
8587              tipoBreadcrumb =  htmlBreadcrumb('/cursos-tecnicos', tipoCurso); 
8588
8589
8590           
8591          li.html(tipoBreadcrumb); 
8592         
8593          if($('ol.breadcrumb').find('li').length == 4) $('ol.breadcrumb').find('li:last').remove(); 
8594        	 
8595
8596         
8597        $('#turmas-container').on('click', 'a.slick-next', function(e){ 
8598				 
8599        	 	e.preventDefault(); 
8600			    buscaProximaOferta(); 
8601			 
8602        }); 
8603 
8604        $('#turmas-container').on('click', 'button.slick-dots', function(){ 
8605 
8606             
8607       
8608        }); 
8609		 
8610        $(".next-mobile").on("click",function(e){  
8611        	 e.preventDefault();  
8612       	 	 
8613        	 acoesMobileSliderOfertas("left"); 
8614       	}); 
8615         
8616        $(".prev-mobile").on("click",function(e){  
8617        	e.preventDefault();  
8618	        
8619        	acoesMobileSliderOfertas("right");	 
8620      	}); 
8621         
8622        //ação de drag do card de ofertas no mobile 
8623        $('.oferta-slick-area').on('swipe', function(event, slick, direction){ 
8624           	acoesMobileSliderOfertas(direction); 
8625        }); 
8626         
8627        loadAlternadores() 
8628        let modalFormAprendizagem = document.querySelector('[data-modal="modal"]') 
8629        if(modalFormAprendizagem){ 
8630          // Create dinamic close buttom form 
8631          let btnCloseModalForm = document.querySelector('[data-modal="close-form-modal"]') 
8632         
8633          btnCloseModalForm.addEventListener('click',closeModalFormAprendizagem) 
8634         
8635
8636    
8637        $(".oferta-slick-area").on("click", ".btnModalAprendizagem", function (){ 
8638           openModalFormAprendizagem(); 
8639         }) 
8640         
8641     }); 
8642   
8643  function htmlBreadcrumb(link, title, display){ 
8644	   
8645	  return '<a class="breadcrumb-link" href="'+link+'" title="'+title+'"><span class="breadcrumb-text-truncate">'+(display || title)+'</span></a>'; 
8646	   
8647
8648   
8649  function acoesMobileSliderOfertas(direcao){ 
8650	   
8651       	if(direcao == "right"){ 
8652       		$("a.slick-prev").click();  
8653	       	 
8654        	if($('.slick-current').attr('data-slick-index') == "0") 
8655	       		 $('.prev-mobile').addClass('nextPrevOpacity'); 
8656	       	 
8657        	if($(".next-mobile").hasClass('nextPrevOpacity')) 
8658        		 $('.next-mobile').removeClass('nextPrevOpacity'); 
8659
8660       	 
8661       	 
8662		if(direcao == "left"){ 
8663	      	 $("a.slick-next").click(); 
8664	   	  
8665	   	  	if($(".prev-mobile").hasClass('nextPrevOpacity')) 
8666	     		 $('.prev-mobile').removeClass('nextPrevOpacity'); 
8667	   	   
8668	   	 	if(carregouUltimaOferta){ 
8669	   	 		var totalCardOfertas = $('#turmas-container .slick-area__item').length; 
8670	   	 		var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));   
8671	 
8672	   	 		//o card do meio é o último	 
8673				if(totalCardOfertas == (currentSliderIndex + 1)) 
8674					$('.next-mobile').addClass('nextPrevOpacity'); 
8675
8676
8677
8678   
8679  //habilitar/desabilitar registro de interesse 
8680  function habilitarRegistroInteresse(habilitar){ 
8681    var sectionRI = $('#section-registro-interesse') 
8682 
8683    if(isEmed) { 
8684      sectionRI.hide() 
8685      return; 
8686
8687 
8688    //Redmine #9309 - sempre irá mostrar 
8689    habilitar = true 
8690       
8691    if(habilitar) sectionRI.show() 
8692    else sectionRI.hide() 
8693
8694   
8695  function abrirModalRegistroInteresse(codUnidadeSelect){ 
8696	    $('#modal-registro-interesse').removeClass('d-none'); 
8697      $("body").addClass("overflow-hidden") 
8698      if(!isEmed){ 
8699	    $('.ssp-card-registro-interesse__nome-curso').text($('.ssp-card-detalhe-curso__title').text()); 
8700      } else { 
8701        $(".transferencia-emed-link").find('a').attr("href", "/ensino-medio-tecnico#onde-estudar") 
8702        $('.ssp-card-registro-interesse__title-modal').text($('.ssp-card-detalhe-curso__title').text()); 
8703
8704       
8705      $('.ssp-card-registro-interesse__select:not(#select_0)').remove(); 
8706      $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8707        if(unidade['codigoUnidade'] == codUnidadeSelect){ 
8708            unidade['selecionado'] = true; 
8709            unidade['selectSelecionado'] = 'select_0'; 
8710        } else { 
8711            unidade['selecionado'] = false; 
8712            unidade['selectSelecionado'] = ""; 
8713
8714 
8715    }); 
8716    objsTela.unidadesRegistroInteresse.sort(function (a, b) { 
8717        return ordenar(a, b, 'nome'); 
8718    }); 
8719 
8720    $('#select_0').empty(); 
8721    $('#select_0').append('<option value="" disabled>Selecione uma unidade</option>') 
8722        $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8723 
8724          $('#select_0').append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>'); 
8725             
8726        }); 
8727    $('#select_0').val(codUnidadeSelect); 
8728    console.dir(objsTela.unidadesRegistroInteresse) 
8729	 	if(isAoVivo){ 
8730	 		$('#unidades-registro-interesse, #dias-registro-interesse').addClass('d-none'); 
8731
8732     if(objsTela.unidadesRegistroInteresse.length > 1) { 
8733        $('#add-unidade-regsitro-interesse').removeClass("d-none") 
8734        $('#add-unidade-regsitro-interesse').show() 
8735        $('#remove-unidade-regsitro-interesse').show() 
8736      } else { 
8737        $('#add-unidade-regsitro-interesse').hide() 
8738        $('#remove-unidade-regsitro-interesse').hide() 
8739
8740
8741 
8742  $('.ssp-card-registro-interesse__select.unidades').on('change', changeSelectUnidades) 
8743  
8744 function changeSelectUnidades() { 
8745   var codUnidadeSelecionada = $(this).val(); 
8746   var idSelectSelecionado = $(this).attr('id') 
8747   $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8748        if(unidade['codigoUnidade'] == codUnidadeSelecionada){ 
8749            unidade['selecionado'] = true; 
8750            unidade['selectSelecionado'] = idSelectSelecionado; 
8751        } else if(unidade['selectSelecionado'] == idSelectSelecionado && unidade['selecionado']){ 
8752            unidade['selecionado'] = false; 
8753            unidade['selectSelecionado'] = ""; 
8754
8755 
8756    }); 
8757     
8758    objsTela.unidadesRegistroInteresse.sort(function (a, b) { 
8759        return ordenar(a, b, 'nome'); 
8760    }); 
8761 
8762    $('.ssp-card-registro-interesse__select.unidades:not(#'+idSelectSelecionado+')').each(function() { 
8763        var valueSelecionado = $(this).val(); 
8764        var idActualSelect = $(this).attr('id'); 
8765        $(this).empty(); 
8766        $(this).append('<option value="" disabled>Selecione uma unidade</option>') 
8767        $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){ 
8768 
8769            console.log("unidade:"+unidade['codigoUnidade']+" - "+valueSelecionado) 
8770            if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){ 
8771                $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>'); 
8772            }else if(!unidade['selecionado']){      
8773                $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>'); 
8774
8775 
8776        }); 
8777        $(this).val(valueSelecionado) 
8778    }); 
8779     
8780   verificaBtnEnviarRegistroInteresseAtivo(); 
8781
8782 
8783   
8784 function ordenar(objA, objB, nomeAtributo){ 
8785	 	let a = (nomeAtributo) ? objA[nomeAtributo] : objA; 
8786	 	let b = (nomeAtributo) ? objB[nomeAtributo] : objB; 
8787	 
8788	 	return a.localeCompare(b); 
8789
8790  
8791 function paramOrdem(xml){ 
8792	 	if(isEmed){ 
8793	 		var ordemPeriodo = ['MA', 'TA', 'NO']; 
8794	 		return $.inArray(xml.find('[name="periodoDiaOferta"]').text(), ordemPeriodo); 
8795	 	}else{ 
8796	 		return xml.find('[name="dataInicioOferta"]').text(); 
8797
8798
8799  
8800 function getEtapaSelecionadaEmed(){ 
8801		var btnEtapa = $('.ssp-ofertas-emed__filtro-content .btn--filtro-ativo'); 
8802		 if(!btnEtapa) return ''; 
8803		 return btnEtapa.val(); 
8804
8805  
8806 function filtraOfertasEtapa(etapa, ofertas){ 
8807    var ofertasEtapa = []; 
8808    var turmas = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; 
8809    var periodos = {['MA'] : 'Manhã', ['TA'] : 'Tarde', ['NO'] : 'Noite'}; 
8810    var ultimoPeriodo = null, indexPeriodo; 
8811    ofertas = ofertas.sort(function(a, b){ 
8812       return ordenar(a, b, 'periodoDiaOferta'); 
8813    }); 
8814 
8815    $.each(ofertas, async (index, oferta)=> { 
8816      if(oferta['etapa'] == etapa){ 
8817        if(oferta['periodoDiaOferta'] != ultimoPeriodo) indexPeriodo = 0; 
8818        ultimoPeriodo = oferta['periodoDiaOferta']; 
8819        oferta['titulo'] = 'Turma ' + turmas[indexPeriodo++] + ' - ' + (periodos[ultimoPeriodo] || ''); 
8820        ofertasEtapa.push(oferta); 
8821
8822    }); 
8823      
8824     return ofertasEtapa; 
8825
8826  
8827 function formatarDataEmed(data, etapa, isDataFim){ 
8828	  
8829 	try{ 
8830 
8831 		var splitdata = data.split('/'); 
8832 		var meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']; 
8833 	 	var mes = meses[parseInt(splitdata[1])-1]; 
8834 	 	 
8835 	 	var ano = splitdata[2]; 
8836 	 	 
8837 	 	if(isDataFim){ 
8838 	 		ano = parseInt(splitdata[2]); 
8839
8840 	 	 
8841 	 	return mes + '/' + ano; 
8842 	}catch(err){  
8843 		return data;  
8844
8845   
8846
8847  
8848 //EMED Mobile 
8849 function sliderOfertasEmed(){ 
8850	  
8851	 var tamScreen = $(window).width(); 
8852	 if(tamScreen < 1024){ 
8853	     $('.ssp-slick-ofertas-emed').slick({ 
8854	         slidesToShow: 1, 
8855	         slidesToScroll: 1, 
8856	         dots: false, 
8857	         infinite: false, 
8858	         adaptiveHeight: true, 
8859	         prevArrow:'<button class="btn slick-prev" type="button"><i class="fal fa-chevron-left"></i><span class="sr-only">Anterior</span></button>', 
8860	         nextArrow:'<button class="btn slick-next" type="button"><i class="fal fa-chevron-right"></i><span class="sr-only">Próximo</span></button>', 
8861	         responsive: [ 
8862	 
8863
8864	                 breakpoint: 1200, 
8865	                 settings: { 
8866	                     slidesToShow: 1, 
8867	                     slidesToScroll: 1, 
8868	                     prevArrow: '<button class="btn slick-prev ssp-slider-control-mobile__item-prev"><i class="fal fa-chevron-left mr-1"></i><span>Anterior</span></button>', 
8869	                     nextArrow: '<button class="btn slick-next ssp-slider-control-mobile__item-next"><span>Próximo</span><i class="fal fa-chevron-right ml-1"></i></button>', 
8870	 
8871
8872	             }, 
8873
8874	                 breakpoint: 768, 
8875	                 settings: { 
8876	                     slidesToShow: 1, 
8877	                     slidesToScroll: 1, 
8878	                     prevArrow: '<button class="btn slick-prev ssp-slider-control-mobile__item-prev"><i class="fal fa-chevron-left mr-1"></i><span>Anterior</span></button>', 
8879	                     nextArrow: '<button class="btn slick-next ssp-slider-control-mobile__item-next"><span>Próximo</span><i class="fal fa-chevron-right ml-1"></i></button>', 
8880
8881
8882	 
8883
8884	 
8885	     }); 
8886 
8887
8888 
8889
8890 
8891function addItemBackpack(codOferta, originElemSelector, codUnidade, dataEfetiva){ 
8892	 
8893	let backpackPostRequest = {}; 
8894	backpackPostRequest.codOferta = codOferta; 
8895	backpackPostRequest.codUnidade = codUnidade; 
8896	backpackPostRequest.dt_efetiva = dataEfetiva; 
8897 
8898	 
8899	mochila.requestAccess(function(backpackPostRequest){ 
8900		 
8901		let urlMochila = '/o/senac-backpack-services/backpack'; 
8902		 
8903		if(getCookie("codMochila") != null){ 
8904			backpackPostRequest.codMochila = getCookie("codMochila"); 
8905			urlMochila = '/o/senac-backpack-services/updateBackpack';	 
8906		}	 
8907		$.ajax({ 
8908		    type: 'POST', 
8909		    url: urlMochila, 
8910		    headers: { 
8911		        "Content-Type":"application/json" 
8912		    }, 
8913            beforeSend: function(xhr){ 
8914            	xhr.setRequestHeader("Authorization", "Bearer " + getCookie("tokenMochila")); 
8915            	loadingSubmitButton(originElemSelector); 
8916            	$(originElemSelector + ' .loading-icon-button').css('height', 'unset'); 
8917            	if($(window).width() < 1024){ 
8918            		$(originElemSelector + ' .loading-icon-button span').css('margin-left', '10%'); 
8919
8920            }, 
8921		    data : JSON.stringify(backpackPostRequest) 
8922		}).done(function(data) {  
8923			 
8924			let domain = ''; 
8925			if(getAmbiente() == 'hom' || getAmbiente() == 'prod') 
8926				domain = '.sp.senac.br'; 
8927			 
8928			writeCookie( 
8929					'codMochila',  
8930					(getCookie("codMochila") == null) ? data.backpackCode : JSON.parse(data).backpackCode,  
8931					24, 
8932					domain 
8933			); 
8934			addItemSuccessMochila(); 
8935			 
8936		}).fail(function(xhr, status, error) { 
8937			 
8938			$('#modal-backpack-error').removeClass('d-none'); 
8939			 
8940	 	}).always(function(){ 
8941	 		 
8942	 		cleanLoadingSubmitButton( 
8943	 				originElemSelector,  
8944	 				originElemSelector.indexOf('backpack') > 0 ? 'OK, desejo comprar' : 'COMPRAR' 
8945	 		); 
8946	 		$('[id^="modalAntesCompra_"]').each(function(index, modal) { 
8947	 			modal.style.display = "none"; 
8948	 		}); 
8949	 		 
8950	 	}); 
8951		 
8952	}, backpackPostRequest); 
8953	 
8954
8955 
8956function componentBuyConfirmation(codigoUnidade, oferta, dataEfetiva){ 
8957  
8958	var comp = null; 
8959		 
8960	if((oferta.destinoCompra !== null) && oferta.destinoCompra == "2"){ 
8961		 
8962		comp = $("<button>") 
8963		.addClass("btn btn-lg btn-success w-100 mt-3 btn-backpack") 
8964		.attr("offerCode",oferta.codigoOferta) 
8965		.attr("unitCode",codigoUnidade) 
8966		.attr("effectiveDate",dataEfetiva) 
8967		.text("OK, desejo comprar"); 
8968	 
8969	}else { 
8970	 
8971		comp = $("<a>") 
8972		.addClass("btn btn-lg btn-success w-100 mt-3") 
8973		.text("OK, desejo comprar") 
8974		.attr("href", linkBotaoCompra.replace('\{codigoUnidade\}', codigoUnidade).replace('\{codigoOferta\}', oferta.codigoOferta)) 
8975		.attr("target","_blank"); 
8976
8977	 
8978	comp.attr('id', 'btnCompraLocal_' + oferta.indice); 
8979	 
8980    return comp[0].outerHTML; 
8981     
8982
8983 
8984function getUnidadesSelecionadasRI(){ 
8985		var unidadesRI = []; 
8986		 
8987		try{ 
8988			 
8989			$('#select-unidades-registro-interesse').find('select').each((i,select) =>{ 
8990				var unidadeSel = select.selectedOptions[0].innerText; 
8991				if(!unidadesRI.includes(unidadeSel)) unidadesRI.push(unidadeSel); 
8992			}); 
8993			 
8994			var unidadesExt = unidadesRI.join(', '); 
8995			 
8996			const lastIndex = unidadesExt.lastIndexOf(','); 
8997			 
8998			if(lastIndex > 0) unidadesExt = unidadesExt.substring(0, lastIndex) + ' ou ' + unidadesExt.substring(lastIndex + 1); 
8999			 
9000			return { 
9001				'unidadesPrefix' : (unidadesRI.length > 1 ? ', nas unidades ' : (unidadesRI.length == 1 ? ', na unidade ' : '')), 
9002				'unidades' : unidadesExt 
9003			}; 
9004			 
9005		}catch(err){ 
9006			 
9007			return { 
9008				'unidadesPrefix' : '', 
9009				'unidades' : '' 
9010			}; 
9011			 
9012
9013		 
9014
9015 
9016 
9017 
9018 
9019function addItemSuccessMochila(){ 
9020	 
9021	mochila.check(); 
9022	$('#modal-backpack-success__nome-curso').html($('.ssp-card-detalhe-curso__title').text()); 
9023	$('#modal-backpack-success').removeClass('d-none'); 
9024	 
9025
9026 
9027$(document).on('click', '.btn-backpack', function(e){  
9028     
9029	addItemBackpack(event.target.getAttribute("offerCode"), '.btn-backpack',event.target.getAttribute("unitCode"),event.target.getAttribute("effectiveDate")); 
9030	 
9031}); 
9032 
9033$('#btn-voltar-modal-backpack-error').click(function () { 
9034    $('#modal-backpack-error').addClass('d-none'); 
9035}); 
9036 
9037$('#btn-voltar-modal-backpack-error').click(function () { 
9038    $('#modal-backpack-error').addClass('d-none'); 
9039}); 
9040 
9041$('.btn-mochila-continuar-site-success, .modal-btn-close').click(function () { 
9042    $('#modal-backpack-success').addClass('d-none'); 
9043}); 
9044 
9045$('.btn-mochila-finalizar-compra-success').click(function () { 
9046  // Montar object push - google tag manager - 6 
9047  sendEventEcommerce("begin_checkout", ofertaSelecionada); 
9048 
9049	mochila.verificaLogin(); 
9050	$('#modal-backpack-success').addClass('d-none'); 
9051	$('[id^="myModal_"]').each((i,modal)=>modal.style.display = "none"); 
9052}); 
9053 
9054   function closeModalFormAprendizagem(){ 
9055           let modal = document.querySelector('[data-modal="modal"]') 
9056            
9057       modal.classList.remove('open-modal-form') 
9058      
9059
9060      
9061      
9062   function openModalFormAprendizagem(){ 
9063           let modal = document.querySelector('[data-modal="modal"]') 
9064            
9065       modal.classList.add('open-modal-form') 
9066      
9067
9068 
9069  function addEventBolsa() { 
9070    // Mostra o preco 
9071    const btnShowPrices = document.querySelectorAll('.btn-show-price') 
9072 
9073    btnShowPrices.forEach(btnShowPrice => btnShowPrice.addEventListener('click',togglePriceCard)) 
9074     
9075    if(!$('#chkBolsa').prop('checked')) 
9076      togglePriceCard() 
9077
9078 
9079  function togglePriceCard(selector){ 
9080    if(selector instanceof PointerEvent) return 
9081 
9082    if(!selector) selector = '' 
9083    else selector = '.' + selector 
9084     
9085    const btnPrices = document.querySelectorAll('.show-price-content'+selector) 
9086    const contentPrices = document.querySelectorAll('.content-valores-descontos'+selector) 
9087    const contentBtnBolsas = document.querySelectorAll('.content-btn-bolsa'+selector) 
9088     
9089    btnPrices.forEach(btnPrice => btnPrice.classList.toggle('hide')) 
9090    contentBtnBolsas.forEach(contentBtnBolsa => contentBtnBolsa.classList.toggle('modifier-content-show')) 
9091    contentPrices.forEach(contentPrice => contentPrice.classList.toggle('hide-price'))       
9092
9093   
9094  function getRegiaoName(key) { 
9095	  switch (key) { 
9096	    case "C": 
9097	      return "Capital"; 
9098	    case "I":             
9099	      return "Interior"; 
9100	    case "GS": 
9101	      return "Grande São Paulo e Litoral"; 
9102	    default: 
9103	      return "Sem Região"; 
9104
9105
9106 
9107	function criarOptionUnidadesPorRegiao(unidades) { 
9108	  let regioes = {} 
9109	  let unidadeFounded 
9110 
9111	  unidades.forEach(unidade => { 
9112	    if(!regioes[unidade.codRegiaoUnidade || 'N']) 
9113	      regioes[unidade.codRegiaoUnidade || 'N'] = [] 
9114 
9115	    regioes[unidade.codRegiaoUnidade || 'N'].push(unidade) 
9116	  }) 
9117 
9118	  Array.from(['C', 'I', 'GS', 'N']) 
9119	  .filter(key => Object.keys(regioes).includes(key)) 
9120	  .forEach(key => { 
9121	    const unidadesDaRegiao = regioes[key] 
9122 
9123	    const optionDisabled = $('<option>') 
9124	    optionDisabled.attr('label', getRegiaoName(key)) 
9125	    optionDisabled.text(getRegiaoName(key)); 
9126	    optionDisabled.attr('disabled', true) 
9127	    optionDisabled.addClass('ssp-option-group') 
9128	    $('#unidades-ofertas').append(optionDisabled) 
9129 
9130	    $.each(unidadesDaRegiao, function(k,unidade){       
9131	      if($('#unidades-ofertas').find('[value="'+unidade['categoryId']+'"]').length == 0){         
9132	        var option = $('<option>'); 
9133	        option.val(unidade['categoryId']+"@"+unidade['codigoUnidade']); 
9134	        option.text(unidade['nome']); 
9135	        option.attr('data-unidade-friendly-url', unidade.friendlyURL) 
9136	        option.addClass('ssp-option') 
9137	   
9138	        $('#unidades-ofertas').append(option); 
9139	     
9140	        unidadeFounded = !unidadeFounded && getURLData().includes('/'+unidade.friendlyURL+'/') ? unidade : unidadeFounded	           
9141
9142	    }) 
9143	  }) 
9144 
9145	  return unidadeFounded 
9146
9147 
9148	function getURLData() { 
9149	  return URLGeral.replace(HOST, '') 
9150
9151 
9152	/** 
9153	* Copia um objeto JSON 
9154	*/ 
9155	function cloneObj(original) { 
9156	  return JSON.parse(JSON.stringify(original)); 
9157
9158 
9159  function getUrlConsultaBolsa(oferta){ 
9160   
9161    let url = ''; 
9162    if (isAmbienteTeste()) { 
9163      if(oferta.destinoBolsa=='1') { 
9164        url = 'https://hwse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta 
9165      } else { 
9166        url = 'https://hom-wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta; 
9167
9168    }	else { 
9169      if(oferta.destinoBolsa=='1') { 
9170        url = 'https://wse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta 
9171      } else { 
9172        url = 'https://wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta; 
9173
9174       
9175
9176     
9177    return url; 
9178
9179 
9180  function execCompraEmed(oferta){ 
9181 
9182    let linkInscricaoEmed, linkInscricaoEmedHml, acadProg; 
9183    if(oferta.etapa == '0010'){ 
9184      linkInscricaoEmed = 'https://www.sp.senac.br/login/Login?destino=https://inscricao-educacional-ms.sp.senac.br/?oferta={codOferta}'; 
9185      linkInscricaoEmedHml = 'https://gesportal.sp.senac.br/login/Login?destino=https://hinscricao-educacional-backend.sp.senac.br/?oferta={codOferta}'; 
9186      acadProg = null; 
9187    }else{ 
9188      linkInscricaoEmed = 'https://www.sp.senac.br/login/Login?destino=https://inscricao-emed.sp.senac.br?course={acad_prog}&unity={codUnidade}&shift={periodo}&step={etapa}&oferta={codOferta}'; 
9189      linkInscricaoEmedHml = 'https://gesportal.sp.senac.br/login/Login?destino=https://hinscricao-emed.sp.senac.br?course={acad_prog}&unity={codUnidade}&shift={periodo}&step={etapa}&oferta={codOferta}'; 
9190      acadProg = ()=>{ 
9191        //Codigo FT + Data Efetiva(ymd) : AcadProg 
9192        const acadProgMap = { 
9193          ['2478820220101'] : '08202', 
9194          ['2363020210101'] : '07325', 
9195          ['2362920210101'] : '07326', 
9196          ['2097420210101'] : '05918' 
9197        }	    
9198        var key = $('[name="codigoFT"]').val() + $('[name="dataEfetivaSTR"]').val().replace(/-/g, ''); 
9199        return acadProgMap[key] || ''; 
9200
9201
9202 
9203    var ambTeste = ['localhost', 'hom', 'dev']; 
9204      var link = linkInscricaoEmed; 
9205      $.each(ambTeste, function(i, a){ 
9206        if(location.hostname.indexOf(a) >= 0){ 
9207          link = linkInscricaoEmedHml; 
9208          return false; 
9209
9210      }); 
9211 
9212      // Montar object push - google tag manager - 3 
9213      ofertaSelecionada = itensEcommerce.get(oferta.codigoOferta) 
9214      sendEventEcommerce("select_item", ofertaSelecionada); 
9215      sendEventEcommerce("view_item", ofertaSelecionada); 
9216      sendEventEcommerce("add_to_cart", ofertaSelecionada); 
9217      sendEventEcommerce("begin_checkout", ofertaSelecionada); 
9218       
9219      var urlCompra  = link.replace('\{acad_prog\}', acadProg) 
9220        .replace('\{codUnidade\}', $('[name="codUnidadeSelecionada"]').val()) 
9221        .replace('\{periodo\}', (oferta.periodoDiaOferta == 'TA') ? 'V' :  oferta.periodoDiaOferta.slice(0, 1)) 
9222        .replace('\{etapa\}', oferta.etapa) 
9223        .replace('\{codOferta\}', oferta.codigoOferta); 
9224      window.open(urlCompra, '_blank'); 
9225 
9226
9227 
9228   function formataDataComBarra(dataInvertidaComTraco){ 
9229 		return dataInvertidaComTraco.split('-').reverse().join('/'); 
9230
9231 
9232 
9233   </script> 
9234 
9235</#if>