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 4469, column 13]

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