PageSourceSearch

https://otsukailmu.id/assets/js/main.js?version=13

js otsukailmu.id collected 2026-10-02 01:55:41 UTC 48,921 bytes, 1,632 lines download raw bytes

1(function (window, document, $, undefined) {
2  "use strict";
3
4  var eduJs = {
5    i: function (e) {
6      eduJs.d();
7      eduJs.methods();
8    },
9
10    d: function (e) {
11      (this._window = $(window)),
12        (this._document = $(document)),
13        (this._body = $("body")),
14        (this._html = $("html")),
15        (this.sideNav = $(".rbt-search-dropdown"));
16    },
17    methods: function (e) {
18      eduJs.salActive();
19      eduJs.menuCurrentLink();
20      eduJs.eduSwiperActive();
21      eduJs.eduBgCardHover();
22      eduJs.magnigyPopup();
23      eduJs.counterUp();
24      eduJs.pricingPlan();
25      eduJs.courseView();
26      eduJs.stickyHeader();
27      eduJs.masonryActivation();
28      eduJs._clickDoc();
29      eduJs.wowActivation();
30      eduJs.radialProgress();
31      eduJs.marqueImage();
32      eduJs.popupMobileMenu();
33      eduJs.headerSticky();
34      eduJs.qtyBtn();
35      eduJs.checkoutPage();
36      eduJs.offCanvas();
37      eduJs.onePageNav();
38      eduJs.transparentHeader();
39      eduJs.categoryMenuHover();
40      eduJs.cartSidenav();
41      eduJs.filterClickButton();
42      eduJs.selectPicker();
43      eduJs.headerTopActivation();
44      eduJs.magnificPopupActivation();
45      eduJs.showMoreBtn();
46      eduJs.sidebarVideoHidden();
47      eduJs.courseActionBottom();
48      eduJs.topbarExpend();
49      eduJs.categoryOffcanvas();
50      eduJs.autoslidertab();
51      eduJs.moveAnimation();
52      eduJs.contactForm();
53      eduJs.player();
54      eduJs.quizAns();
55      eduJs.lessonAccor();
56      eduJs.unloadImage();
57      eduJs.searchValue();
58      eduJs.lessonToggle();
59      eduJs.categoryMenuHover2();
60      eduJs.typeField(); // new added
61      eduJs.countDown(); // new added
62      eduJs.editor(); // new added
63      eduJs.toggleModal(); // new added
64      eduJs.dnd(); // new added
65      eduJs.multiStepForm(); // new added
66      eduJs.cursorFollow(); // new added
67    },
68    dnd: function () {
69      // Select the sortable containers
70      const dnd1 = document.getElementById("dnd1");
71      const dnd2 = document.getElementById("dnd2");
72      // const dnd3 = document.getElementById("dnd3");
73
74      // Initialize Sortable only if the element exists
75      if (dnd1) {
76        new Sortable(dnd1, {
77          animation: 150,
78        });
79      }
80
81      if (dnd2) {
82        new Sortable(dnd2, {
83          animation: 150,
84        });
85      }
86
87      // if (dnd3) {
88      //   new Sortable(dnd3, {
89      //     animation: 150,
90      //   });
91      // }
92    },
93    editor: function initializeJoditEditors() {
94      Jodit.plugins.add("stat", function (editor) {
95        const statusbar = document.createElement("div");
96        statusbar.style.backgroundColor = "#fff";
97        statusbar.style.fontSize = "16px";
98        statusbar.style.padding = "1px 4px";
99
100        function calcStat() {
101          var text = Jodit.modules.Helpers.trim(editor.editor.innerText),
102            wordCount = text.split(/[\s\n\r\t]+/).filter(function (value) {
103              return value;
104            }).length,
105            charCount = text.replace(/[\s\n\r\t]+/, "").length;
106
107          statusbar.innerText = "words: " + wordCount + " chars: " + charCount;
108        }
109
110        editor.events
111          .on("change afterInit", editor.async.debounce(calcStat, 100))
112          .on("afterInit", function () {
113            editor.container.appendChild(statusbar);
114          });
115      });
116
117      // Check if the element exists before initializing Jodit
118      const editor1Element = document.querySelector("#editor1");
119      const editor2Element = document.querySelector("#editor2");
120      const editor3Element = document.querySelector("#editor3");
121
122      if (editor1Element) {
123        Jodit.make(editor1Element);
124      }
125      if (editor2Element) {
126        Jodit.make(editor2Element);
127      }
128      if (editor3Element) {
129        Jodit.make(editor3Element);
130      }
131    },
132
133    multiStepForm: function () {
134      document.addEventListener('DOMContentLoaded', () => {
135        const DOMstrings = {
136          stepsBtnClass: 'multisteps-form__progress-btn',
137          stepsBtns: document.querySelectorAll('.multisteps-form__progress-btn'),
138          stepsBar: document.querySelector('.multisteps-form__progress'),
139          stepsForm: document.querySelector('.multisteps-form__form'),
140          stepsFormTextareas: document.querySelectorAll('.multisteps-form__textarea'),
141          stepFormPanelClass: 'multisteps-form__panel',
142          stepFormPanels: document.querySelectorAll('.multisteps-form__panel'),
143          stepPrevBtnClass: 'rbt-step-btn-prev',
144          stepNextBtnClass: 'rbt-step-btn-next',
145        };
146      
147        // Function to remove classes
148        const removeClasses = (elemSet, className) => {
149          elemSet.forEach(elem => {
150            elem.classList.remove(className);
151          });
152        };
153      
154        // Find parent of an element
155        const findParent = (elem, parentClass) => {
156          let currentNode = elem;
157          while (!currentNode.classList.contains(parentClass)) {
158            currentNode = currentNode.parentNode;
159          }
160          return currentNode;
161        };
162      
163        // Get active step
164        const getActiveStep = elem => {
165          return Array.from(DOMstrings.stepsBtns).indexOf(elem);
166        };
167      
168        // Set active step
169        const setActiveStep = activeStepNum => {
170          removeClasses(DOMstrings.stepsBtns, 'rbt-active');
171          DOMstrings.stepsBtns.forEach((elem, index) => {
172            if (index <= activeStepNum) {
173              elem.classList.add('rbt-active');
174            }
175          });
176        };
177      
178        // Get active panel
179        const getActivePanel = () => {
180          let activePanel;
181          DOMstrings.stepFormPanels.forEach(elem => {
182            if (elem.classList.contains('rbt-active')) {
183              activePanel = elem;
184            }
185          });
186          return activePanel;
187        };
188      
189        // Set active panel
190        const setActivePanel = activePanelNum => {
191          removeClasses(DOMstrings.stepFormPanels, 'rbt-active');
192          DOMstrings.stepFormPanels.forEach((elem, index) => {
193            if (index === activePanelNum) {
194              elem.classList.add('rbt-active');
195            }
196          });
197        };
198      
199        // Add event listener to stepsBar
200        if (DOMstrings.stepsBar) {
201          DOMstrings.stepsBar.addEventListener('click', e => {
202            const eventTarget = e.target;
203      
204            if (!eventTarget.classList.contains(DOMstrings.stepsBtnClass)) {
205              return;
206            }
207      
208            const activeStep = getActiveStep(eventTarget);
209            setActiveStep(activeStep);
210            setActivePanel(activeStep);
211          });
212        }
213      
214        // Add event listener to stepsForm
215        if (DOMstrings.stepsForm) {
216          DOMstrings.stepsForm.addEventListener('click', e => {
217            const eventTarget = e.target;
218      
219            if (
220              !(
221                eventTarget.classList.contains(DOMstrings.stepPrevBtnClass) ||
222                eventTarget.classList.contains(DOMstrings.stepNextBtnClass)
223              )
224            ) {
225              return;
226            }
227      
228            const activePanel = findParent(eventTarget, DOMstrings.stepFormPanelClass);
229            let activePanelNum = Array.from(DOMstrings.stepFormPanels).indexOf(activePanel);
230      
231            if (eventTarget.classList.contains(DOMstrings.stepPrevBtnClass)) {
232              activePanelNum--;
233            } else {
234              activePanelNum++;
235            }
236      
237            setActiveStep(activePanelNum);
238            setActivePanel(activePanelNum);
239          });
240        }
241      });      
242    },
243
244    cursorFollow: function () {
245      let mouseX = 0, mouseY = 0;
246      let xp = 0, yp = 0;
247      const cursorFollower = document.getElementById("cursorFollower");
248      const container = document.querySelector(".cf_boundary");
249
250      if(container) {
251        document.addEventListener("mousemove", (e) => {
252          const rect = container.getBoundingClientRect();
253          
254          mouseX = e.clientX - rect.left;
255          mouseY = e.clientY - rect.top;
256  
257          const maxX = rect.width - cursorFollower.offsetWidth / 2;
258          const maxY = rect.height - cursorFollower.offsetHeight / 2;
259          const minX = cursorFollower.offsetWidth / 2;
260          const minY = cursorFollower.offsetHeight / 2;
261  
262          mouseX = Math.max(minX, Math.min(mouseX, maxX));
263          mouseY = Math.max(minY, Math.min(mouseY, maxY));
264        });
265  
266        function animateCursor() {
267          xp += (mouseX - xp) * 0.1;
268          yp += (mouseY - yp) * 0.1;
269  
270          cursorFollower.style.left = `${xp}px`;
271          cursorFollower.style.top = `${yp}px`;
272  
273          requestAnimationFrame(animateCursor);
274        }
275  
276        animateCursor();
277      }
278
279    },
280
281    toggleModal: function () {
282      var currentQuestion = 1;
283      var totalQuestions = $(".question").length;
284      showQuestion(currentQuestion);
285
286      $("#next-btn, #next-btn-2").click(function () {
287        if (currentQuestion < totalQuestions) {
288          markQuestionAsComplete(currentQuestion); // Mark the current question as complete
289          currentQuestion++;
290          updateProgressBar(currentQuestion);
291          showQuestion(currentQuestion);
292        }
293      });
294
295      $("#prev-btn").click(function () {
296        if (currentQuestion > 1) {
297          currentQuestion--;
298          updateProgressBar(currentQuestion);
299          showQuestion(currentQuestion);
300        }
301      });
302
303      function showQuestion(questionNumber) {
304        $(".question").hide();
305        $("#question-" + questionNumber).show();
306
307        if (questionNumber == 1) {
308          $("#prev-btn").prop("disabled", true);
309        } else {
310          $("#prev-btn").prop("disabled", false);
311        }
312
313        if (questionNumber == totalQuestions) {
314          $("#next-btn-2").show();
315          $("#submit-btn").show();
316        } else {
317          $("#next-btn-2").show();
318          $("#submit-btn").hide();
319        }
320      }
321
322      function updateProgressBar(questionNumber) {
323        var progressPercentage = (questionNumber / totalQuestions) * 100;
324        $(".progress-bar").css("width", progressPercentage + "%");
325        $(".progress").attr("aria-valuenow", progressPercentage);
326      }
327
328      function markQuestionAsComplete(questionNumber) {
329        const buttonSelector = `.quiz-modal-btn:nth-child(${questionNumber})`;
330        const button = $(buttonSelector);
331
332        button.html('<i class="feather-check"></i>');
333        button.addClass("quiz-modal__active");
334
335        if (questionNumber == 3) {
336          button.html('<i class="feather-check"></i>');
337          button.addClass("quiz-modal__active");
338        }
339      }
340
341      $("#quiz-form").submit(function (event) {
342        event.preventDefault();
343      });
344    },
345    typeField: function () {
346      const textarea = document.getElementById("answerTextArea");
347      const charCountSpan = document.querySelector(".chr");
348
349      // Check if the textarea element exists before adding the event listener
350      if (textarea && charCountSpan) {
351        textarea.addEventListener("input", () => {
352          const currentLength = textarea.value.length;
353          const remainingChars = 500 - currentLength;
354
355          if (remainingChars >= 0) {
356            charCountSpan.textContent = `Character Remaining: ${remainingChars}`;
357          } else {
358            textarea.value = textarea.value.substring(0, 500);
359            charCountSpan.textContent = `Character Remaining: 0`;
360          }
361        });
362      }
363    },
364    countDown: function () {
365      let time = 3600;
366      let isTimeEnd = false;
367
368      function updateTimer() {
369        const timerText = document.getElementById("timerText");
370
371        if (timerText) {
372          if (time <= 0) {
373            isTimeEnd = true;
374            timerText.textContent = "0h 0m 0s";
375            return;
376          }
377
378          const getHours = Math.floor(time / 3600);
379          const getMinutes = Math.floor((time % 3600) / 60);
380          const getSeconds = time % 60;
381
382          timerText.textContent = `${getHours}h ${getMinutes}m ${getSeconds}s`;
383
384          time -= 1;
385        } else {
386          clearInterval(interval);
387        }
388      }
389
390      const interval = setInterval(() => {
391        updateTimer();
392
393        if (isTimeEnd) {
394          clearInterval(interval);
395        }
396      }, 1000);
397    },
398    autoslidertab: function (params) {
399      function tabChange() {
400        var tabs = $(".nav-tabs.splash-nav-tabs > li");
401        var active = tabs.find("a.active");
402        var next = active.parent("li").next("li").find("a");
403        if (next.length === 0) {
404          next = tabs.first().find("a").on("click");
405        }
406        next.tab("show");
407      }
408      var tabCycle = setInterval(tabChange, 5000);
409    },
410
411    offCanvas: function (params) {
412      if ($("#rbt-offcanvas-activation").length) {
413        $("#rbt-offcanvas-activation").on("click", function () {
414          $(".side-menu").addClass("side-menu-active"),
415            $("body").addClass("offcanvas-menu-active");
416        }),
417          $(".close_side_menu").on("click", function () {
418            $(".side-menu").removeClass("side-menu-active"),
419              $("body").removeClass("offcanvas-menu-active");
420          }),
421          $(".side-menu .side-nav .navbar-nav li a").on("click", function () {
422            $(".side-menu").removeClass("side-menu-active"),
423              $("body").removeClass("offcanvas-menu-active");
424          }),
425          $("#btn_sideNavClose").on("click", function () {
426            $(".side-menu").removeClass("side-menu-active"),
427              $("body").removeClass("offcanvas-menu-active");
428          });
429      }
430    },
431
432    cartSidenav: function (params) {
433      if ($(".rbt-cart-sidenav-activation").length) {
434        $(".rbt-cart-sidenav-activation").on("click", function () {
435          $(".rbt-cart-side-menu").addClass("side-menu-active"),
436            $("body").addClass("cart-sidenav-menu-active");
437        }),
438          $(".minicart-close-button").on("click", function () {
439            $(".rbt-cart-side-menu").removeClass("side-menu-active"),
440              $("body").removeClass("cart-sidenav-menu-active");
441          }),
442          $(".side-menu .side-nav .navbar-nav li a").on("click", function () {
443            $(".rbt-cart-side-menu").removeClass("side-menu-active"),
444              $("body").removeClass("cart-sidenav-menu-active");
445          }),
446          $("#btn_sideNavClose, .close_side_menu").on("click", function () {
447            $(".rbt-cart-side-menu").removeClass("side-menu-active"),
448              $("body").removeClass("cart-sidenav-menu-active");
449          });
450      }
451    },
452
453    menuCurrentLink: function () {
454      var currentPage = location.pathname.split("/"),
455        current = currentPage[currentPage.length - 1];
456      $(
457        ".mainmenu li a, .dashboard-mainmenu li a, .for-right-content .rbt-course-main-content li a"
458      ).each(function () {
459        var $this = $(this);
460        if ($this.attr("href") === current) {
461          $this.addClass("active");
462          $this.parents(".has-menu-child-item").addClass("menu-item-open");
463        }
464      });
465    },
466
467    salActive: function () {
468      sal({
469        threshold: 0.01,
470        once: true,
471      });
472    },
473
474    eduParalax: function () {
475      var scene = document.getElementById("scene");
476      var parallaxInstance = new Parallax(scene);
477    },
478
479    eduSwiperActive: function () {
480      var swiper = new Swiper(".banner-swiper-active", {
481        effect: "cards",
482        grabCursor: true,
483        pagination: {
484          el: ".rbt-swiper-pagination",
485          clickable: true,
486        },
487      });
488
489      var swiper = new Swiper(".team-slide-activation", {
490        slidesPerView: 1,
491        spaceBetween: 30,
492        loop: true,
493        pagination: {
494          el: ".rbt-swiper-pagination",
495          clickable: true,
496        },
497        navigation: {
498          nextEl: ".rbt-arrow-right",
499          prevEl: ".rbt-arrow-left",
500          clickable: true,
501        },
502        breakpoints: {
503          575: {
504            slidesPerView: 1,
505          },
506          768: {
507            slidesPerView: 2,
508          },
509          992: {
510            slidesPerView: 3,
511          },
512        },
513      });
514
515      var swiper = new Swiper(".team-slide-activation-4", {
516        slidesPerView: 1,
517        spaceBetween: 30,
518        loop: true,
519        pagination: {
520          el: ".rbt-swiper-pagination",
521          clickable: true,
522        },
523        navigation: {
524          nextEl: ".rbt-arrow-right",
525          prevEl: ".rbt-arrow-left",
526          clickable: true,
527        },
528        breakpoints: {
529          575: {
530            slidesPerView: 1,
531          },
532          768: {
533            slidesPerView: 2,
534          },
535          992: {
536            slidesPerView: 3,
537          },
538
539          1200: {
540            slidesPerView: 4,
541          },
542        },
543      });
544
545      var swiper = new Swiper(".blog-post-gallery-activation", {
546        slidesPerView: 1,
547        autoHeight: true,
548        loop: true,
549        navigation: {
550          nextEl: ".rbt-arrow-right",
551          prevEl: ".rbt-arrow-left",
552          clickable: true,
553        },
554      });
555
556      var swiper = new Swiper(".team-slide-activation-2", {
557        slidesPerView: 3,
558        spaceBetween: 0,
559        loop: true,
560        pagination: {
561          el: ".rbt-swiper-pagination",
562          clickable: true,
563        },
564        breakpoints: {
565          320: {
566            slidesPerView: 1,
567          },
568          480: {
569            slidesPerView: 2,
570          },
571          768: {
572            slidesPerView: 2,
573          },
574          992: {
575            slidesPerView: 3,
576          },
577        },
578      });
579
580      var swiper = new Swiper(".service-item-3-activation", {
581        slidesPerView: 1,
582        spaceBetween: 0,
583        loop: false,
584        navigation: {
585          nextEl: ".rbt-arrow-right",
586          prevEl: ".rbt-arrow-left",
587          clickable: true,
588        },
589        breakpoints: {
590          480: {
591            slidesPerView: 1,
592          },
593          481: {
594            slidesPerView: 2,
595          },
596          768: {
597            slidesPerView: 3,
598          },
599          992: {
600            slidesPerView: 3,
601          },
602        },
603      });
604
605      var swiper = new Swiper(".viral-banner-activation", {
606        slidesPerView: 1,
607        spaceBetween: 0,
608        loop: false,
609        navigation: {
610          nextEl: ".rbt-arrow-right",
611          prevEl: ".rbt-arrow-left",
612          clickable: true,
613        },
614      });
615
616      var swiper = new Swiper(".udemy-affilite-activation", {
617        slidesPerView: 1,
618        spaceBetween: 0,
619        loop: true,
620        navigation: {
621          nextEl: ".rbt-arrow-right",
622          prevEl: ".rbt-arrow-left",
623          clickable: true,
624        },
625      });
626
627      var swiperThumb = new Swiper(".rbtmySwiperThumb", {
628        spaceBetween: 10,
629        slidesPerView: 2,
630        freeMode: true,
631        watchSlidesProgress: true,
632      });
633
634      var swiper = new Swiper(".rbt-banner-activation", {
635        slidesPerView: 1,
636        spaceBetween: 0,
637        loop: false,
638        autoHeight: true,
639        navigation: {
640          nextEl: ".rbt-arrow-right",
641          prevEl: ".rbt-arrow-left",
642          clickable: true,
643        },
644        thumbs: {
645          swiper: swiperThumb,
646        },
647      });
648
649      var swiper = new Swiper(".rbt-banner-activation-2", {
650        slidesPerView: 1,
651        spaceBetween: 0,
652        loop: false,
653        autoHeight: true,
654        navigation: {
655          nextEl: ".rbt-arrow-right",
656          prevEl: ".rbt-arrow-left",
657          clickable: true,
658        },
659      });
660
661      var swiper = new Swiper(".rbt-gif-banner-area", {
662        slidesPerView: 1,
663        spaceBetween: 0,
664        loop: true,
665        navigation: {
666          nextEl: ".rbt-arrow-right",
667          prevEl: ".rbt-arrow-left",
668          clickable: true,
669        },
670      });
671
672      var swiper = new Swiper(".testimonial-item-3-activation", {
673        slidesPerView: 1,
674        spaceBetween: 0,
675        loop: false,
676        navigation: {
677          nextEl: ".rbt-arrow-right",
678          prevEl: ".rbt-arrow-left",
679          clickable: true,
680        },
681        pagination: {
682          el: ".rbt-swiper-pagination",
683          clickable: true,
684        },
685        breakpoints: {
686          575: {
687            slidesPerView: 1,
688          },
689
690          768: {
691            slidesPerView: 2,
692          },
693
694          992: {
695            slidesPerView: 3,
696          },
697        },
698      });
699
700      var swiper = new Swiper(".testimonial-activation-1", {
701        slidesPerView: 1,
702        spaceBetween: 0,
703        loop: true,
704        pagination: {
705          el: ".rbt-swiper-pagination",
706          clickable: true,
707        },
708      });
709
710      var swiper = new Swiper(".modern-course-carousel-activation", {
711        slidesPerView: 1,
712        spaceBetween: 0,
713        loop: true,
714        navigation: {
715          nextEl: ".rbt-arrow-right",
716          prevEl: ".rbt-arrow-left",
717          clickable: true,
718        },
719      });
720
721      var swiper = new Swiper(".category-activation-one", {
722        slidesPerView: 1,
723        spaceBetween: 0,
724        loop: true,
725        navigation: {
726          nextEl: ".rbt-arrow-right",
727          prevEl: ".rbt-arrow-left",
728          clickable: true,
729        },
730        pagination: {
731          el: ".rbt-swiper-pagination",
732          clickable: true,
733        },
734        breakpoints: {
735          481: {
736            slidesPerView: 1,
737          },
738          768: {
739            slidesPerView: 2,
740          },
741          992: {
742            slidesPerView: 3,
743          },
744          1200: {
745            slidesPerView: 4,
746          },
747        },
748      });
749
750      var swiper = new Swiper(".category-activation-two", {
751        slidesPerView: 1,
752        spaceBetween: 0,
753        loop: false,
754        navigation: {
755          nextEl: ".rbt-arrow-right",
756          prevEl: ".rbt-arrow-left",
757          clickable: true,
758        },
759        scrollbar: {
760          el: ".swiper-scrollbar",
761          draggable: true,
762          hide: true,
763          snapOnRelease: true,
764        },
765        breakpoints: {
766          480: {
767            slidesPerView: 1,
768          },
769          481: {
770            slidesPerView: 2,
771          },
772          768: {
773            slidesPerView: 2,
774          },
775          992: {
776            slidesPerView: 3,
777          },
778
779          1200: {
780            slidesPerView: 6,
781          },
782        },
783      });
784
785      var swiper = new Swiper(".category-activation-three", {
786        slidesPerView: 1,
787        spaceBetween: 0,
788        loop: true,
789        navigation: {
790          nextEl: ".rbt-arrow-right",
791          prevEl: ".rbt-arrow-left",
792          clickable: true,
793        },
794        scrollbar: {
795          el: ".swiper-scrollbar",
796          draggable: true,
797          hide: true,
798          snapOnRelease: true,
799        },
800        breakpoints: {
801          480: {
802            slidesPerView: 1,
803          },
804          481: {
805            slidesPerView: 2,
806          },
807          768: {
808            slidesPerView: 2,
809          },
810          992: {
811            slidesPerView: 3,
812          },
813          1200: {
814            slidesPerView: 4,
815          },
816        },
817      });
818
819      var swiper = new Swiper(".category-activation-four", {
820        slidesPerView: 1,
821        spaceBetween: 30,
822        loop: true,
823        navigation: {
824          nextEl: ".rbt-arrow-right",
825          prevEl: ".rbt-arrow-left",
826          clickable: true,
827        },
828        scrollbar: {
829          el: ".swiper-scrollbar",
830          draggable: true,
831          hide: true,
832          snapOnRelease: true,
833        },
834        breakpoints: {
835          480: {
836            slidesPerView: 1,
837          },
838          481: {
839            slidesPerView: 2,
840          },
841          768: {
842            slidesPerView: 2,
843          },
844          992: {
845            slidesPerView: 3,
846          },
847          1200: {
848            slidesPerView: 4,
849          },
850        },
851      });
852
853      var swiper = new Swiper(".event-activation-1", {
854        slidesPerView: 1,
855        slidesPerGroup: 1,
856        loop: true,
857        spaceBetween: 30,
858        navigation: {
859          nextEl: ".rbt-arrow-right",
860          prevEl: ".rbt-arrow-left",
861          clickable: true,
862        },
863        scrollbar: {
864          el: ".swiper-scrollbar",
865          draggable: true,
866          hide: true,
867          snapOnRelease: true,
868        },
869        pagination: {
870          el: ".rbt-swiper-pagination",
871          clickable: true,
872        },
873        breakpoints: {
874          575: {
875            slidesPerView: 1,
876          },
877
878          768: {
879            slidesPerView: 2,
880          },
881
882          992: {
883            slidesPerView: 3,
884          },
885          1200: {
886            slidesPerView: 3,
887            slidesPerGroup: 3,
888          },
889        },
890      });
891
892      var swiper = new Swiper(".banner-splash-inner-layout-active", {
893        effect: "cards",
894        grabCursor: true,
895        clickable: true,
896        loop: true,
897        pagination: {
898          el: ".rbt-swiper-pagination",
899          clickable: true,
900          type: "fraction",
901        },
902        navigation: {
903          nextEl: ".rbt-arrow-right",
904          prevEl: ".rbt-arrow-left",
905          clickable: true,
906        },
907      });
908    },
909
910    eduBgCardHover: function () {
911      $(".rbt-hover-active").mouseenter(function () {
912        var self = this;
913        setTimeout(function () {
914          $(".rbt-hover-active.active").removeClass("active");
915          $(self).addClass("active");
916        }, 0);
917      });
918    },
919
920    magnigyPopup: function () {
921      $(document).on("ready", function () {
922        $(".popup-video").magnificPopup({
923          type: "iframe",
924          mainClass: "mfp-fade",
925          removalDelay: 160,
926          preloader: false,
927          fixedContentPos: false,
928        });
929      });
930    },
931
932    counterUp: function () {
933      var odo = $(".odometer");
934      odo.each(function () {
935        $(".odometer").appear(function (e) {
936          var countNumber = $(this).attr("data-count");
937          $(this).html(countNumber);
938        });
939      });
940    },
941
942    pricingPlan: function () {
943      var mainPlan = $(".rbt-pricing-area");
944      mainPlan.each(function () {
945        var yearlySelectBtn = $(".yearly-plan-btn"),
946          monthlySelectBtn = $(".monthly-plan-btn"),
947          monthlyPrice = $(".monthly-pricing"),
948          yearlyPrice = $(".yearly-pricing"),
949          buttonSlide = $(".pricing-checkbox");
950
951        $(monthlySelectBtn).on("click", function () {
952          buttonSlide.prop("checked", true);
953          $(this)
954            .addClass("active")
955            .parent(".nav-item")
956            .siblings()
957            .children()
958            .removeClass("active");
959          monthlyPrice.css("display", "block");
960          yearlyPrice.css("display", "none");
961        });
962
963        $(yearlySelectBtn).on("click", function () {
964          buttonSlide.prop("checked", false);
965          $(this)
966            .addClass("active")
967            .parent(".nav-item")
968            .siblings()
969            .children()
970            .removeClass("active");
971          monthlyPrice.css("display", "none");
972          yearlyPrice.css("display", "block");
973        });
974
975        $(buttonSlide).change(function () {
976          if ($('input[class="pricing-checkbox"]:checked').length > 0) {
977            monthlySelectBtn.addClass("active");
978            yearlySelectBtn.removeClass("active");
979            monthlyPrice.css("display", "block");
980            yearlyPrice.css("display", "none");
981          } else {
982            yearlySelectBtn.addClass("active");
983            monthlySelectBtn.removeClass("active");
984            monthlyPrice.css("display", "none");
985            yearlyPrice.css("display", "block");
986          }
987        });
988      });
989    },
990
991    courseView: function () {
992      var gridViewBtn = $(".rbt-grid-view"),
993        listViewBTn = $(".rbt-list-view");
994
995      $(gridViewBtn).on("click", function () {
996        $(this)
997          .addClass("active")
998          .parent(".course-switch-item")
999          .siblings()
1000          .children()
1001          .removeClass("active");
1002        $(".rbt-course-grid-column").addClass("active-grid-view");
1003        $(".rbt-course-grid-column").removeClass("active-list-view");
1004        $(".rbt-card").removeClass("card-list-2");
1005      });
1006
1007      $(listViewBTn).on("click", function () {
1008        $(this)
1009          .addClass("active")
1010          .parent(".course-switch-item")
1011          .siblings()
1012          .children()
1013          .removeClass("active");
1014        $(".rbt-course-grid-column").removeClass("active-grid-view");
1015        $(".rbt-course-grid-column").addClass("active-list-view");
1016        $(".rbt-card").addClass("card-list-2");
1017      });
1018    },
1019
1020    stickyHeader: function () {
1021      // Header Transparent
1022      if ($("header").hasClass("header-transparent")) {
1023        $("body").addClass("active-header-transparent");
1024      } else {
1025        $("body").removeClass("active-header-transparent");
1026      }
1027    },
1028
1029    masonryActivation: function name(params) {
1030      $(window).load(function () {
1031        $(".masonary-wrapper-activation").imagesLoaded(function () {
1032          // filter items on button click 
1033          $(".messonry-button").on("click", "button", function () {
1034            var filterValue = $(this).attr("data-filter");
1035            $(this).siblings(".is-checked").removeClass("is-checked");
1036            $(this).addClass("is-checked");
1037            $grid.isotope({
1038              filter: filterValue,
1039            });
1040          });
1041          // init Isotope
1042          var $grid = $(".mesonry-list").isotope({
1043            percentPosition: true,
1044            transitionDuration: "0.7s",
1045            layoutMode: "masonry",
1046            masonry: {
1047              columnWidth: ".resizer",
1048            },
1049          });
1050        });
1051      });
1052
1053      $(window).load(function () {
1054        $(".splash-masonary-wrapper-activation").imagesLoaded(function () {
1055          // filter items on button click
1056          $(".messonry-button").on("click", "button", function () {
1057            var filterValue = $(this).attr("data-filter");
1058            $(this).siblings(".is-checked").removeClass("is-checked");
1059            $(this).addClass("is-checked");
1060            $grid.isotope({
1061              filter: filterValue,
1062            });
1063          });
1064          // init Isotope
1065          var $grid = $(".splash-mesonry-list").isotope({
1066            percentPosition: true,
1067            transitionDuration: "0.7s",
1068            layoutMode: "masonry",
1069            masonry: {
1070              columnWidth: ".resizer",
1071            },
1072          });
1073        });
1074      });
1075    },
1076
1077    _clickDoc: function () {
1078      var inputblur, inputFocus, openSideNav, closeSideNav;
1079      inputblur = function (e) {
1080        if (!$(this).val()) {
1081          $(this).parent(".form-group").removeClass("focused");
1082        }
1083      };
1084      inputFocus = function (e) {
1085        $(this).parents(".form-group").addClass("focused");
1086      };
1087      openSideNav = function (e) {
1088        e.preventDefault();
1089        eduJs.sideNav.addClass("active");
1090        $(".search-trigger-active").addClass("open");
1091        eduJs._html.addClass("side-nav-opened");
1092      };
1093
1094      closeSideNav = function (e) {
1095        if (
1096          !$(
1097            '.rbt-search-dropdown, .rbt-search-dropdown *:not(".search-trigger-active, .search-trigger-active *")'
1098          ).is(e.target)
1099        ) {
1100          eduJs.sideNav.removeClass("active");
1101          $(".search-trigger-active").removeClass("open");
1102          eduJs._html.removeClass("side-nav-opened");
1103        }
1104      };
1105      eduJs._document
1106        .on("blur", "input,textarea,select", inputblur)
1107        .on(
1108          "focus",
1109          'input:not([type="radio"]),input:not([type="checkbox"]),textarea,select',
1110          inputFocus
1111        )
1112        .on("click", ".search-trigger-active", openSideNav)
1113        .on("click", ".side-nav-opened", closeSideNav);
1114    },
1115
1116    wowActivation: function () {
1117      new WOW().init();
1118    },
1119
1120    radialProgress: function () {
1121      $(window).scroll(function () {
1122        /* Check the location of each desired element */
1123        $(".radial-progress").each(function (i) {
1124          var bottom_of_object = $(this).offset().top + $(this).outerHeight();
1125          var bottom_of_window = $(window).scrollTop() + $(window).height();
1126          /* If the object is completely visible in the window, fade it in */
1127          if (bottom_of_window > bottom_of_object) {
1128            $(".radial-progress").easyPieChart({
1129              lineWidth: 10,
1130              scaleLength: 0,
1131              rotate: 0,
1132              trackColor: false,
1133              lineCap: "round",
1134              size: 180,
1135              onStep: function (from, to, percent) {
1136                $(this.el).find(".percent").text(Math.round(percent));
1137              },
1138            });
1139          }
1140        });
1141      });
1142    },
1143
1144    marqueImage: function () {
1145      $(".edumarque").each(function () {
1146        var t = 0;
1147        var i = 1;
1148        var $this = $(this);
1149        setInterval(function () {
1150          t += i;
1151          $this.css("background-position-x", -t + "px");
1152        }, 10);
1153      });
1154    },
1155
1156    popupMobileMenu: function (e) {
1157      $(".hamberger-button").on("click", function (e) {
1158        $(".popup-mobile-menu").addClass("active");
1159      });
1160
1161      $(".close-button").on("click", function (e) {
1162        $(".popup-mobile-menu").removeClass("active");
1163        $(
1164          ".popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a"
1165        )
1166          .siblings(".submenu, .rbt-megamenu")
1167          .removeClass("active")
1168          .slideUp("400");
1169        $(
1170          ".popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a"
1171        ).removeClass("open");
1172      });
1173
1174      $(
1175        ".popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a"
1176      ).on("click", function (e) {
1177        e.preventDefault();
1178        $(this)
1179          .siblings(".submenu, .rbt-megamenu")
1180          .toggleClass("active")
1181          .slideToggle("400");
1182        $(this).toggleClass("open");
1183      });
1184
1185      $(".popup-mobile-menu, .popup-mobile-menu .mainmenu.onepagenav li a").on(
1186        "click",
1187        function (e) {
1188          e.target === this &&
1189            $(".popup-mobile-menu").removeClass("active") &&
1190            $(
1191              ".popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a"
1192            )
1193              .siblings(".submenu, .rbt-megamenu")
1194              .removeClass("active")
1195              .slideUp("400") &&
1196            $(
1197              ".popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a"
1198            ).removeClass("open");
1199        }
1200      );
1201    },
1202
1203    headerSticky: function () {
1204      $(window).on("scroll", function () {
1205        if ($("body").hasClass("rbt-header-sticky")) {
1206          var stickyPlaceHolder = $(".rbt-sticky-placeholder"),
1207            headerConainer = $(".rbt-header-wrapper"),
1208            headerConainerH = headerConainer.outerHeight(),
1209            topHeaderH = $(".rbt-header-top").outerHeight() || 0,
1210            targrtScroll = topHeaderH + 200;
1211          if ($(window).scrollTop() > targrtScroll) {
1212            headerConainer.addClass("rbt-sticky");
1213            stickyPlaceHolder.height(headerConainerH);
1214          } else {
1215            headerConainer.removeClass("rbt-sticky");
1216            stickyPlaceHolder.height(0);
1217          }
1218        }
1219      });
1220    },
1221
1222    qtyBtn: function () {
1223      $(".pro-qty").prepend('<span class="dec qtybtn">-</span>');
1224      $(".pro-qty").append('<span class="inc qtybtn">+</span>');
1225      $(".qtybtn").on("click", function () {
1226        var $button = $(this);
1227        var oldValue = $button.parent().find("input").val();
1228        if ($button.hasClass("inc")) {
1229          var newVal = parseFloat(oldValue) + 1;
1230        } else {
1231          if (oldValue > 0) {
1232            var newVal = parseFloat(oldValue) - 1;
1233          } else {
1234            newVal = 0;
1235          }
1236        }
1237        $button.parent().find("input").val(newVal);
1238      });
1239    },
1240
1241    checkoutPage: function () {
1242      $("[data-shipping]").on("click", function () {
1243        if ($("[data-shipping]:checked").length > 0) {
1244          $("#shipping-form").slideDown();
1245        } else {
1246          $("#shipping-form").slideUp();
1247        }
1248      });
1249      $('[name="payment-method"]').on("click", function () {
1250        var $value = $(this).attr("value");
1251        $(".single-method p").slideUp();
1252        $('[data-method="' + $value + '"]').slideDown();
1253      });
1254    },
1255
1256    onePageNav: function () {
1257      $(".onepagenav").onePageNav({
1258        currentClass: "current",
1259        changeHash: false,
1260        scrollSpeed: 500,
1261        scrollThreshold: 0.2,
1262        filter: "",
1263        easing: "swing",
1264      });
1265    },
1266
1267    transparentHeader: function () {
1268      if ($(".rbt-header").hasClass("rbt-transparent-header")) {
1269        var mainHeader = $(".rbt-header").outerHeight();
1270        $("body").addClass("rbt-header-transpernt-active");
1271        $(".header-transperent-spacer").css("padding-top", mainHeader + "px");
1272      }
1273    },
1274
1275    categoryMenuHover: function () {
1276      $(".vertical-nav-menu li.vertical-nav-item").mouseover(function () {
1277        $(".rbt-vertical-inner").hide();
1278        $(".vertical-nav-menu li.vertical-nav-item").removeClass("active");
1279        $(this).addClass("active");
1280        var selected_tab = $(this).find("a").attr("href");
1281        $(selected_tab).stop().fadeIn();
1282        return false;
1283      });
1284    },
1285
1286    selectPicker: function () {
1287      $("select").selectpicker();
1288    },
1289
1290    filterClickButton: function () {
1291      $(".discover-filter-activation").on("click", function () {
1292        $(this).toggleClass("open");
1293        $(".default-exp-expand").slideToggle("400");
1294      });
1295      $("#slider-range").slider({
1296        range: true,
1297        min: 10,
1298        max: 500,
1299        values: [100, 300],
1300        slide: function (event, ui) {
1301          $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
1302        },
1303      });
1304      $("#amount").val(
1305        "$" +
1306          $("#slider-range").slider("values", 0) +
1307          " - $" +
1308          $("#slider-range").slider("values", 1)
1309      );
1310    },
1311
1312    headerTopActivation: function () {
1313      $(".bgsection-activation").on("click", function () {
1314        $(this).parents(".rbt-header-campaign").addClass("deactive");
1315      });
1316    },
1317
1318    magnificPopupActivation: function () {
1319      $(".parent-gallery-container").magnificPopup({
1320        delegate: ".child-gallery-single", // child items selector, by clicking on it popup will open
1321        type: "image",
1322        mainClass: "mfp-with-zoom",
1323        // other options
1324        gallery: {
1325          enabled: true,
1326        },
1327        zoom: {
1328          enabled: true, // By default it's false, so don't forget to enable it
1329          duration: 300, // duration of the effect, in milliseconds
1330          easing: "ease-in-out", // CSS transition easing function
1331          // The "opener" function should return the element from which popup will be zoomed in
1332          // and to which popup will be scaled down
1333          // By defailt it looks for an image tag:
1334          opener: function (openerElement) {
1335            // openerElement is the element on which popup was initialized, in this case its <a> tag
1336            // you don't need to add "opener" option if this code matches your needs, it's defailt one.
1337            return openerElement.is("img")
1338              ? openerElement
1339              : openerElement.find("img");
1340          },
1341        },
1342      });
1343    },
1344
1345    showMoreBtn: function () {
1346      $.fn.hasShowMore = function () {
1347        return this.each(function () {
1348          $(this).toggleClass("active");
1349          $(this).text("Show Less");
1350          $(this).parent(".has-show-more").toggleClass("active");
1351          if ($(this).parent(".has-show-more").hasClass("active")) {
1352            $(this).text("Show Less");
1353          } else {
1354            $(this).text("Show More");
1355          }
1356        });
1357      };
1358      $(document).on("click", ".rbt-show-more-btn", function () {
1359        $(this).hasShowMore();
1360      });
1361    },
1362
1363    sidebarVideoHidden: function () {
1364      var scrollTop = $(".sidebar-video-hidden");
1365      $(window).scroll(function () {
1366        // declare variable
1367        var topPos = $(this).scrollTop();
1368        // if user scrolls down - show scroll to top button
1369        if (topPos > 250) {
1370          $(scrollTop).css("display", "none");
1371        } else {
1372          $(scrollTop).css("display", "block");
1373        }
1374      });
1375    },
1376
1377    courseActionBottom: function () {
1378      var scrollBottom = $(".rbt-course-action-bottom");
1379      $(window).scroll(function () {
1380        var topPos = $(this).scrollTop();
1381        var targetPossition = $(document).height() * 0.66;
1382        var filled =
1383          ($(document).scrollTop() + window.innerHeight) / $(document).height();
1384        if (topPos > targetPossition && filled != 1) {
1385          $(scrollBottom).addClass("rbt-course-action-active");
1386        } else {
1387          $(scrollBottom).removeClass("rbt-course-action-active");
1388        }
1389      });
1390    },
1391
1392    topbarExpend: function () {
1393      var windowWidth = $(window).width();
1394      {
1395        if (windowWidth < 1199) {
1396          $(".top-bar-expended").on("click", function () {
1397            $(".top-expended-activation").hasClass("active")
1398              ? ($(".top-expended-activation").removeClass("active"),
1399                $(".top-expended-activation")
1400                  .find(".top-expended-wrapper")
1401                  .css({ height: "32px" }))
1402              : ($(".top-expended-activation").addClass("active"),
1403                $(".top-expended-activation")
1404                  .find(".top-expended-wrapper")
1405                  .css({
1406                    height: $(".top-expended-inner").outerHeight() + "px",
1407                  }));
1408          });
1409          $(window).on("hresize", function () {
1410            $(".top-expended-activation").hasClass("active") &&
1411              $(".top-expended-activation")
1412                .find(".top-expended-inner")
1413                .css({
1414                  height: $(".top-expended-inner").outerHeight() + "px",
1415                });
1416          });
1417        }
1418      }
1419    },
1420
1421    categoryOffcanvas: function () {
1422      var windowWidth = $(window).width();
1423      if (windowWidth < 1200) {
1424        $(".rbt-side-offcanvas-activation").on("click", function () {
1425          $(".rbt-offcanvas-side-menu").addClass("active-offcanvas");
1426        });
1427        $(".rbt-close-offcanvas").on("click", function () {
1428          $(".rbt-offcanvas-side-menu").removeClass("active-offcanvas");
1429        });
1430        $(".rbt-offcanvas-side-menu").on("click", function (e) {
1431          e.target === this &&
1432            $(".rbt-offcanvas-side-menu").removeClass("active-offcanvas");
1433        });
1434        $(".rbt-vertical-nav-list-wrapper .vertical-nav-item a").on(
1435          "click",
1436          function (e) {
1437            e.preventDefault();
1438            $(this)
1439              .siblings(".vartical-nav-content-menu-wrapper")
1440              .toggleClass("active")
1441              .slideToggle("400");
1442            $(this).toggleClass("active");
1443          }
1444        );
1445      }
1446    },
1447
1448    moveAnimation: function () {
1449      $(".scene").each(function () {
1450        new Parallax($(this)[0]);
1451      });
1452    },
1453
1454    contactForm: function () {
1455      $(".rainbow-dynamic-form").on("submit", function (e) {
1456        e.preventDefault();
1457        var _self = $(this);
1458        var __selector = _self.closest("input,textarea");
1459        _self.closest("div").find("input,textarea").removeAttr("style");
1460        _self.find(".error-msg").remove();
1461        _self
1462          .closest("div")
1463          .find('button[type="submit"]')
1464          .attr("disabled", "disabled");
1465        var data = $(this).serialize();
1466        $.ajax({
1467          url: "mail.php",
1468          type: "post",
1469          dataType: "json",
1470          data: data,
1471          success: function (data) {
1472            _self
1473              .closest("div")
1474              .find('button[type="submit"]')
1475              .removeAttr("disabled");
1476            if (data.code == false) {
1477              _self.closest("div").find('[name="' + data.field + '"]');
1478              _self
1479                .find(".rainbow-btn")
1480                .after('<div class="error-msg"><p>*' + data.err + "</p></div>");
1481            } else {
1482              $(".error-msg").hide();
1483              $(".form-group").removeClass("focused");
1484              _self
1485                .find(".rainbow-btn")
1486                .after(
1487                  '<div class="success-msg"><p>' + data.success + "</p></div>"
1488                );
1489              _self.closest("div").find("input,textarea").val("");
1490
1491              setTimeout(function () {
1492                $(".success-msg").fadeOut("slow");
1493              }, 5000);
1494            }
1495          },
1496        });
1497      });
1498    },
1499
1500    player: function () {
1501      var player = new Plyr(".rbtplayer", {
1502        muted: false,
1503        volume: 1,
1504        controls: [
1505          "play-large",
1506          "play",
1507          "progress",
1508          "current-time",
1509          "mute",
1510          "volume",
1511          "fullscreen",
1512        ],
1513      });
1514    },
1515
1516    quizAns: function () {
1517      var currentQuestion = 1;
1518      showQuestion(currentQuestion);
1519
1520      $("#next-btn").click(function () {
1521        if (currentQuestion < $(".question").length) {
1522          currentQuestion++;
1523          showQuestion(currentQuestion);
1524        }
1525      });
1526
1527      $("#prev-btn").click(function () {
1528        if (currentQuestion > 1) {
1529          currentQuestion--;
1530          showQuestion(currentQuestion);
1531        }
1532      });
1533
1534      function showQuestion(questionNumber) {
1535        $(".question").hide();
1536        $("#question-" + questionNumber).show();
1537
1538        if (questionNumber == 1) {
1539          $("#prev-btn").prop("disabled", true);
1540        } else {
1541          $("#prev-btn").prop("disabled", false);
1542        }
1543
1544        if (questionNumber == $(".question").length) {
1545          $("#next-btn").hide();
1546          $("#submit-btn").show();
1547        } else {
1548          $("#next-btn").show();
1549          $("#submit-btn").hide();
1550        }
1551      }
1552      $("#quiz-form").submit(function (event) {
1553        event.preventDefault();
1554
1555        // Here, you can add your logic to grade the quiz and show the results to the user
1556        //   alert("Quiz submitted!");
1557      });
1558    },
1559
1560    lessonAccor: function () {
1561      // Get saved data from sessionStorage
1562      let selectedCollapse = sessionStorage.getItem("selectedCollapse");
1563      if (selectedCollapse != null) {
1564        $(".accordion .collapse").removeClass("show");
1565        $(".accordion-button")
1566          .addClass("collapsed")
1567          .attr("aria-expanded", false);
1568        $(selectedCollapse).addClass("show");
1569        $(selectedCollapse)
1570          .siblings()
1571          .find("button")
1572          .removeClass("collapsed")
1573          .attr("aria-expanded", true);
1574      }
1575      // To set, which one will be opened
1576      $(".accordion .accordion-button").on("click", function () {
1577        let target = $(this).data("bs-target");
1578        // Save data to sessionStorage
1579        sessionStorage.setItem("selectedCollapse", target);
1580      });
1581    },
1582
1583    unloadImage: function name() {
1584      $("#createfileImage").click(function (e) {
1585        $("#createinputfile").click();
1586      });
1587      function rbtPreview() {
1588        const [file2] = createinputfile.files;
1589        if (file2) {
1590          createfileImage.src = URL.createObjectURL(file2);
1591        }
1592      }
1593      $("#createinputfile").change(function () {
1594        rbtPreview(this);
1595      });
1596    },
1597
1598    searchValue: function () {
1599      $(document).on("keyup", ".rbt-search-active", function () {
1600        var value = $(this).val().toLowerCase();
1601        $(".rbt-search-activation .accordion .accordion-item").filter(
1602          function () {
1603            $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
1604          }
1605        );
1606      });
1607    },
1608
1609    lessonToggle: function () {
1610      $(".lesson-toggle-active").on("click", function () {
1611        $(this).toggleClass("sidebar-hide");
1612        $(".rbt-lesson-leftsidebar").toggleClass("sibebar-none");
1613      });
1614    },
1615
1616    categoryMenuHover2: function () {
1617      $(".dropdown-parent-wrapper li.dropdown-parent-list").mouseover(
1618        function () {
1619          $(".dropdown-child-wrapper").hide();
1620          $(".dropdown-parent-wrapper li.dropdown-parent-list").removeClass(
1621            "active"
1622          );
1623          $(this).addClass("active");
1624          var selected_tab = $(this).find("a").attr("href");
1625          $(selected_tab).stop().fadeIn();
1626          return false;
1627        }
1628      );
1629    },
1630  };
1631  eduJs.i();
1632})(window, document, jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.