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