PageSourceSearch

https://taein.co.kr/include/topSub.js?date=2026092420&v=3

js taein.co.kr collected 2026-09-24 11:52:18 UTC 23,743 bytes, 691 lines download raw bytes

1	function handleIcoTouchpad(action) {
2		const cookieName = "touchpad";
3
4		if (action === "Y") {
5			// ÄíŰ ÀúÀå (7ÀÏ À¯Áö)
6			const days = 1;
7			const date = new Date();
8			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
9			const expires = "expires=" + date.toUTCString();
10
11			document.cookie = cookieName + "=Y; " + expires + "; path=/";
12		}
13		else  {
14			// ÄíŰ »èÁ¦ (°ú°Å ³¯Â¥·Î ¼³Á¤)
15			document.cookie = cookieName + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
16		}
17
18		location.reload();
19	}
20
21	function getTouchpadCookie() {
22		const cookieName = "touchpad=";
23		const cookies = document.cookie.split(";");
24
25		for (let i = 0; i < cookies.length; i++) {
26			let c = cookies[i].trim();
27
28			if (c.indexOf(cookieName) === 0) {
29				return decodeURIComponent(c.substring(cookieName.length));
30			}
31		}
32		return null; // Äí۰¡ ¾øÀ» °æ¿ì
33	}
34
35
36
37	document.addEventListener('DOMContentLoaded', () => {
38	   const gnbNav = document.getElementById('gnb-nav');
39	   const mainHeader = document.getElementById('main-header');
40	   const gnbMenu = document.querySelector('.gnb-menu:not(.fixed-gnb-menu)');
41	   const fixedGnbMenu = document.querySelector('.fixed-gnb-menu');
42	   const mainSubmenuContainer = document.getElementById('all-submenus-container'); // ´ÜÀÏ ¼­ºê¸Þ´º ÄÁÅ×À̳Ê
43	   const hasSubmenus = document.querySelectorAll('.gnb-menu > li.has-submenu'); // ÀÏ¹Ý GNB ¸Þ´º
44	   const hasSubmenusX = document.querySelectorAll('.gnb-menu > li.has-submenux'); // ÀÏ¹Ý GNB ¸Þ´ºX
45	   const hasSubmenusFixed = document.querySelectorAll('.gnb-menu.fixed-gnb-menu > li.has-submenu-fixed'); // °íÁ¤ GNB ¸Þ´º
46	   let currentOpenMenu = null;
47
48	   // Function to show a specific submenu content
49	   function showSubmenu(menuId) {
50		   // ¸ðµç ¼­ºê¸Þ´º ÄÜÅÙÃ÷ ¼û±â±â
51		   document.querySelectorAll('.submenu-content').forEach(content => {
52			   content.classList.remove('active');
53			   currentOpenMenu = '';
54		   });
55
56		   // ƯÁ¤ ¼­ºê¸Þ´º ÄÜÅÙÃ÷¸¸ Ç¥½Ã
57		   const targetSubmenu = document.getElementById(`submenu-${menuId}`);
58		   if (targetSubmenu) {
59			   targetSubmenu.classList.add('active');
60			   mainSubmenuContainer.style.display = 'block'; // Àüü ¼­ºê¸Þ´º ÄÁÅ×ÀÌ³Ê º¸À̱â
61		   } else {
62			   mainSubmenuContainer.style.display = 'none'; // ÇØ´ç ¼­ºê¸Þ´º ¾øÀ¸¸é ¼û±è
63		   }
64	   }
65
66	   // Function to hide all submenus
67	   function hideAllSubmenus() {
68		   mainSubmenuContainer.style.display = 'none';
69		   document.querySelectorAll('.submenu-content').forEach(content => {
70			   content.classList.remove('active');
71		   });
72	   }
73
74	   // Attach mouseenter/mouseleave events to regular GNB items
75	   hasSubmenus.forEach(item => {
76		   item.addEventListener('mouseenter', () => {
77			   const menuId = item.dataset.menu;
78			   showSubmenu(menuId);
79		   });
80	   });
81
82		hasSubmenusX.forEach(item => {
83			item.addEventListener('click', () => {
84				const menuId = item.dataset.menu;
85
86				// ÀÌ¹Ì ¿­¸° ¸Þ´º¸¦ ´Ù½Ã Ŭ¸¯ÇÑ °æ¿ì ¡æ ´Ý±â
87				if (currentOpenMenu === menuId) {
88					hideAllSubmenus();
89					currentOpenMenu = null;
90				}
91				// ´Ù¸¥ ¸Þ´º Ŭ¸¯ÇÑ °æ¿ì ¡æ ÇØ´ç ¸Þ´º ¿­±â
92				else {
93					showSubmenu(menuId);
94					currentOpenMenu = menuId;
95				}
96			});
97		});
98
99
100	   // Attach mouseenter/mouseleave events to fixed GNB items
101	   hasSubmenusFixed.forEach(item => {
102		   item.addEventListener('mouseenter', () => {
103			   const menuId = item.dataset.menu;
104			   showSubmenu(menuId);
105		   });
106	   });
107
108	   // Add mouseleave event to the main submenu container itself
109	   mainSubmenuContainer.addEventListener('mouseleave', () => {
110		   hideAllSubmenus();
111	   });
112
113	   // Also, when the mouse leaves the entire GNB area (including submenus)
114	   gnbNav.addEventListener('mouseleave', (event) => {
115		   // Use a small timeout to allow moving from main menu to submenu
116		   setTimeout(() => {
117			   if (!gnbNav.contains(event.relatedTarget) && !mainSubmenuContainer.contains(event.relatedTarget)) {
118				   hideAllSubmenus();
119			   }
120		   }, 50); // ªÀº Áö¿¬ ½Ã°£
121	   });
122
123	   // GNB Fixed on Scroll
124	   let lastScrollY = window.scrollY;
125	   let headerHeight = mainHeader.offsetHeight;
126	   let gnbHeight = gnbNav.offsetHeight;
127
128	   window.addEventListener('scroll', () => {
129		   const currentScrollY = window.scrollY;
130
131		   if (currentScrollY > headerHeight) {
132			   gnbNav.classList.add('fixed');
133			   gnbMenu.style.display = 'none';
134			   fixedGnbMenu.style.display = 'flex';
135			   document.body.style.paddingTop = `${gnbHeight}px`;
136			   hideAllSubmenus(); // Fixed GNB activated, hide any open submenus
137		   } else {
138			   gnbNav.classList.remove('fixed');
139			   gnbMenu.style.display = 'flex';
140			   fixedGnbMenu.style.display = 'none';
141			   document.body.style.paddingTop = '0';
142			   hideAllSubmenus(); // Back to unfixed, hide any open submenus
143		   }
144
145		   lastScrollY = currentScrollY;
146	   });
147
148	   // Initial load check for scroll position
149	   window.dispatchEvent(new Event('scroll'));
150	});
151	document.addEventListener('DOMContentLoaded', () => {
152	   // --- Tab Menu Logic ---
153	   const tabButtons = document.querySelectorAll('.tab-button');
154	   // Select the content divs by their specific IDs
155	   const tabRegionContent = document.getElementById('tab-region');
156	   const tabCourtContent = document.getElementById('tab-court');
157
158	   // Function to handle tab switching
159	   function switchTab(tabId) {
160		   // Remove 'active' class from all tab buttons
161		   tabButtons.forEach(button => {
162			   button.classList.remove('active');
163		   });
164
165		   //// Hide all tab content sections
166		   //tabRegionContent.classList.remove('active');
167		   //tabCourtContent.classList.remove('active');
168
169		   //// Activate the clicked tab button
170		   //const clickedButton = document.querySelector(`.tab-button[data-tab="${tabId}"]`);
171		   //if (clickedButton) {
172			//   clickedButton.classList.add('active');
173		   //}
174
175		   //// Show the corresponding tab content
176		   //const targetContent = document.getElementById(`tab-${tabId}`); // Dynamically get the ID
177		   //if (targetContent) {
178			//   targetContent.classList.add('active');
179		   //}
180	   }
181
182	   // Add click event listeners to tab buttons
183	   tabButtons.forEach(button => {
184		   button.addEventListener('click', () => {
185			   const tabId = button.dataset.tab; // Gets 'region' or 'court'
186			   switchTab(tabId);
187		   });
188	   });
189
190	   // Initialize: Show the default active tab (e.g., 'region') on page load
191	   // This ensures one tab is always visible when the page first loads.
192	   switchTab('region');
193
194
195	   // --- Number Counter Logic ---
196	   const counterElement = document.getElementById('counter-number');
197	   const targetNumber = 12345; // Your desired target number
198	   const duration = 2000; // Duration of the animation in milliseconds (2 seconds)
199	   const steps = 100; // Number of animation steps
200	   const increment = targetNumber / steps;
201	   let currentNumber = 0;
202	   let stepCount = 0;
203
204
205
206	   // Start the counter animation when the page loads
207	   //animateCounter();
208	});
209
210	$(function() {
211		const $bannerContainer = $(".banner-image-right");
212		const $imageWrapper = $bannerContainer.find(".image-wrapper");
213		const $images = $imageWrapper.find("a");
214		const $dotsContainer = $bannerContainer.find(".jtion-bn-right");
215		const $dots = $dotsContainer.find(".right-bn-jtion");
216
217		const slideWidth = $bannerContainer.width();
218		const totalImages = $images.length;
219		let currentIndex = 0;
220		let autoSlideInterval;
221		const autoSlideTime = 3000;
222		const animationSpeed = 300;
223
224		$imageWrapper.prepend($images.last().clone().addClass('cloned'));
225		$imageWrapper.append($images.first().clone().addClass('cloned'));
226
227		$imageWrapper.css('left', -slideWidth);
228
229
230
231		function slideTo(targetIndex) {
232			if ($imageWrapper.is(':animated')) return;
233
234			const targetPosition = -(targetIndex + 1) * slideWidth;
235
236			$imageWrapper.stop(true, true).animate({ left: targetPosition }, {
237				duration: animationSpeed,
238				easing: 'linear',
239				complete: function () {
240					if (targetIndex === totalImages) {
241						// ¸¶Áö¸· ½½¶óÀ̵忡¼­ ù ½½¶óÀ̵å·Î ·çÇÁ
242						$imageWrapper.css('left', -slideWidth);
243						currentIndex = 0;
244					} else if (targetIndex === -1) {
245						// ù ½½¶óÀ̵忡¼­ ¸¶Áö¸· ½½¶óÀ̵å·Î ·çÇÁ
246						$imageWrapper.css('left', -(totalImages * slideWidth));
247						currentIndex = totalImages - 1;
248					} else {
249						currentIndex = targetIndex;
250					}
251					updateDots();
252				}
253			});
254		}
255
256
257		function moveNext() {
258			let nextIndex = currentIndex + 1;
259			if (nextIndex >= totalImages) {
260				slideTo(totalImages);
261			} else {
262				slideTo(nextIndex);
263			}
264		}
265
266		function updateDots() {
267			$dots.removeClass("check");
268			$dots.eq(currentIndex).addClass("check");
269		}
270
271		function startAutoSlide() {
272			clearInterval(autoSlideInterval);
273			autoSlideInterval = setInterval(moveNext, autoSlideTime);
274		}
275
276		function resetAutoSlide() {
277			startAutoSlide();
278		}
279		//$dots.on("mouseenter", function() {
280		//	const slideIndex = $(this).data("slide-index");
281		//	if (slideIndex !== undefined) {
282		//		slideTo(slideIndex);
283		//		resetAutoSlide();
284		//	}
285		//});
286
287		//$bannerContainer.on("mouseenter", function() {
288		//	clearInterval(autoSlideInterval);
289		//}).on("mouseleave", function() {
290		//	resetAutoSlide();
291		//});
292
293		updateDots();
294		startAutoSlide();
295	});
296
297	document.addEventListener('DOMContentLoaded', () => {
298	   // --- Notice Roller Logic ---
299	   const list = document.getElementById("noticeList");
300
301	   if (list) {
302		   const items = list.children;
303		   const totalOriginal = 3; // IMPORTANT: This should be the number of *unique* notice items
304		   const itemHeight = 24;
304 // This should match the height of .notice-item in your CSS
305		   let index = 0; // Current item index
306		   let timer = null;
307
308		   // Function for automatic seamless scrolling
309		   function autoScrollNotice() {
310			   index++;
311			   list.style.transition = 'top 0.6s ease'; // Ensure transition is on for automatic scroll
312
313			   if (index >= totalOriginal) {
314				   // If we've scrolled past the last original item into its duplicate
315				   list.style.top = -(itemHeight * index) + "px"; // Finish the animation to the duplicate
316
317				   // After the animation completes, instantly jump back to the first original item
318				   setTimeout(() => {
319					   list.style.transition = 'none'; // Disable transition for the instant jump
320					   index = 0; // Reset index to the first original item's logical position
321					   list.style.top = -(itemHeight * index) + "px"; // Instantly reset position
322				   }, 600); // This delay must match your CSS transition duration
323			   } else {
324				   // Normal scroll for original items
325				   list.style.top = -(itemHeight * index) + "px";
326			   }
327		   }
328
329		   // Function for manual scrolling (buttons)
330		   function manualScrollNotice(dir) {
331			   stopRolling(); // Stop automatic rolling when manually controlled
332
333			   list.style.transition = 'top 0.6s ease'; // Always enable transition for manual scroll
334
335			   index += dir;
336
337			   if (index >= totalOriginal) {
338				   // If scrolling down past the last original item
339				   index = 0; // Go to the first original item
340			   } else if (index < 0) {
341				   // If scrolling up past the first original item
342				   index = totalOriginal - 1; // Go to the last original item
343			   }
344
345			   list.style.top = -(itemHeight * index) + "px";
346
347			   // Restart rolling after a short delay (optional, but good for user experience)
348			   // You might want to remove this if you want it to stay paused after manual interaction.
349			   startRolling();
350		   }
351
352		   function startRolling() {
353			   clearInterval(timer); // Clear any existing timer
354			   timer = setInterval(() => {
355				   autoScrollNotice(); // Call the auto-scrolling function
356			   }, 3000); // Adjust interval as needed
357		   }
358
359		   function stopRolling() {
360			   clearInterval(timer);
361		   }
362
363		   // Initialize on page load: set initial position and start rolling
364		   list.style.top = "0px"; // Ensure it starts at the very top
365		   startRolling();
366
367		   // Mouse interaction: Use the notice-container for events
368		   const noticeContainer = document.querySelector('.notice-container');
369		   if (noticeContainer) {
370			   noticeContainer.addEventListener("mouseenter", stopRolling);
371			   noticeContainer.addEventListener("mouseleave", startRolling);
372		   } else {
373			   console.error("Error: .notice-container not found.");
374		   }
375
376		   // Attach click handlers to the buttons
377		   // These now call manualScrollNotice
378		   const prevButton = document.querySelector('.notice-buttons button:first-child');
379		   const nextButton = document.querySelector('.notice-buttons button:last-child');
380
381		   if (prevButton) {
382			   prevButton.onclick = () => manualScrollNotice(-1);
383		   }
384		   if (nextButton) {
385			   nextButton.onclick = () => manualScrollNotice(1);
386		   }
387
388	   } else {
389		   //console.error("Error: #noticeList element not found. Check your HTML ID.");
390	   }
391
392	   // --- Tab Menu Logic (as provided previously) ---
393	   const tabButtons = document.querySelectorAll('.tab-button');
394	   const tabRegionContent = document.getElementById('tab-region');
395	   const tabCourtContent = document.getElementById('tab-court');
396
397	   function switchTab(tabId) {
398		   tabButtons.forEach(button => {
399			   button.classList.remove('active');
400		   });
401		   if (tabRegionContent) tabRegionContent.classList.remove('active');
402		   if (tabCourtContent) tabCourtContent.classList.remove('active');
403
404		   const clickedButton = document.querySelector(`.tab-button[data-tab="${tabId}"]`);
405		   if (clickedButton) {
406			   clickedButton.classList.add('active');
407		   }
408
409		   const targetContent = document.getElementById(`tab-${tabId}`);
410		   if (targetContent) {
411			   targetContent.classList.add('active');
412		   }
413	   }
414	   switchTab('region'); // Initialize default tab
415
416	   // --- Number Counter Logic (as provided previously) ---
417	   const counterElement = document.getElementById('counter-number');
418	   const targetNumber = 12345;
419	   const duration = 2000;
420	   const steps = 100;
421	   const increment = targetNumber / steps;
422	   let currentNumber = 0;
423	   let stepCount = 0;
424
425	   function animateCounter() {
426		   if (stepCount < steps) {
427			   currentNumber += increment;
428			   if (counterElement) {
429				   counterElement.textContent = Math.round(currentNumber).toLocaleString();
430			   }
431			   stepCount++;
432			   requestAnimationFrame(animateCounter);
433		   } else {
434			   if (counterElement) {
435				   counterElement.textContent = targetNumber.toLocaleString();
436			   }
437		   }
438	   }
439	   animateCounter();
440	});
441
442	//Áöµµ°Ë»ö 201908029
443		function opn_search_map(gb){
444			switch(gb) {
445				case "1" : para = "kyung"; break;
446				case "2" : para = "pre"; break;
447				case "3" : para = "gong"; break;
448				default : para = ""; break;
449			}
450			window.open("/aucmap2/?default_kind="+para,"mapSearch","height=" + screen.height + ",width=" + screen.width + "fullscreen=yes");
451		}
452
453
454	function route()
455	{
456		window.open("/subscription/popup/map.htm","refund","menubar=no,titlebar=no,scrollbars=yes,resizable=no,Width=930,Height=740");
457	}
458
459
460$(function() {
461    // --- Àç»ç¿ë °¡´ÉÇÑ ½½¶óÀÌ´õ ÃʱâÈ­ ÇÔ¼ö ---
462    // ÀÌ ÇÔ¼ö´Â ½½¶óÀÌ´õ¸¦ ¼³Á¤ÇÏÁö¸¸, ÀÚµ¿ ½½¶óÀ̵å´Â ½ÃÀÛÇÏÁö ¾Ê½À´Ï´Ù.
463    function initializeSlider(options) {
464        const {
465            containerSelector,
466            ulSelector,
467            liSelector,
468            animationSpeed,
469            autoSlideIntervalTime,
470            liGap,
471            visibleItemsCount
472        } = options;
473
474        const $container = $(containerSelector);
475        const $slider = $container.find(ulSelector);
476        const $items = $slider.children(liSelector);
477        const numItems = $items.length;
478
479        $slider.removeAttr('style');
480
481        const itemWidth = $items.length > 0 ? ($items.outerWidth(true) + liGap) : 0;
482
483        const visibleItems = visibleItemsCount;
484        const $scrollWrap = $container.find(".scroll-wrap");
485
486        let autoSlideInterval;
487        let isAnimating = false;
488
489        if (numItems > visibleItems) {
490            $slider.children('.cloned').remove();
491            for (let i = 0; i < visibleItems + 1; i++) {
492                $slider.append($items.eq(i % numItems).clone().addClass('cloned'));
493            }
494            for (let i = numItems - 1; i >= numItems - (visibleItems + 1); i--) {
495                $slider.prepend($items.eq(i % numItems).clone().addClass('cloned'));
496            }
497            $slider.css("left", -(itemWidth * (visibleItems + 1)));
498        } else {
499            $slider.children('.cloned').remove();
500            $slider.css("left", 0);
501        }
502
503        //const $prevButton = $container.find(".btn_prev");
504        //const $nextButton = $container.find(".btn_next");
505
506        //const canSlide = numItems > visibleItems;
507
508        //if (!canSlide) {
509        //    $prevButton.prop('disabled', true).css('cursor', 'not-allowed');
510        //    $nextButton.prop('disabled', true).css('cursor', 'not-allowed');
511        //} else {
512        //    $prevButton.prop('disabled', false).css('cursor', 'pointer');
513        //    $nextButton.prop('disabled', false).css('cursor', 'pointer');
514        //}
515
516		//$nextButton.off('click').on('click', function() {
517		//	if (!canSlide || $(this).prop('disabled') || isAnimating) return;
518		//	moveNext();
519		//	resetAutoSlide();
520		//});
521
522		//$prevButton.off('click').on('click', function() {
523		//	if (!canSlide || $(this).prop('disabled') || isAnimating) return;
524		//	movePrev();
525		//	resetAutoSlide();
526		//});
527
528
529
530        function moveNext() {
531            if (!canSlide || isAnimating) return;
532            isAnimating = true;
533            $slider.stop(true, true).animate({ left: `-=${itemWidth}px` }, animationSpeed, function() {
534                const currentLeft = parseInt($slider.css("left"));
535                if (currentLeft <= -(itemWidth * (numItems + visibleItems))) {
536                    $slider.css("left", -(itemWidth * (visibleItems + 1)));
537                }
538                isAnimating = false;
539            });
540        }
541
542        function movePrev() {
543            if (!canSlide || isAnimating) return;
544            isAnimating = true;
545            $slider.stop(true, true).animate({ left: `+=${itemWidth}px` }, animationSpeed, function() {
546                const currentLeft = parseInt($slider.css("left"));
547                if (currentLeft >= -(itemWidth * visibleItems)) {
548                    $slider.css("left", -(itemWidth * numItems));
549                }
550                isAnimating = false;
551            });
552        }
553
554        function startAutoSlide() {
555            if (!canSlide || $nextButton.prop('disabled')) return;
556            autoSlideInterval = setInterval(moveNext, autoSlideIntervalTime);
557        }
558
559        function stopAutoSlide() {
560             clearInterval(autoSlideInterval);
561        }
562
563        function resetAutoSlide() {
564            if (!canSlide) return;
565            stopAutoSlide();
566            startAutoSlide();
567        }
568
569        let activeSliderScrollWrap = null;
570        let gestureStartX = 0;
571        let sliderStartLeft = 0;
572        const swipeThreshold = 50;
573
574        //$scrollWrap.on("mousedown touchstart", function(e) {
575        //    if (!canSlide || isAnimating) return;
576        //    stopAutoSlide();
577
578        //    const clientX = e.originalEvent.touches ? e.originalEvent.touches[0].clientX : e.clientX;
579
580        //    isAnimating = true;
581        //    gestureStartX = clientX;
582        //    sliderStartLeft = parseInt($slider.css("left"));
583
584        //    $slider.stop(true, true);
585
586        //    if (e.type === "mousedown") {
587        //        e.preventDefault();
588        //        $(this).css('cursor', 'grabbing');
589        //    }
590
591        //    activeSliderScrollWrap = this;
592        //});
593
594        //$(document).on("mousemove touchmove", function(e) {
595        //    if (!activeSliderScrollWrap || !isAnimating) return;
596
597        //    if (e.type === "touchmove") {
598        //        e.preventDefault();
599        //    }
600
601        //    const clientX = e.originalEvent.touches ? e.originalEvent.touches[0].clientX : e.clientX;
602        //    const gestureDistX = clientX - gestureStartX;
603        //    $slider.css("left", sliderStartLeft + gestureDistX + "px");
604        //});
605
606        //$(document).on("mouseup touchend", function(e) {
607        //    if (!activeSliderScrollWrap || !isAnimating) return;
608
609        //    if (e.type === "mouseup") {
610        //        $(activeSliderScrollWrap).css('cursor', 'grab');
611        //    }
612
613        //    const gestureDistX = parseInt($slider.css("left")) - sliderStartLeft;
614
615        //    if (Math.abs(gestureDistX) < swipeThreshold) {
616        //        $slider.animate({ left: sliderStartLeft + "px" }, animationSpeed, function() {
617        //            resetAutoSlide();
618        //        });
619        //    } else {
620        //        if (gestureDistX < 0) {
621        //            moveNext();
622        //        } else {
623        //            movePrev();
624        //        }
625        //        resetAutoSlide();
626        //    }
627
628        //    isAnimating = false;
629        //    activeSliderScrollWrap = null;
630        //});
631
632        //// ÀνºÅϽº µ¥ÀÌÅ͸¦ scrollWrap¿¡ ÀúÀå
633        //$scrollWrap.data('sliderInstance', {
634        //    $slider: $slider,
635        //    numItems: numItems,
636        //    visibleItems: visibleItems,
637        //    itemWidth: itemWidth,
638        //    animationSpeed: animationSpeed,
639        //    autoSlideIntervalTime: autoSlideIntervalTime,
640        //    canSlide: canSlide,
641        //    resetAutoSlide: resetAutoSlide,
642        //    startAutoSlide: startAutoSlide,
643        //    stopAutoSlide: stopAutoSlide,
644        //    moveNext: moveNext,
645        //    movePrev: movePrev
646        //});
647    }
648
649    // --- °¢ ½½¶óÀÌ´õ ÀνºÅϽº ÃʱâÈ­ ---
650    // ¸ÕÀú ¸ðµç ½½¶óÀÌ´õ¸¦ ÃʱâÈ­¸¸ ÇÕ´Ï´Ù.
651    initializeSlider({
652        containerSelector: ".partner-academy",
653        ulSelector: ".partner-academy-ul",
654        liSelector: ".partner-academy-li",
655        animationSpeed: 300,
656        autoSlideIntervalTime: 3000,
657        liGap: 16,
658        visibleItemsCount: 4
659    });
660
661    initializeSlider({
662        containerSelector: ".partner-class",
663        ulSelector: ".partner-class-ul",
664        liSelector: ".partner-class-li",
665        animationSpeed: 300,
666        autoSlideIntervalTime: 3000,
667        liGap: 16,
668        visibleItemsCount: 4
669    });
670
671    // --- ½½¶óÀÌ´õ ÀÚµ¿ ½ºÅ©·Ñ ¼ø¼­ Á¦¾î ---
672    // ÀÌÁ¦ ÃʱâÈ­µÈ ½½¶óÀÌ´õ¸¦ ¿øÇÏ´Â ¼ø¼­´ë·Î ½ÃÀÛÇÕ´Ï´Ù.
673
674    // 1. ¸ÕÀú ¿òÁ÷ÀÏ ½½¶óÀÌ´õ (partner-academy) ÀÚµ¿ ½½¶óÀÌµå ½ÃÀÛ (Áï½Ã)
675    const $academyScrollWrap = $(".partner-academy").find(".scroll-wrap");
676    const academyData = $academyScrollWrap.data('sliderInstance');
677    if (academyData && academyData.canSlide) {
678        academyData.startAutoSlide();
679    }
680
681    // 2. ³ªÁß¿¡ ¿òÁ÷ÀÏ ½½¶óÀÌ´õ (partner-class) ÀÚµ¿ ½½¶óÀÌµå µô·¹ÀÌ ½ÃÀÛ
682    const delayBeforeClassStarts =1000;
683
684    setTimeout(() => {
685        const $classScrollWrap = $(".partner-class").find(".scroll-wrap");
686        const classData = $classScrollWrap.data('sliderInstance');
687        if (classData && classData.canSlide) {
688            classData.startAutoSlide();
689        }
690    }, delayBeforeClassStarts);
691});

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.