PageSourceSearch

https://philakorea2025.kr/

html philakorea2025.kr collected 2026-10-07 15:49:51 UTC 338,254 bytes, 6,579 lines download raw bytes

1
2
3
4<!DOCTYPE html>
5<html lang="ko">
6<head>
7    <meta charset="utf-8">
8    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
9    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
10        <meta name="viewport" content="width=device-width, initial-scale=1.0">
11        <meta name="generator" content="QUV Homepage Builder"/>
12    <meta name="language" content="kr"/>
13    <meta name="referrer" content="always">
14    <title>World Stamp Exhibition PHILAKOREA 2025 </title>
15    <meta name="keywords" content="Stamp Exhibition,World Stamp Exhibition,PHILAKOREA,philakorea 2025,philakorea,필라코리아,필라코리아2025,세계우표전시회"/>
16    <meta name="description" content="PHILAKOREA, a world stamp exhibition at COEX Magok in September 2025."/>
17    <meta property="og:title" content="World Stamp Exhibition PHILAKOREA 2025"/>
18    <meta property="og:description" content="PHILAKOREA, a world stamp exhibition at COEX Magok in September 2025."/>
19    <meta property="og:url" content="https://philakorea2025.kr/"/>
20            <meta property="og:image" content="/s/og_image.png?v=1791388190"/>
21    
22    <meta name="naver-site-verification" content="63b0ac6865a9e7388dd47b4b614bced4aaa8714f" />
23<meta name="google-site-verification" content="iKhQ_SadH9Jc6t6tnxb1a3DVjMoHaFr72Px8bC54mQM" />
24    <!--favicon-->
25            <link rel="icon" type="image/png" href="/s/favicon_96.png?v=1791388190" sizes="96x96"/>
26        <link rel="apple-touch-icon-precomposed" sizes="96x96" href="/s/favicon_96.png?v=1791388190">
27        <link rel="canonical" href="https://philakorea2025.kr/" />
28            <meta name="robots" content="index,follow">
29    
30    <link href="/css/bootstrap.css?v=260904" rel="stylesheet">
31    <link href="/css/font-awesome.min.css?v=260904" rel="stylesheet">
32    <link href="/css/material-icons.min.css?v=260904" rel="stylesheet">
33    <link href="/css/simple-line-icons.css?v=260904" rel="stylesheet">
34    <link href="/css/style.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
35    <link href="/css/mobile.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
36    <link href="/css/header.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
37    <link href="/css/uploadfile.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
38    <link href="/css/font.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
39    <link href="/css/form.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
40    <link href="/css/table.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
41    <link href="/css/jquery-ui.1.12.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
42    <!--pagespeed <link href="/css/bootstrap-colorpicker.css?v=260904" rel="stylesheet" type="text/css" media="all"/>-->
43    <link href="/css/slider.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
44    <link href="/css/animate.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
45    <link href="/css/jquery.scrollbar.css?v=260904" rel="stylesheet" type="text/css" media="all"/> <!--page-->
46    <!--pagespeed <link href="/css/jquery.mCustomScrollbar.css?v=260904" rel="stylesheet" type="text/css" media="all">-->
47    <link href="/css/default.less?t=1791388190" rel="stylesheet/less" type="text/css"/>
48    <!--<link href="/live/s/site.less?t=1791388190" rel="stylesheet/less" type="text/css"/>-->
49    <!--    <link rel="stylesheet" href="https://unpkg.com/ag-grid-community/dist/styles/ag-grid.css">-->
50    <!--    <link rel="stylesheet" href="/css/ag-theme-material.css">-->
51    <link rel="stylesheet" href="/css/ag-grid.css">
52    <link rel="stylesheet" href="/css/ag-theme-material.css">
53
54    <link href="/css/bootstrap-datepicker3.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
55    <link href="/css/bootstrap-timepicker.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
56    <!--pagespeed <link href="/css/tablecellsselection.css?v=260904" rel="stylesheet" type="text/css" media="all"/>-->
57    <!--<link href="/css/ScrollTrigger.css?v=--><!--" rel="stylesheet" type="text/css" media="all"/>-->
58    <link href="/css/fullcalendar.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
59    <link href="/css/fullcalendar.min.css?v=260904" rel="stylesheet" type="text/css" media="all"/>
60    <link href="/css/fullcalendar.print.min.css?v=260904" rel="stylesheet" type="text/css" media="print"/>
61
62    <!-- ionicons -->
63    <link href="/css/ionicons/ionicons.css?v=260904" rel="stylesheet">
64    <link href="https://unpkg.com/[email protected]/dist/css/ionicons.min.css" rel="stylesheet">
65
66    
67    
67<script>
68        var qvDebug={}; qvDebug.drag=1;//1:debug on
69        var STID="hrlwhxut0"; var SVID="1"; var SPID="1"; var MSID="hrlwhx"; var SITE_NAME="PHILAKOREA 2025"; var USE_APP="0"; var LANG="en"; var SITE_URL="home";
70        var QV_BASE_OBJ={'sskey':"", 'token':"c9c960ad882f67e9f69735f07e863e18", 'stid':STID, 'svid':SVID, 'spid':SPID, 'msid':MSID, 'site_name':SITE_NAME, 'use_app':USE_APP, 'eng_domain':'philakorea2025.kr', 'member_account_type':"1",'is_free_version':'0', 'dev':""};
71        var CKEDITOR_BASEPATH = "/js/ck3/";
72        var IS_LOGINED="0";
73        less = {
74            //env: "production", //development,production-으로 하면 캐싱 오류남
75            env: "production",
76            logLevel: 2,
77            async: false,
78            fileAsync: false,
79            poll: 1000,
80            functions: {},
81            dumpLineNumbers: "comments",
82            relativeUrls: false
83        };
84        var account = "";
85        var auth = "";
86        var group = "";
87        var isAdmin = "0";
88
89        if (QV_BASE_OBJ.is_free_version==1 && self !== top) {
90            //12.6
91            alert('도메인으로 이용하시려면\n큐브 프리미엄 버전으로 업그레이드 해주세요.\n큐브 사이트로 이동합니다');
92            location.href='https://www.quv.kr';
93        }
94    </script>
94
95    
95<script src="/js/less.min.js?v=260904" type="text/javascript"></script>
95
96    
96<script>//less.watch();</script>
96
97
98    <!--[if lt IE 9]>
99    
99<script type="text/javascript" src="/js/html5shiv.js?v=260904"></script>
99 <![endif]-->
100    
100<script type="text/javascript" src="/js/jquery.2.2.4.min.js?v=260904"></script>
100
101    
101<script type="text/javascript" src="/js/bootstrap.js?v=260904"></script>
101
102    
102<script>$.fn.bootstrapBtn = $.fn.button.noConflict();</script>
102 <!--반드시 bootsrap - jquery-ui 사이에 위치-->
103    
103<script type="text/javascript" src="/js/jquery-ui.1.12.min.js?v=260904"></script>
103
104    
104<script type="text/javascript" src="/js/jquery.lazyload.js?v=260904"></script>
104
105    
105<script type="text/javascript" src="/js/jquery-migrate-1.2.1.min.js?v=260904"></script>
105
106    
106<script type="text/javascript" src="/js/jquery.ui.touch-punch.min.js?v=260904"></script>
106
107    <!--
107<script type="text/javascript" src="/js/jquery.htmlClean.js?v=260904"></script>
107-->
108    
108<script type="text/javascript" src="/js/global.js?v=260904" charset="utf-8"></script>
108
109    
109<script type="text/javascript" src="/js/script.js?v=260904" charset="utf-8"></script>
109
110    
110<script type="text/javascript" src="/js/jquery.uploadfile.js?v=260904"></script>
110
111    <!--
111<script type="text/javascript" src="/js/ck3/ckeditor.js?v=--><!--" charset="utf-8"></script>
111-->
112    <!--pagespeed 
112<script type="text/javascript" src="/js/bootstrap-colorpicker.new.js?v=260904" charset="utf-8"></script>
112-->
113    
113<script type="text/javascript" src="/js/jquery.scrollbar.js?v=260904" charset="utf-8"></script>
113
114    <!--pagespeed 
114<script type="text/javascript" src="/js/jquery.mCustomScrollbar.concat.min.js?v=260904"></script>
114-->
115    
115<script type="text/javascript" src="/js/bootstrap-datepicker.min.js?v=260904"></script>
115
116    
116<script type="text/javascript" src="/js/bootstrap-timepicker.min.js?v=260904"></script>
116
117    <!--pagespeed 
117<script type="text/javascript" src="/js/tablecellsselection.js?v=260904"></script>
117-->
118    
118<script type="text/javascript" src="/js/carousel-swipe.js?v=260904"></script>
118
119    
119<script type="text/javascript" src="/js/jquerymobile-swipeupdown.js?v=260904"></script>
119
120    <!--
120<script type="text/javascript" src="/js/ScrollTrigger.min.js?v=--><!--"></script>
120-->
121    <!--
121<script type="text/javascript" src="/js/webfont.js?v=--><!--"></script>
121-->
122
123    
123<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>
123
124    
124<script type="text/javascript">
125        var webfontJson_Header = '{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}';
126        var webfontJson_Body = '{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}';
127        var webfontJson_Footer = '{"google":[],"custom":["Noto Sans KR"]}';
128        var webfontJson_Fixed = '{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}';
129        var webfontJson_Popup = '[]';
130
131        var webfontArray = [];
132        webfontArray.push($.parseJSON(webfontJson_Header));
133        webfontArray.push($.parseJSON(webfontJson_Body));
134        webfontArray.push($.parseJSON(webfontJson_Footer));
135        webfontArray.push($.parseJSON(webfontJson_Fixed));
136        webfontArray = $.merge(webfontArray, $.parseJSON(webfontJson_Popup.replace(/"{/g, "{").replace(/}"/g, "}")));
137
138        var webfont_google = [];
139        var webfont_custom = [];
140        var webfont_custom_url = 'css/font.css.php?family=';
141        var webfont_exclude = ['agGridMaterial'];
142        $.each(webfontArray, function(index, value) {
143            if (this.google != undefined && value != null) {
144                $.each(value.google, function() {
145                    var font = String(this) + ':300,400,700';
146                    if (String(this) == '' || webfont_exclude.indexOf(String(this)) > -1) return;
147                    if ($.inArray(font, webfont_google) == -1) {
148                        webfont_google.push(font);
149                    }
150                });
151            }
152            if (this.custom != undefined  && value != null) {
153                $.each(value.custom, function() {
154                    if ($.inArray(String(this), webfont_custom) == -1) {
155                        webfont_custom.push(String(this));
156                        webfont_custom_url += String(this).replace(/ /g,'+');
157                        webfont_custom_url += '|';
158                    }
159                });
160            }
161        });
162
163        var webfont = new Object();
164        webfont.google = webfont_google;
165        webfont.custom = webfont_custom;
166        webfont.custom_url = ['/' + webfont_custom_url.slice(0, -1)];
167
168        var webfontconfig = new Object();
169        // if (webfont.google.length > 0) { webfontconfig.google = { 'families' : webfont.google } }
170        if (webfont.custom.length > 0) { webfontconfig.custom = { 'families' : webfont.custom, 'urls' : webfont.custom_url } }
171
172        /* 2020.01.31 재헌
173             * 묶어서 호출했을 때 하나라도 지원하지 않는 폰트가 있으면 그 하위로 모두 호출하지 않는 문제가 있음.
174             * 위 이유로 구글 폰트는 개별 호출한다.
175             */
176        $.each(webfont.google, function() {
177            var webfontconfig_re = new Object();
178            webfontconfig_re.google = { 'families' : [ this ] };
179            WebFont.load(webfontconfig_re);
180        });
181
182        if (!$.isEmptyObject(webfontconfig)) {
183            WebFontConfig = webfontconfig;
184//            WebFontConfig = {
185//                google: {
186//                    families: ['Abel','Abril Fatface','Alegreya','Barlow','Cardo','Cookie','Dancing Script','Dosis','Droid Sans','Droid Serif','EB Garamond','Great Vibes','Lato','Libre Baskerville','Lora','Mada','Montserrat','Muli','Nixie One','Noto Sans','Noto Serif','Open Sans','Oswald','Playball','Playfair Display','PT Sans','PT Serif','Questrial','Quicksand','Raleway','Roboto','Stalemate','Ubuntu','Indie Flower']
187//                }
188//            };
189
190            // https://github.com/typekit/webfontloader
191            // v1.0 -> v1.6.26
192            (function() {
193                var wf = document.createElement('script');
194                wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js';
195                wf.type = 'text/javascript';
196                wf.async = 'true';
197                var s = document.getElementsByTagName('script')[0];
198                s.parentNode.insertBefore(wf, s);
199            })();
200        }
201    </script>
201
202    
202<script type="text/javascript" src="//log1.quv.kr/log/qa.js"></script>
202
203
204    <!-- 다음 우편번호 검색 -->
205    
205<script src="https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
205
206
207    <!-- 다국어 -->
208        
208<script type="text/javascript" src="/module/language/lang.en.js?v=260904"></script>
208
209    
210
211
212    </head>
213
214<body class="live transform" style="display: none;">
215<div id="main_container" class="1">
216    <div class="header hl1-1 transform useFixed">
217                                        <div class="header1 sub-mn-type-1 sub-mn-align-vertical sub-mn-text-align-center" data-hei="100" data-scr-hei="95" style="border-bottom: 1px solid rgb(226, 226, 226); height: 101px; display: table;">
218                                            <div class="header-contents" style="height: 100px;">
219                                                <div class="col-xs-2" style="height: auto;">
220                                                    <div class="al-box column al-l">
221                                                        <div class="tc box hsync-nlh logoBox tc_drag" style="height: 100px; padding: 0px 0px 0px 30px;" id="bM4CEr">
222                                                            <div class="view logo_container">
223<div class="logo-text hide"><a href="/" style="font-size: 26px; font-weight: bold; letter-spacing: 0px; color: rgb(255, 255, 255); font-family: Barlow, &quot;Noto Sans KR&quot;;">STUDIO</a></div>
224<div class="logo-img"><a href="/"><img class="logo-img-core" src="//cdn.quv.kr/hrlwhxut0/up/67bfb9041e3d3_1920.png" style="max-height: 100px; height: 70px;"></a></div>
225                                                            </div>
226                                                        </div>
227                                                    </div>
228                                                </div>
229                                                <div class="col-xs-9" style="height: auto;" pp_grid="8">
230                                                    <div class="al-box column al-r">
231                                                                                                            <ul class="mn-ul tc box hsync mn-sty-1 tc_drag" id="boPsUc" style="display: table-cell; height: 100px; line-height: 100px;"><headerstart></headerstart><li class="mn-item"> <a class="mn-link" href="/overview">About PHILAKOREA</a><span class="mn-dropdown"></span>
232<ul class="sub-mn">
233<li class="mn-item"> <a class="mn-link" href="/57?qvac=fXbRj9">Overview</a></li>
234<li class="mn-item"> <a class="mn-link" href="/concept">2025 Concept</a></li>
235<li class="mn-item"> <a class="mn-link" href="/layout">Exhibition Layout</a></li>
236<li class="mn-item"> <a class="mn-link" href="/111">Schedule</a></li>
237<li class="mn-item"> <a class="mn-link" href="/lastexhibition">Last Exhibition</a></li>
238</ul></li>
239<li class="mn-item"> <a class="mn-link" href="/exhibit">Exhibit</a><span class="mn-dropdown"></span>
240<ul class="sub-mn">
241<li class="mn-item"> <a class="mn-link" href="/21?qvac=fHCCtl">Exhibit Application</a></li>
242<li class="mn-item"> <a class="mn-link" href="/specialprize">Special Prize</a></li>
243<li class="mn-item"> <a class="mn-link" href="/salesbooths">Sales Booths</a></li>
244<li class="mn-item"> <a class="mn-link" href="/grandprix">Grand Prix Club</a></li>
245<li class="mn-item"> <a class="mn-link" href="/exhibitlist">Exhibit List</a></li>
246<li class="mn-item"> <a class="mn-link" href="/113">Exhibit Result</a></li>
247</ul></li>
248<li class="mn-item"> <a class="mn-link" href="/commissioners">Organization</a><span class="mn-dropdown"></span>
249<ul class="sub-mn">
250<li class="mn-item"> <a class="mn-link" href="/101?qvac=fD32xi">Commissioners</a></li>
251<li class="mn-item"> <a class="mn-link" href="/jury">Jury &amp; Expert</a></li>
252<li class="mn-item"> <a class="mn-link" href="/sponsor">Sponsor</a></li>
253</ul></li>
254<li class="mn-item"> <a class="mn-link" href="/transportation">Directions</a><span class="mn-dropdown"></span>
255<ul class="sub-mn">
256<li class="mn-item"> <a class="mn-link" href="/64">Transportation</a></li>
257<li class="mn-item"> <a class="mn-link" href="/officialhotel">Official Hotel</a></li>
258<li class="mn-item"> <a class="mn-link" href="/otherhotels">Other Hotels</a></li>
259</ul></li>
260<li class="mn-item"> <a class="mn-link" href="/notification">Notification</a><span class="mn-dropdown"></span>
261<ul class="sub-mn">
262<li class="mn-item"> <a class="mn-link" href="/24?qvac=fDUgA7">Notification</a></li>
263<li class="mn-item"> <a class="mn-link" href="/faq">FAQ</a></li>
264<li class="mn-item"> <a class="mn-link" href="/pressrelease">Press Release</a></li>
265<li class="mn-item"> <a class="mn-link" href="/82">Gallery</a></li>
266<li class="mn-item"> <a class="mn-link" href="/contact">Contact Us</a></li>
267</ul></li>
268<li class="mn-item"> <a class="mn-link" href="/downloads">Downloads</a><span class="mn-dropdown"></span>
269<ul class="sub-mn">
270<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1Gw4G5G2H8xKaS3aKQ4FNBhxuKJQyrHKC/view?usp=drive_link" target="_blank">IREX</a></li>
271<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1wuOD4i2Ub8vRpZf8TYiNMBrl762OhUoI/view?usp=drive_link" target="_blank">Exhibit application</a></li>
272<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1fkPF1STHWWdddESO01QP8rQtc0zZwxOA/view?usp=drive_link" target="_blank">Philatelic Literature</a></li>
273</ul></li>
274<headerend></headerend>
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331        </ul></div>                                                </div><div class="col-xs-1" style="height: auto;"><div class="al-box column al-c"><div class="tc box hsync-nlh languageSelectorBox tc_drag" id="bLCida" style="display: table-cell; height: 100px; padding: 0px;">
332            <div class="view">
333                <a class="preview-layer" href="#" data-target="#LanguageSelectorModal" data-toggle="modal" data-obj="img"></a>
334                <div class="language-selector-container">
335                    <div class="language-selector language-type-1" data-lang="ko">
336                        <div class="language-selector-flag flag-ko" data-lang="ko" data-id="l1hgZKp">
337                            <a href="http://kr.philakorea2025.kr"></a>
338                        </div>
339                        <div class="language-selector-flag flag-en" data-lang="en" data-id="l2hgZKp">
340                            <a href="https://philakorea2025.kr/"></a>
341                        </div>
342                    </div>
343                </div>
344            </div>
345        </div></div></div>                                            </div>                                            <div class="header-op"></div>                                        </div>                                    <logo>{"type":"img","src":"//cdn.quv.kr/hrlwhxut0/up/67bfb9041e3d3_1920.png","height":70}</logo><menuitems><li class="mn-item"> <a class="mn-link" href="/overview">About PHILAKOREA</a><span class="mn-dropdown"></span>
346<ul class="sub-mn">
347<li class="mn-item"> <a class="mn-link" href="/57?qvac=fXbRj9">Overview</a></li>
348<li class="mn-item"> <a class="mn-link" href="/concept">2025 Concept</a></li>
349<li class="mn-item"> <a class="mn-link" href="/lastexhibition">Last Exhibition</a></li>
350</ul></li>
351<li class="mn-item"> <a class="mn-link" href="/exhibit">Exhibit</a><span class="mn-dropdown"></span>
352<ul class="sub-mn">
353<li class="mn-item"> <a class="mn-link" href="/21?qvac=fHCCtl">Exhibit Application</a></li>
354<li class="mn-item"> <a class="mn-link" href="/salesbooths">Sales Booths</a></li>
355<li class="mn-item"> <a class="mn-link" href="/layout">Exhibition Layout</a></li>
356<li class="mn-item"> <a class="mn-link" href="/schedule">Schedule</a></li>
357</ul></li>
358<li class="mn-item"> <a class="mn-link" href="/commissioners">Organization</a><span class="mn-dropdown"></span>
359<ul class="sub-mn">
360<li class="mn-item"> <a class="mn-link" href="/101?qvac=fD32xi">Commissioners</a></li>
361<li class="mn-item"> <a class="mn-link" href="/jury">Jury &amp; Expert</a></li>
362<li class="mn-item"> <a class="mn-link" href="/sponsor">Sponsor</a></li>
363</ul></li>
364<li class="mn-item"> <a class="mn-link" href="/transportation">Directions</a><span class="mn-dropdown"></span>
365<ul class="sub-mn">
366<li class="mn-item"> <a class="mn-link" href="/64">Transportation</a></li>
367<li class="mn-item"> <a class="mn-link" href="/officialhotel">Official Hotel</a></li>
368<li class="mn-item"> <a class="mn-link" href="/otherhotels">Other Hotels</a></li>
369</ul></li>
370<li class="mn-item"> <a class="mn-link" href="/notification">Notification</a><span class="mn-dropdown"></span>
371<ul class="sub-mn">
372<li class="mn-item"> <a class="mn-link" href="/24?qvac=fDUgA7">Notification</a></li>
373<li class="mn-item"> <a class="mn-link" href="/faq">FAQ</a></li>
374<li class="mn-item"> <a class="mn-link" href="/pressrelease">Press Release</a></li>
375<li class="mn-item"> <a class="mn-link" href="/contact">Contact Us</a></li>
376</ul></li>
377<li class="mn-item"> <a class="mn-link" href="/downloads">Downloads</a><span class="mn-dropdown"></span>
378<ul class="sub-mn">
379<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1MBRNdCZj03NqlWKm11oHwaTeB07aXYDR/view?usp=drive_link" target="_blank">IREX</a></li>
380<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1wuOD4i2Ub8vRpZf8TYiNMBrl762OhUoI/view?usp=drive_link" target="_blank">Exhibit application</a></li>
381<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1fkPF1STHWWdddESO01QP8rQtc0zZwxOA/view?usp=drive_link" target="_blank">Philatelic Literature</a></li>
382</ul></li>
383</menuitems><webfont>
383{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}</webfont></div>
384<div class="header-mobile hl1-1 transform">
385                                        <div class="header1" style="top: 0px; position: fixed; height: 73px;" data-top="0" data-hei="73" data-border-width="1" data-border-color="rgba(0, 0, 0, 0.122)" data-background="white" data-scroll-fix="true">
386                                            <div class="header-contents boxing" style="height: 74px;">
387                                                <div class="col-xs-6" style="height: auto;">
388                                                    <div class="al-box column al-l">
389                                                        <div class="tc box hsync-nlh tc_drag" id="bt8asO" style="height: 73px;">
390                                                            <div class="view">
391                                                            </div>
392                                                        </div><div class="box tc hsync-nlh imgBox tc_drag" id="bbsZJs" style="display: table-cell; height: 73px; padding: 0px 0px 0px 20px;">
393				<div class="view img-view tb-c va-m" style="text-align: center; height: 73px;">
394					<a class="preview-layer" href="#" data-target="#ImgModal" data-toggle="modal" data-obj="img" data-mode="he"></a>
395					<a id="ir3Wnt" class="image-area" style="width: auto;" href="/1?qvac=">
396						<div class="img-core" style="background: url(&quot;https://cdn.quv.kr/hrlwhxut0%2Fup%2F673afbc3b78c3_800.png&quot;) 48% 54% / contain no-repeat; width: 150px; height: 37px; border-radius: 0px; max-height: 73px;" data-ratio="0.2575">
397						</div>
398						<div class="img-op" style="width: 150px; left: 0px; height: auto; top: 0px; background-color: transparent; border: 0px solid transparent; border-radius: 0px; max-height: 73px;">
399							<div class="caption-txt"><p><br></p></div>
400						</div>
401					<style>#ir3Wnt:hover .img-op{background-color:transparent !important;}</style></a>
402				</div>
403			</div>
404                                                    </div>
405                                                </div>
406                                            <div class="col-xs-6" style="height: auto;"><div class="al-box column al-r"><div class="tc box hsync-nlh languageSelectorBox tc_drag" id="bY4MYg" style="display: table-cell; height: 73px;">
407            <div class="view">
408                <a class="preview-layer" href="#" data-target="#LanguageSelectorModal" data-toggle="modal" data-obj="img"></a>
409                <div class="language-selector-container">
410                    <div class="language-selector language-type-1" data-lang="ko">
411                        <div class="language-selector-flag flag-ko" data-lang="ko" data-id="l1ztxy3">
412                            <a href="http://kr.philakorea2025.kr"></a>
413                        </div>
414                    <div class="language-selector-flag flag-en" data-lang="en" data-id="lcPNGu"><a href="https://philakorea2025.kr"></a></div></div>
415                </div>
416            </div>
417        </div><div class="box tc sideNavBox hsync-nlh tc_drag" id="bZT4cw" style="display: flex; height: 73px;">
418                <!--<div class="view va-m">-->
419                <div class="view tb-c va-m">
420                    <a class="preview-layer" href="#" data-target="#header_side_nav" data-toggle="modal"></a>
421                    <div class="header-side-nav-button" data-width="20" data-height="2" data-margin="3" data-radius="0" data-border-width="1" data-padding="15" data-background="white" data-color="black" data-border-color="transparent" data-border-radius="0"><div class="line-1"></div><div class="line-2"></div><div class="line-3"></div><style class="header-side-nav-button-style">.header-mobile .header-side-nav-button > div {width:20px !important;height:2px !important;margin:3px auto !important;border-radius:0px !important;background-color:black !important;}.header-mobile .header-side-nav-button {padding:15px !important;border-width:1px !important;border-radius:0px !important;background:white !important;border-color:transparent !important;}</style></div>
422                    <div class="header-side-nav hsl-1" data-width="300" data-padding="15" data-letter-spacing="0" data-font-weight-1="400" data-font-weight-2="300" data-background-1="white" data-background-2="transparent" data-color-1="#757575" data-color-2="black" data-border="transparent" data-color-close="#a2a2a2" data-logo="false" data-login="false" data-font-size-1="15" data-font-size-2="14" data-font-family-ko="Noto Sans KR" data-font-family-en="Montserrat" data-direction="right-to-left" data-padding-logo="0">
423                        <!--logo-->
424                        <div class="logo_container"><div class="logo-text hide"><a href="/">LOGO</a></div><div class="logo-img"><a href="/"><img class="logo-img-core" src="https://cdn.quv.kr/hrlwhxut0%2Fup%2F67162879b5480_1920.png" style="max-height:70px; height:70px;"></a></div></div>
425                        <!--login-->
426                        <div id="header-mobile-ml-area" class="notuse">
427                            <div class="login-before">
428                                <div class="ml-item login-link"><a href="#" data-target="#LoginModal" role="button" data-toggle="modal">로그인</a></div>
429                                <div class="ml-item join-link"><a href="/join">회원가입</a></div>
430                            </div>
431                            <div class="login-after active">
432                                <div class="ml-item logout-link"><a id="LogOutBtn" href="#">로그아웃</a></div>
433                                <div class="ml-item mypage-link"><a href="/mypage">정보수정</a></div>
434                            </div>
435                        </div>
436                        <!--menu-->
437                        <div class="mn-ul-container">
438                            <ul class="mn-ul tc box hsync tc_drag" style="height: 73px; line-height: 73px;" id="bE9pW2"><headerstart></headerstart><li class="mn-item"> <a class="mn-link" href="/overview">About PHILAKOREA</a><span class="mn-dropdown"></span>
439<ul class="sub-mn">
440<li class="mn-item"> <a class="mn-link" href="/57?qvac=fXbRj9">Overview</a></li>
441<li class="mn-item"> <a class="mn-link" href="/concept">2025 Concept</a></li>
442<li class="mn-item"> <a class="mn-link" href="/layout">Exhibition Layout</a></li>
443<li class="mn-item"> <a class="mn-link" href="/111">Schedule</a></li>
444<li class="mn-item"> <a class="mn-link" href="/lastexhibition">Last Exhibition</a></li>
445</ul></li>
446<li class="mn-item"> <a class="mn-link" href="/exhibit">Exhibit</a><span class="mn-dropdown"></span>
447<ul class="sub-mn">
448<li class="mn-item"> <a class="mn-link" href="/21?qvac=fHCCtl">Exhibit Application</a></li>
449<li class="mn-item"> <a class="mn-link" href="/specialprize">Special Prize</a></li>
450<li class="mn-item"> <a class="mn-link" href="/salesbooths">Sales Booths</a></li>
451<li class="mn-item"> <a class="mn-link" href="/grandprix">Grand Prix Club</a></li>
452<li class="mn-item"> <a class="mn-link" href="/exhibitlist">Exhibit List</a></li>
453<li class="mn-item"> <a class="mn-link" href="/113">Exhibit Result</a></li>
454</ul></li>
455<li class="mn-item"> <a class="mn-link" href="/commissioners">Organization</a><span class="mn-dropdown"></span>
456<ul class="sub-mn">
457<li class="mn-item"> <a class="mn-link" href="/101?qvac=fD32xi">Commissioners</a></li>
458<li class="mn-item"> <a class="mn-link" href="/jury">Jury &amp; Expert</a></li>
459<li class="mn-item"> <a class="mn-link" href="/sponsor">Sponsor</a></li>
460</ul></li>
461<li class="mn-item"> <a class="mn-link" href="/transportation">Directions</a><span class="mn-dropdown"></span>
462<ul class="sub-mn">
463<li class="mn-item"> <a class="mn-link" href="/64">Transportation</a></li>
464<li class="mn-item"> <a class="mn-link" href="/officialhotel">Official Hotel</a></li>
465<li class="mn-item"> <a class="mn-link" href="/otherhotels">Other Hotels</a></li>
466</ul></li>
467<li class="mn-item"> <a class="mn-link" href="/notification">Notification</a><span class="mn-dropdown"></span>
468<ul class="sub-mn">
469<li class="mn-item"> <a class="mn-link" href="/24?qvac=fDUgA7">Notification</a></li>
470<li class="mn-item"> <a class="mn-link" href="/faq">FAQ</a></li>
471<li class="mn-item"> <a class="mn-link" href="/pressrelease">Press Release</a></li>
472<li class="mn-item"> <a class="mn-link" href="/82">Gallery</a></li>
473<li class="mn-item"> <a class="mn-link" href="/contact">Contact Us</a></li>
474</ul></li>
475<li class="mn-item"> <a class="mn-link" href="/downloads">Downloads</a><span class="mn-dropdown"></span>
476<ul class="sub-mn">
477<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1Gw4G5G2H8xKaS3aKQ4FNBhxuKJQyrHKC/view?usp=drive_link" target="_blank">IREX</a></li>
478<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1wuOD4i2Ub8vRpZf8TYiNMBrl762OhUoI/view?usp=drive_link" target="_blank">Exhibit application</a></li>
479<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1fkPF1STHWWdddESO01QP8rQtc0zZwxOA/view?usp=drive_link" target="_blank">Philatelic Literature</a></li>
480</ul></li>
481<headerend></headerend>
482</ul>
483                        </div>
484                        <div class="header-side-nav-close">×</div>
485                    <style class="header-side-nav-style">.header-mobile .header-side-nav {background-color:white !important;padding-top:0px !important;width:300px !important;}.header-mobile .header-side-nav .mn-ul > li.mn-item > ul.sub-mn {padding:0 0 0 15px !important;font-family:Montserrat, "Noto Sans KR" !important;}.header-mobile .header-side-nav .mn-ul > li.mn-item > ul.sub-mn > li a {padding:7.5px 7.5px 15px !important;}.header-mobile .header-side-nav .mn-ul > li.mn-item > a.mn-link {padding:15px !important;letter-spacing:0px !important;font-size:15px !important;font-weight:400 !important;font-family:Montserrat, "Noto Sans KR" !important;color:#757575 !important;}.header-mobile .header-side-nav .mn-ul li.mn-item:hover { background-color:transparent !important;}.header-mobile .header-side-nav .mn-ul li.mn-item:hover > a.mn-link {color:black !important;}.header-mobile .header-side-nav ul.sub-mn > li a {font-size:14px !important;font-weight:300 !important;font-family:Montserrat, "Noto Sans KR" !important;color:#757575 !important;}.header-mobile .header-side-nav ul.sub-mn > li:hover a {color:black !important;}.header-mobile .header-side-nav > .mn-ul-container > ul > li {border-bottom: 1px solid transparent !important;}.header-mobile .header-side-nav > .mn-ul-container > ul > li > .mn-dropdown:after {border-color:#757575 !important; top:15px !important; width:7.5px!important; height:7.5px!important;}.header-mobile .header-side-nav > .mn-ul-container > ul > li > .mn-dropdown:hover:after {border-color:black !important;}.header-mobile .header-side-nav > .header-side-nav-close {color:#a2a2a2 !important;}.header-mobile .header-side-nav > .logo_container {display:none !important;}.header-mobile .header-side-nav > #header-mobile-ml-area {display:none !important;}.header-mobile .header-side-nav > #header-mobile-ml-area .login-before > div {border-color:#757575 !important;}.header-mobile .header-side-nav > #header-mobile-ml-area .login-before > div > a {color:#757575 !important;}.header-mobile .header-side-nav > #header-mobile-ml-area .login-after > div {border-color:#757575 !important;}.header-mobile .header-side-nav > #header-mobile-ml-area .login-after > div > a {color:#757575 !important;}</style></div>
486                </div>
487            </div></div></div></div>
488                                            <div class="header-op">
489                                            </div>
490                                        <div class="header-mobile-config"><div class="header-mobile-config-section-insert">&nbsp;</div><div class="header-mobile-config-section-delete">&nbsp;</div><div class="header-mobile-config-section-detail">섹션 설정</div></div><style class="header-mobile-style">.header-mobile .header1 .header-contents { height:73px !important; background:white !important; border-bottom: 1px solid rgba(0, 0, 0, 0.122) !important; }</style></div>
491                                    <logo>{"type":"img","src":"https://cdn.quv.kr/hrlwhxut0%2Fup%2F67162879b5480_1920.png","height":70}</logo><menuitems><li class="mn-item"> <a class="mn-link" href="/overview">About PHILAKOREA</a><span class="mn-dropdown"></span>
492<ul class="sub-mn">
493<li class="mn-item"> <a class="mn-link" href="/57?qvac=fXbRj9">Overview</a></li>
494<li class="mn-item"> <a class="mn-link" href="/concept">2025 Concept</a></li>
495<li class="mn-item"> <a class="mn-link" href="/lastexhibition">Last Exhibition</a></li>
496</ul></li>
497<li class="mn-item"> <a class="mn-link" href="/exhibit">Exhibit</a><span class="mn-dropdown"></span>
498<ul class="sub-mn">
499<li class="mn-item"> <a class="mn-link" href="/21?qvac=fHCCtl">Exhibit Application</a></li>
500<li class="mn-item"> <a class="mn-link" href="/salesbooths">Sales Booths</a></li>
501<li class="mn-item"> <a class="mn-link" href="/layout">Exhibition Layout</a></li>
502<li class="mn-item"> <a class="mn-link" href="/schedule">Schedule</a></li>
503</ul></li>
504<li class="mn-item"> <a class="mn-link" href="/commissioners">Organization</a><span class="mn-dropdown"></span>
505<ul class="sub-mn">
506<li class="mn-item"> <a class="mn-link" href="/101?qvac=fD32xi">Commissioners</a></li>
507<li class="mn-item"> <a class="mn-link" href="/jury">Jury &amp; Expert</a></li>
508<li class="mn-item"> <a class="mn-link" href="/sponsor">Sponsor</a></li>
509</ul></li>
510<li class="mn-item"> <a class="mn-link" href="/transportation">Directions</a><span class="mn-dropdown"></span>
511<ul class="sub-mn">
512<li class="mn-item"> <a class="mn-link" href="/64">Transportation</a></li>
513<li class="mn-item"> <a class="mn-link" href="/officialhotel">Official Hotel</a></li>
514<li class="mn-item"> <a class="mn-link" href="/otherhotels">Other Hotels</a></li>
515</ul></li>
516<li class="mn-item"> <a class="mn-link" href="/notification">Notification</a><span class="mn-dropdown"></span>
517<ul class="sub-mn">
518<li class="mn-item"> <a class="mn-link" href="/24?qvac=fDUgA7">Notification</a></li>
519<li class="mn-item"> <a class="mn-link" href="/faq">FAQ</a></li>
520<li class="mn-item"> <a class="mn-link" href="/pressrelease">Press Release</a></li>
521<li class="mn-item"> <a class="mn-link" href="/contact">Contact Us</a></li>
522</ul></li>
523<li class="mn-item"> <a class="mn-link" href="/downloads">Downloads</a><span class="mn-dropdown"></span>
524<ul class="sub-mn">
525<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1MBRNdCZj03NqlWKm11oHwaTeB07aXYDR/view?usp=drive_link" target="_blank">IREX</a></li>
526<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1wuOD4i2Ub8vRpZf8TYiNMBrl762OhUoI/view?usp=drive_link" target="_blank">Exhibit application</a></li>
527<li class="mn-item"> <a class="mn-link" href="https://drive.google.com/file/d/1fkPF1STHWWdddESO01QP8rQtc0zZwxOA/view?usp=drive_link" target="_blank">Philatelic Literature</a></li>
528</ul></li>
529</menuitems></div>    <div class="body  pl-h">
530        <div class="frm m-pd-v-0 mobile-font-scale-1 m-pd-h-0 mobile-display-none" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: none; border-radius: 0px;" data-m-hei="509px" data-hei="auto" id="fek82a" data-cwid="" data-finder-folded="true" data-finder-name="메인영상"><div class="preview"></div>
531            
532            
533            <div class="view ha-c"><div class="box-background-video box-background-video-fullwidth" data-url="https://youtu.be/AyA4KPqQM-U"><div><iframe id="video_gfpwu" frameborder="0" allowfullscreen="1" allow="autoplay; encrypted-media" width="auto" height="auto" class="video-iframe resolution-1920x1080" style="opacity: 1" data-src="//www.youtube.com/embed/AyA4KPqQM-U?frameborder=0&amp;autoplay=1&amp;mute=1&amp;muted=1&amp;loop=1&amp;playlist=AyA4KPqQM-U&amp;playsinline=0&amp;autohide=1&amp;&amp;fs=0&amp;showinfo=0&amp;modestBranding=1&amp;start=0&amp;controls=0&amp;rel=0&amp;disablekb=1&amp;iv_load_policy=3&amp;wmode=transparent"></iframe></div></div>
534                <div class="tb tbu" style="height: auto;">
535                    <div class="row clearfix tb-c va-m" style="transform: none; height: 1080px; display: table-cell;">
536                        <div class="col-sm-12 column" style="height: auto;"><
536/div>
537                    </div>
538                </div>
539            </div>
540        <style class="mobile-frm">@media (max-width: 767px) {#fek82a > .view > .tb{height:509px !important;}} .mobile_editor_mode #fek82a > .view > .tb{height:509px !important;}</style></div><div class="frm m-pd-v-0 mobile-font-scale-1 m-pd-h-0 mobile_ele" style="text-align: center; margin: 0px; display: block; padding: 0px; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/67f4c9c88cb08_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; border: none; border-radius: 0px;" data-m-hei="600px" data-hei="auto" id="fu399G" data-cwid="" data-finder-folded="false"><div class="preview"></div>
541            
542            
543            <div class="view ha-c">
544                <div class="tb tbu" style="height: auto;">
545                    <div class="row clearfix tb-c va-m" style="transform: none; height: 600px; display: table-cell;">
546                        <div class="col-sm-12 column" style="height: auto;"></div>
547                    </div>
548                </div>
549            </div>
550        <style class="mobile-frm">@media (max-width: 767px) { #fu399G > .view > .tb{height:600px !important;}} .mobile_editor_mode #fu399G > .view > .tb{height:600px !important;}</style></div><!-- container --><div class="frm spacer-frm" id="fDyzhA" style="display: block;" data-hei="auto"><div class="preview"></div>
551
552                
553                <div class="view ha-c">
554                    <div class="tb tbu">
555                        <div class="row clearfix tb-c va-m" style="transform: none;">
556                            <div class="spacer-label" style="display: none;"><span class="" style="display: none;"></span></div>
557                            <div class="spacer" style="height: 60px;"></div>
558                        </div>
559                    </div>
560                </div>
561            <style class="mobile-frm">@media (max-width: 767px) {#fDyzhA > .view .spacer {height:60px !important;}} .mobile_editor_mode #fDyzhA > .view .spacer {height:60px !important;}</style></div><div class="frm dp-none-important" style="text-align: center; margin: 12px 0px; display: block; padding: 0px; background: none transparent; border: none; border-radius: 0px;" data-m-hei="100px" data-hei="auto" id="fU2Bxr" data-cwid="" data-finder-folded="true"><div class="preview"></div>
562            
563            
564            <div class="view ha-c">
565                <div class="tb tbu" style="height: auto;">
566                    <div class="row clearfix tb-c va-m" style="transform: none; height: 976px; display: table-cell;">
567                        <div class="col-sm-12 column" style="height: auto;"><div class="box tbu iframeBox" style="text-align: center; height: 1000px; margin: 0px; padding: 0px; background: none transparent; border: none; border-radius: 0px;" id="byNqG5" data-hei="1000px"><div class="preview"></div> <div class="view tb-c va-m" style="display: table-cell;"> <a class="preview-layer" href="#" data-target="#iframeModal" data-toggle="modal" data-obj="iframe"></a> <div class="iframe-area added" data-iframe-html="%3Cdiv%20class%3D'player'%3E%0A%20%20%3Ciframe%20src%3D%22https%3A%2F%2Fwww.youtube.com%2Fembed%2F2u30RjdVZUY%3Fautoplay%3D1%26mute%3D1%26version%3D3%26loop%3D1%26playlist%3D2u30RjdVZUY%22%3E%0A%20%20%3C%2Fiframe%3E%0A%3C%2Fdiv%3E%0A"></div></div></div></div>
568                    </div>
569                </div>
570            </div>
571        <customcode><style>
572  #fU2Bxr {
573
574  }
575
576  /* 모바일 css */
577  @media (max-width: 767px) {
578      #fU2Bxr {
579
580      }
581  }
582</style></customcode></div><div class="frm m-pd-v-0 mobile-font-scale-3 m-pd-h-20 mobile-display-none" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: none; border-radius: 0px;
582" id="fZmkyX" data-hei="189px" data-cwid="" data-m-hei="10px" data-finder-folded="false" data-finder-name="날짜"><div class="preview"></div><div class="view ha-c"><div class="tb tbu" style="height: 189px;"><div class="row clearfix tb-c va-m" style="transform: none; display: table-cell; height: 150px;"><div class="col-sm-12 column" style="height: auto;"><div class="box tbu txtBox" id="bbwIYs" style="display: table;" data-hei="auto"><div class="preview"></div>
583                
584
585<div class="view tb-c va-m">
586<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>2025. 9. 17. - 9. 21.</strong></span></p>
587<p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>COEX MAGOK,&nbsp;</strong></span><span style="font-size:56px;"><strong>SEOUL</strong></span></p>
588</div>
589</div>
590</div><div class="frm spacer-frm empty-frm" id="fnOISk" style="display: block;" data-hei="auto"><div class="preview"></div>
591            
592            
593            <div class="view">
594                <div class="tb tbu">
595                    <div class="row clearfix tb-c va-m" style="transform: none;">
596                        <div class="spacer-label"><span class=""></span>
597                        </div>
598                        <div class="spacer" style="height: 60px;"></div>
599                    </div>
600                </div>
601            </div>
602        <style class="mobile-frm">@media (max-width: 767px) {#fnOISk > .view .spacer {height:60px !important;}} .mobile_editor_mode #fnOISk > .view .spacer {height:60px !important;}</style></div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fZmkyX > .view > .tb{height:10px !important;}} .mobile_editor_mode #fZmkyX > .view > .tb{height:10px !important;}</style></div><div class="frm m-pd-v-0 mobile-font-scale-3 m-pd-h-20 mobile_ele" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: none; border-radius: 0px;
602" id="fDq3h8" data-hei="189px" data-cwid="" data-m-hei="10px" data-finder-folded="false" data-finder-name="날짜"><div class="preview"></div><div class="view ha-c"><div class="tb tbu" style="height: 189px;"><div class="row clearfix tb-c va-m" style="transform: none; display: table-cell; height: 150px;"><div class="col-sm-12 column" style="height: auto;"><div class="box tbu txtBox mobile_ele" id="bUULMw" style="display: table;" data-hei="auto"><div class="preview"></div>
603                
604
605<div class="view tb-c va-m">
606<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>2025. 9. 17. - 9. 21.</strong></span></p><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>COEX MAGOK</strong></span></p><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>SEOUL</strong></span></p></div>
607</div>
608</div><div class="frm spacer-frm empty-frm mobile_ele" id="fZ7I7F" style="display: block;" data-hei="auto"><div class="preview"></div>
609            
610            
611            <div class="view">
612                <div class="tb tbu">
613                    <div class="row clearfix tb-c va-m" style="transform: none;">
614                        <div class="spacer-label"><span class=""></span>
615                        </div>
616                        <div class="spacer" style="height: 60px;"></div>
617                    </div>
618                </div>
619            </div>
620        <style class="mobile-frm">@media (max-width: 767px) {#fZ7I7F > .view .spacer {height:60px !important;}} .mobile_editor_mode #fZ7I7F > .view .spacer {height:60px !important;}</style></div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fDq3h8 > .view > .tb{height:10px !important;}} .mobile_editor_mode #fDq3h8 > .view > .tb{height:10px !important;}</style></div><div class="frm m-pd-v-0 m-pd-h-0 mobile-font-scale-3" style="text-align: center; margin: 0px; display: block; padding: 20px 0px; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/67bd2ebc54055_1920.png&quot;) 50% 50% / cover no-repeat fixed transparent; border: none; border-radius: 0px;" data-m-hei="250px" data-hei="auto" id="fIWWmM" data-cwid="b" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
621<div class="view boxing ha-c">
622<div class="tb tbu" style="height: auto;">
623<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell; height: 426px;">
624<div class="col-sm-12 column" style="height: auto;"><div class="frm spacer-frm empty-frm" id="fPgsv9" style="display: block;" data-hei="auto"><div class="preview"></div>
625            
626            
627            <div class="view">
628                <div class="tb tbu">
629                    <div class="row clearfix tb-c va-m" style="transform: none;">
630                        <div class="spacer-label"><span class=""></span>
631                        </div>
632                        <div class="spacer" style="height: 40px;"></div>
633                    </div>
634                </div>
635            </div>
636        <style class="mobile-frm">@media (max-width: 767px) {#fPgsv9 > .view .spacer {height:40px !important;}} .mobile_editor_mode #fPgsv9 > .view .spacer {height:40px !important;}</style></div><div class="box tbu txtBox" id="bSWa9Y" style="display: table;" data-hei="auto"><div class="preview"></div>
637                
638
639<div class="view tb-c va-m">
640<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:48px;"><strong><span style="color:#ffffff;">2025’s Keyword</span></strong></span></p>
641</div>
642</div>
643</div> <div class="frm" style="text-align: center; margin: 12px 0px; display: block;" data-m-hei="100px" data-hei="132px" id="fBHnfK" data-finder-folded="false"><div class="preview"></div>
644            
645            
646            <div class="view ha-c">
647                <div class="tb tbu" style="height: 132px;">
648                    <div class="row clearfix tb-c va-m" style="transform: none;">
649                        <div class="column col-sm-1" pp_grid="6" style="height: auto;"></div><div class="column col-sm-2" style="height: auto;"><div class="frm" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" data-m-hei="" data-hei="100px" id="fKfFfi" data-cwid="" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
650<div class="view ha-c">
651<div class="tb tbu" style="height:100px">
652<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell;">
653<div class="col-sm-12 column"><div class="box tbu iconBox" style="text-align: center; display: table; height: 100px;" id="brmPkp" data-hei="100px"><div class="preview"></div>
654                
655
656<div class="view tb-c va-m">
657<a class="preview-layer" href="#" data-target="#IconModal" data-toggle="modal" data-obj="icon"></a>
658                    <a class="icon-area" style="">
659                        <i class="ion-nuclear" style="color:white;font-size:45px;"></i>
660                    </a>
661</div>
662</div><div class="box tbu txtBox" id="bJJQsG" style="display: table;" data-hei="auto"><div class="preview"></div>
663                
664
665<div class="view tb-c va-m">
666<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:16px;"><strong><span style="color:#ffffff;">ART &amp; LIFE</span></strong></span></p>
667</div>
668</div>
669</div> </div>
670</div>
671</div>
672</div>
673<style class="mobile-frm">@media (max-width: 767px) {#fKfFfi > .view > .tb{height:auto !important;}} .mobile_editor_mode #fKfFfi > .view > .tb{height:auto !important;}</style></div></div><div class="column col-sm-2" style="height: auto;"><div class="frm" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" data-m-hei="" data-hei="100px" id="fv4OME" data-cwid="" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
674<div class="view ha-c">
675<div class="tb tbu" style="height:100px">
676<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell;">
677<div class="col-sm-12 column"><div class="box tbu iconBox" style="text-align: center; display: table; height: 100px;" id="bIrFul" data-hei="100px"><div class="preview"></div>
678                
679
680<div class="view tb-c va-m">
681<a class="preview-layer" href="#" data-target="#IconModal" data-toggle="modal" data-obj="icon"></a>
682                    <a class="icon-area" style="">
683                        <i class="ion-eye-disabled" style="color:white;font-size:45px;"></i>
684                    </a>
685</div>
686</div><div class="box tbu txtBox" id="bAgsti" style="display: table;" data-hei="auto"><div class="preview"></div>
687                
688
689<div class="view tb-c va-m">
690<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:16px;"><strong><span style="color:#ffffff;">CULTURE &amp; CULTURE</span></strong></span></p>
691</div>
692</div>
693</div> </div>
694</div>
695</div>
696</div>
697<style class="mobile-frm">@media (max-width: 767px) {#fv4OME > .view > .tb{height:auto !important;}} .mobile_editor_mode #fv4OME > .view > .tb{height:auto !important;}</style></div></div><div class="column col-sm-2" style="height: auto;"><div class="frm" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" data-m-hei="" data-hei="100px" id="fJzvo1" data-cwid="" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
698<div class="view ha-c">
699<div class="tb tbu" style="height:100px">
700<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell;">
701<div class="col-sm-12 column"><div class="box tbu iconBox" style="text-align: center; display: table; height: 100px;" id="bXQbVx" data-hei="100px"><div class="preview"></div>
702                
703
704<div class="view tb-c va-m">
705<a class="preview-layer" href="#" data-target="#IconModal" data-toggle="modal" data-obj="icon"></a>
706                    <a class="icon-area" style="">
707                        <i class="ion-ios-heart" style="color:white;font-size:45px;"></i>
708                    </a>
709</div>
710</div><div class="box tbu txtBox" id="bBbrOb" style="display: table;" data-hei="auto"><div class="preview"></div>
711                
712
713<div class="view tb-c va-m">
714<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:16px;"><font color="#ffffff"><b>ERA &amp; SPIRIT</b></font></span></p>
715</div>
716</div>
717</div> </div>
718</div>
719</div>
720</div>
721<style class="mobile-frm">@media (max-width: 767px) {#fJzvo1 > .view > .tb{height:auto !important;}} .mobile_editor_mode #fJzvo1 > .view > .tb{height:auto !important;}</style></div></div><div class="column col-sm-2" style="height: auto;"><div class="frm" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" data-m-hei="" data-hei="100px" id="fXh15O" data-cwid="" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
722<div class="view ha-c">
723<div class="tb tbu" style="height:100px">
724<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell;">
725<div class="col-sm-12 column"><div class="box tbu iconBox" style="text-align: center; display: table; height: 100px;" id="bIlDaO" data-hei="100px"><div class="preview"></div>
726                
727
728<div class="view tb-c va-m">
729<a class="preview-layer" href="#" data-target="#IconModal" data-toggle="modal" data-obj="icon"></a>
730                    <a class="icon-area" style="">
731                        <i class="ion-thermometer" style="color:white;font-size:45px;"></i>
732                    </a>
733</div>
734</div><div class="box tbu txtBox" id="bLPLHb" style="display: table;" data-hei="auto"><div class="preview"></div>
735                
736
737<div class="view tb-c va-m">
738<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:16px;"><strong><span style="color:#ffffff;">PROMISE &amp; PROGRESS</span></strong></span></p>
739</div>
740</div>
741</div> </div>
742</div>
743</div>
744</div>
745<style class="mobile-frm">@media (max-width: 767px) {#fXh15O > .view > .tb{height:auto !important;}} .mobile_editor_mode #fXh15O > .view > .tb{height:auto !important;}</style></div></div><div class="column col-sm-2" style="height: auto;"><div class="frm" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" data-m-hei="" data-hei="100px" id="fZUrOk" data-cwid="" data-finder-folded="false" data-finder-name="키워드"><div class="preview"></div>
746<div class="view ha-c">
747<div class="tb tbu" style="height:100px">
748<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell;">
749<div class="col-sm-12 column"><div class="box tbu iconBox" style="text-align: center; display: table; height: 100px;" id="bryblE" data-hei="100px"><div class="preview"></div>
750                
751
752<div class="view tb-c va-m">
753<a class="preview-layer" href="#" data-target="#IconModal" data-toggle="modal" data-obj="icon"></a>
754                    <a class="icon-area" style="">
755                        <i class="ion-ios-musical-notes" style="color:white;font-size:45px;"></i>
756                    </a>
757</div>
758</div><div class="box tbu txtBox" id="bhdMZG" style="display: table;" data-hei="auto"><div class="preview"></div>
759                
760
761<div class="view tb-c va-m">
762<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-size:16px;"><font color="#ffffff"><b>HEART &amp; HARMONY</b></font></span></p>
763</div>
764</div>
765</div> </div>
766</div>
767</div>
768</div>
769<style class="mobile-frm">@media (max-width: 767px) {#fZUrOk > .view > .tb{height:auto !important;}} .mobile_editor_mode #fZUrOk > .view > .tb{height:auto !important;}</style></div></div><div class="col-sm-1 column" style="height: auto;"></div>
770                    </div>
771                </div>
772            </div>
773        <style class="mobile-frm">@media (max-width: 767px) {#fBHnfK > .view > .tb{height:630px !important;}} .mobile_editor_mode #fBHnfK > .view > .tb{height:630px !important;}</style></div><div class="frm spacer-frm empty-frm" id="fbChiL" style="display: block;" data-hei="auto"><div class="preview"></div>
774            
775            
776            <div class="view">
777                <div class="tb tbu">
778                    <div class="row clearfix tb-c va-m" style="transform: none;">
779                        <div class="spacer-label"><span class=""></span>
780                        </div>
781                        <div class="spacer" style="height: 40px;"></div>
782                    </div>
783                </div>
784            </div>
785        <style class="mobile-frm">@media (max-width: 767px) {#fbChiL > .view .spacer {height:20px !important;}} .mobile_editor_mode #fbChiL > .view .spacer {height:20px !important;}</style></div><div class="box tbu btnBox" style="text-align: center; display: table; margin: 0px; padding: 0px; background: none transparent; border: none; border-radius: 0px; height: auto;" id="bb7GP1" data-hei="auto"><div class="preview"></div>
786            
787            
788            <div class="view tb-c va-m" style="display: table-cell;">
789                <a class="preview-layer" href="#" data-target="#ButtonModal" data-toggle="modal" data-obj="btn"></a>
790                <a id="btnwAUOk" class="button-area" style="background-color:rgba(255, 255, 255, 0.01);width:345px;padding:12px 0px;border:1.11111px solid ;border-color:white;border-radius:0px;text-align: center !important;" href="/66"><p><span style="color:#ffffff;">View Details</span></p><style>#btnwAUOk:hover {color:white !important;background-color:transparent !important;border-color:white !important;}#btnwAUOk:hover span,#btnwAUOk:hover p {color:white !important; }</style></a>
791            </div>
792        </div><div class="frm spacer-frm empty-frm" id="fXFiw8" style="display: block;" data-hei="auto"><div class="preview"></div>
793            
794            
795            <div class="view">
796                <div class="tb tbu">
797                    <div class="row clearfix tb-c va-m" style="transform: none;">
798                        <div class="spacer-label"><span class=""></span>
799                        </div>
800                        <div class="spacer" style="height: 40px;"></div>
801                    </div>
802                </div>
803            </div>
804        <style class="mobile-frm">@media (max-width: 767px) {#fXFiw8 > .view .spacer {height:40px !important;}} .mobile_editor_mode #fXFiw8 > .view .spacer {height:40px !important;}</style></div></div>
805</div>
806</div>
807</div>
808<style class="mobile-frm">@media (max-width: 767px) {#fIWWmM > .view > .tb{height:250px !important;}} .mobile_editor_mode #fIWWmM > .view > .tb{height:250px !important;}</style></div><div class="frm m-pd-v-0 mobile-font-scale-3 m-pd-h-10 mobile-display-none" style="text-align: center; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" id="fYYLVR" data-hei="auto" data-cwid="" data-m-hei="51px" data-finder-folded="false" data-finder-name="타이틀"><div class="preview"></div><div class="view ha-c"><div class="tb tbu" style="height: auto;"><div class="row clearfix tb-c va-m" style="transform: none; height: auto;"><div class="col-sm-12 column" style=""><div class="frm spacer-frm empty-frm" id="facLYN" style="display: block;" data-hei="auto"><div class="preview"></div>
809            
810            
811            <div class="view">
812                <div class="tb tbu">
813                    <div class="row clearfix tb-c va-m" style="transform: none;">
814                        <div class="spacer-label" style="display: none;"><span class=""></span>
815                        </div>
816                        <div class="spacer" style="height: 100px;"></div>
817                    </div>
818                </div>
819            </div>
820        <style class="mobile-frm">@media (max-width: 767px) {#facLYN > .view .spacer {height:60px !important;}} .mobile_editor_mode #facLYN > .view .spacer {height:60px !important;}</style></div><div class="box tbu txtBox" id="bln8dk" style="display: table; height: 90px; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: none; border-radius: 0px;" data-hei="90px" data-m-hei="130px" href="/66"><div class="preview"></div>
821                
822
823<div class="view tb-c va-m" style="display: table-cell;">
824<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>Stamps, Connecting the World</strong></span></p>
825</div>
826</div>
827<style class="mobile-box">@media (max-width: 767px) { #bln8dk {height:130px !important;} } .mobile_editor_mode #bln8dk {height:130px !important;} </style></div><div class="frm spacer-frm empty-frm" id="fZuEZi" data-hei="auto"><div class="preview"></div> <div class="view"> <div class="tb tbu"> <div class="row clearfix tb-c va-m" style="transform: none;"> <div class="spacer-label"><span class="" style="display: none;"></span></div><div class="spacer" style="height: 20px;"></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fZuEZi > .view .spacer {height:20px !important;}} .mobile_editor_mode #fZuEZi > .view .spacer {height:20px !important;}</style></div><div class="frm empty-frm" id="fWE9bs" style="display: block; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: none; border-radius: 0px;" data-hei="auto" data-cwid="" data-finder-folded="false"><div class="preview"></div>
828            
829            
830            <div class="view ha-c">
831                <div class="tb tbu" style="height: auto;">
832                    <div class="row clearfix tb-c va-m" style="transform: none; display: table-cell; height: auto;">
833                        <div class="col-sm-12 column" style="">
834                            
835                        <div class="box tbu imgBox mobile-display-none" data-hei="50px" style="display: table; height: 50px; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: none; border-radius: 0px;" id="bZpkCT"><div class="preview"></div>
836                                
837                                
838                                <div class="view img-view tb-c va-m" style="text-align: center; display: table-cell;">
839                                    <a class="preview-layer" href="#" data-target="#ImgModal" data-toggle="modal" data-obj="img"></a>
840                                    <a id="i1lT1Sb" class="image-area" style="width: auto;">
841                                        <div class="img-core" style="background: url(&quot;//cdn.quv.kr/hrlwhxut0%2Fup%2F67bd1f86536b6_1920.png&quot;) 50% 50% / cover no-repeat; width: 100%; height: 50px; border-radius: 0px;" data-ratio="0.022916666666666665"></div>
842                                        <div class="img-op" style="width: 100%; left: 0px; height: auto; top: 0px; background-color: transparent; border: 0px solid transparent; border-radius: 0px;">
843                                            <div class="caption-txt qv-font"><p><br></p></div>
844                                        </div>
845                                        
846                                    <style>#i1lT1Sb:hover .img-op{background-color:transparent !important;}</style></a>
847                                </div>
848                            </div></div>
849                    </div>
850                </div>
851            </div>
852        </div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fYYLVR > .view > .tb{height:51px !important;}} .mobile_editor_mode #fYYLVR > .view > .tb{height:51px !important;}</style></div><div class="frm m-pd-v-0 mobile_ele mobile-font-scale-3 m-pd-h-0" style="text-align: center; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;" id="fIsDSq" data-hei="auto" data-cwid="" data-m-hei="" data-finder-folded="fals
852e" data-finder-name="타이틀"><div class="preview"></div><div class="view ha-c"><div class="tb tbu" style="height: auto;"><div class="row clearfix tb-c va-m" style="transform: none; height: auto;"><div class="col-sm-12 column" style=""><div class="box tbu txtBox mobile_ele" id="bq6g1P" style="display: table; height: 90px; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: none; border-radius: 0px;" data-hei="90px" data-m-hei="235px" href="/66"><div class="preview"></div>
853                
854
855<div class="view tb-c va-m" style="display: table-cell;">
856<div class="drag_inner qv-text" contenteditable="false"><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>Stamps,</strong></span></p><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>Connecting </strong></span></p><p class="text-m" style="text-align: center; font-size: 1em;"><span style="font-size:56px;"><strong>the World</strong></span></p></div>
857</div>
858<style class="mobile-box">@media (max-width: 767px) { #bq6g1P {height:235px !important;} } .mobile_editor_mode #bq6g1P {height:235px !important;} </style></div><div class="box tbu imgBox" id="bhEaFD" data-m-hei="38px" style="height: 38px;" data-hei="38px"><div class="preview"></div><div class="view img-view tb-c va-m" style="text-align:center"><a class="preview-layer" href="#" data-target="#ImgModal" data-toggle="modal" data-obj="img"></a><a id="ihHt3b" class="image-area" style="width: auto;"><div class="img-core" style="background: url(&quot;//cdn.quv.kr/hrlwhxut0%2Fup%2F67da1c90cb1d5_800.png&quot;) 50% 50% / contain no-repeat; width: 100%; height: 38px; border-radius: 0px;" data-ratio="0.11153846153846154"></div><div class="img-op" style="width: 100%; left: 0px; height: auto; top: 0px; background-color: transparent; border: 0px solid transparent; border-radius: 0px;"><div class="caption-txt qv-font"><p><br></p></div></div><style>#ihHt3b:hover .img-op{background-color:transparent !important;}</style></a></div><style class="mobile-box">@media (max-width: 767px) { #bhEaFD {height:38px !important;} #bhEaFD .img-core {height:38px !important;} } .mobile_editor_mode #bhEaFD {height:38px !important;} .mobile_editor_mode #bhEaFD .img-core {height:38px !important;} </style></div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fIsDSq > .view > .tb{height:auto !important;}} .mobile_editor_mode #fIsDSq > .view > .tb{height:auto !important;}</style></div><div class="frm m-pd-v-0 m-pd-h-25 mobile-font-scale-4" style="text-align: center; margin: 0px; padding: 0px; background: none transparent; border: none; border-radius: 0px;" id="fpc6k7" data-hei="261px" data-m-hei="435px" data-finder-folded="true" data-cwid="b" data-finder-name="카피"><div class="preview"></div><div class="view ha-c boxing"><div class="tb tbu" style="height: 261px;"><div class="row clearfix tb-c va-m" style="transform: none; height: auto; display: table-cell;"><div class="col-sm-12 column" style="height: auto;"><div class="box tbu txtBox" id="bKBIez" style="display: table; height: 22px;" data-hei="22px"><div class="preview"></div>
859                
860
861<div class="view tb-c va-m">
862<div class="drag_inner qv-text" contenteditable="false"><p><span style="font-size:22px;">PHILAKOREA 2025, scheduled to be held in September 2025, is a global stamp exhibition </span></p>
863<p><span style="font-size:22px;">that offers a platform for exchange among stamp collectors and people worldwide </span></p>
864<p><span style="font-size:22px;">through stamps that capture the social aspects of history and eras.&nbsp;<br>
865It serves as a cultural exhibition space that connects the past, present, future, and the entire world.</span></p>
866</div>
867</div>
868</div><div class="frm spacer-frm empty-frm mobile-display-none" id="fbuHvD" style="display: block;" data-hei="auto"><div class="preview"></div>
869            
870            
871            <div class="view">
872                <div class="tb tbu">
873                    <div class="row clearfix tb-c va-m" style="transform: none;">
874                        <div class="spacer-label"><span class=""></span>
875                        </div>
876                        <div class="spacer" style="height: 100px;"></div>
877                    </div>
878                </div>
879            </div>
880        <style class="mobile-frm">@media (max-width: 767px) {#fbuHvD > .view .spacer {height:100px !important;}} .mobile_editor_mode #fbuHvD > .view .spacer {height:100px !important;}</style></div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fpc6k7 > .view > .tb{height:435px !important;}} .mobile_editor_mode #fpc6k7 > .view > .tb{height:435px !important;}</style></div><div class="frm m-pd-v-0 m-pd-h-0 mobile-font-scale-4" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: none; border-radius: 0px;" data-m-hei="31px" data-hei="auto" id="fN1zNw" data-cwid="" data-finder-folded="false" data-finder-name="앨범"><div class="preview"></div>
881<div class="view ha-c">
882<div class="tb tbu" style="height: auto;">
883<div class="row clearfix tb-c va-m" style="transform: none; display: table-cell; height: auto;">
884<div class="column col-sm-1" style="height: auto;"></div>
885<div class="column col-sm-10" style="height: auto;"><div class="frm slider-frm" id="fLwoHf" style="display: block;" data-hei="auto" data-m-hei="240px" data-finder-folded="false"><div class="preview"></div>
886<div class="view ha-c" role="listbox">
887<div id="sld-2tI5pN" class="carousel slide carousel-fade" data-ride="carousel" data-interval="false" data-sli
887der-interval="5000">
888<ol class="carousel-indicators slide02">
889<li data-target="#sld-2tI5pN" data-slide-to="0" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="1" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="2" class="active" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="3" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="4" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="5" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="6" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="7" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="8" class="" style="background-image: none;"></li><li data-target="#sld-2tI5pN" data-slide-to="9" class="" style="background-image: none;"></li><style>#sld-2tI5pN .carousel-indicators.slide02 li {border: 2px solid white !important;}#sld-2tI5pN .carousel-indicators.slide02 .active { background-color : white !important;}</style></ol><div class="carousel-inner" role="listbox" style="height: 700px;"><div class="item" data-hei="800px">
890<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c2438b2fbb_1920.jpg&quot;) center center / cover no-repeat scroll transparent;" id="fPiW7t" data-hei="700px" data-m-hei="700"><div class="preview"></div>
891<div class="view ha-c boxing">
892<div class="tb tbu" style="height: 700px;">
893<div class="row clearfix tb-c va-m" style="transform: none;">
894<div class="col-sm-12 column" style="height: auto;">
895</div>
896</div>
897</div>
898</div>
899<style class="mobile-frm">@media (max-width: 767px) {#fPiW7t > .view > .tb{height:700px !important;}} .mobile_editor_mode #fPiW7t > .view > .tb{height:700px !important;}</style></div>
900</div><div class="item">
901<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/6729c362a4206_1920.jpeg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fLkCHv" data-m-hei="700" data-cwid=""><div class="preview"></div>
902<div class="view ha-c">
903<div class="tb tbu" style="height: 700px;">
904<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
905<div class="col-sm-12 column" style="height: auto;">
906</div>
907</div>
908</div>
909</div>
910<style class="mobile-frm">@media (max-width: 767px) {#fLkCHv > .view > .tb{height:700px !important;}} .mobile_editor_mode #fLkCHv > .view > .tb{height:700px !important;}</style></div>
911</div><div class="item active">
912<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c243d73c9d_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fNEsoW" data-m-hei="700" data-cwid=""><div class="preview"></div>
913<div class="view ha-c">
914<div class="tb tbu" style="height: 700px;">
915<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
916<div class="col-sm-12 column" style="height: auto;">
917</div>
918</div>
919</div>
920</div>
921<style class="mobile-frm">@media (max-width: 767px) {#fNEsoW > .view > .tb{height:700px !important;}} .mobile_editor_mode #fNEsoW > .view > .tb{height:700px !important;}</style></div>
922</div><div class="item">
923<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c242dc78e2_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fI7Gy2" data-m-hei="700" data-cwid=""><div class="preview"></div>
924<div class="view ha-c">
925<div class="tb tbu" style="height: 700px;">
926<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
927<div class="col-sm-12 column" style="height: auto;">
928</div>
929</div>
930</div>
931</div>
932<style class="mobile-frm">@media (max-width: 767px) {#fI7Gy2 > .view > .tb{height:700px !important;}} .mobile_editor_mode #fI7Gy2 > .view > .tb{height:700px !important;}</style></div>
933</div><div class="item">
934<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c242dcc6ff_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fxq5Lg" data-m-hei="700" data-cwid=""><div class="preview"></div>
935<div class="view ha-c">
936<div class="tb tbu" style="height: 700px;">
937<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
938<div class="col-sm-12 column" style="height: auto;">
939</div>
940</div>
941</div>
942</div>
943<style class="mobile-frm">@media (max-width: 767px) {#fxq5Lg > .view > .tb{height:700px !important;}} .mobile_editor_mode #fxq5Lg > .view > .tb{height:700px !important;}</style></div>
944</div><div class="item">
945<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c243a249c5_1920.jpeg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fDTCMe" data-m-hei="700" data-cwid=""><div class="preview"></div>
946<div class="view ha-c">
947<div class="tb tbu" style="height: 700px;">
948<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
949<div class="col-sm-12 column" style="height: auto;">
950</div>
951</div>
952</div>
953</div>
954<style class="mobile-frm">@media (max-width: 767px) {#fDTCMe > .view > .tb{height:700px !important;}} .mobile_editor_mode #fDTCMe > .view > .tb{height:700px !important;}</style></div>
955</div><div class="item">
956<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c242e0aa45_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fXPMTq" data-m-hei="700" data-cwid=""><div class="preview"></div>
957<div class="view ha-c">
958<div class="tb tbu" style="height: 700px;">
959<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
960<div class="col-sm-12 column" style="height: auto;">
961</div>
962</div>
963</div>
964</div>
965<style class="mobile-frm">@media (max-width: 767px) {#fXPMTq > .view > .tb{height:700px !important;}} .mobile_editor_mode #fXPMTq > .view > .tb{height:700px !important;}</style></div>
966</div><div class="item">
967<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c3f2134f83_1920.jpg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fDZfF4" data-m-hei="700" data-cwid=""><div class="preview"></div>
968<div class="view ha-c">
969<div class="tb tbu" style="height: 700px;">
970<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
971<div class="col-sm-12 column" style="height: auto;">
972</div>
973</div>
974</div>
975</div>
976<style class="mobile-frm">@media (max-width: 767px) {#fDZfF4 > .view > .tb{height:700px !important;}} .mobile_editor_mode #fDZfF4 > .view > .tb{height:700px !important;}</style></div>
977</div><div class="item">
978<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/672c3f3be5cad_1920.jpeg&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fofyU0" data-m-hei="700" data-cwid=""><div class="preview"></div>
979<div class="view ha-c">
980<div class="tb tbu" style="height: 700px;">
981<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
982<div class="col-sm-12 column" style="height: auto;">
983</div>
984</div>
985</div>
986</div>
987<style class="mobile-frm">@media (max-width: 767px) {#fofyU0 > .view > .tb{height:700px !important;}} .mobile_editor_mode #fofyU0 > .view > .tb{height:700px !important;}</style></div>
988</div><div class="item">
989<div class="frm empty-frm" style="display: block; border: none; background: url(&quot;//cdn.quv.kr/hrlwhxut0/up/6729d7fd7f1af_1920.JPG&quot;) 50% 50% / cover no-repeat scroll transparent; margin: 0px; padding: 0px; text-align: center; border-radius: 0px;" data-hei="700px" id="fnXvNq" data-m-hei="700" data-cwid=""><div class="preview"></div>
990<div class="view ha-c">
991<div class="tb tbu" style="height: 700px;">
992<div class="row clearfix tb-c va-m" style="transform: none; height: 700px; display: table-cell;">
993<div class="col-sm-12 column" style="height: auto;">
994</div>
995</div>
996</div>
997</div>
998<style class="mobile-frm">@media (max-width: 767px) {#fnXvNq > .view > .tb{height:700px !important;}} .mobile_editor_mode #fnXvNq > .view > .tb{height:700px !important;}</style></div>
999</div></div>
1000<div class="carousel-control-arrow">
1001<a class="left carousel-control square-arrow" href="#sld-2tI5pN" role="button" data-sli
1001de="prev">
1002<i class="fa fa-chevron-left" aria-hidden="true" style="vertical-align: middle;"></i>
1003<span class="sr-only">Previous</span>
1004</a>
1005<a class="right carousel-control square-arrow" href="#sld-2tI5pN" role="button" data-slide="next">
1006<i class="fa fa-chevron-right" aria-hidden="true" style="vertical-align: middle;"></i>
1007<span class="sr-only">Next</span>
1008</a>
1009</div>
1010<div class="carousel-control-area" style="display:none;">
1011<a class="left carousel-control slide-area" href="#sld-2tI5pN" role="button" data-slide="prev">
1012<span class="sr-only">Previous</span>
1013</a>
1014<a class="right carousel-control slide-area" href="#sld-2tI5pN" role="button" data-slide="next">
1015<span class="sr-only">Next</span>
1016</a>
1017</div>
1018</div>
1019</div>
1020<style class="mobile-frm">@media (max-width: 767px) {#fLwoHf > .view .carousel-inner {height:240px !important;}#fLwoHf > .view .carousel-inner > .item > .frm > .view > .tb {height:240px !important;}} .mobile_editor_mode #fLwoHf > .view .carousel-inner {height:240px !important;}.mobile_editor_mode #fLwoHf > .view .carousel-inner > .item > .frm > .view > .tb {height:240px !important;}</style></div></div>
1021<div class="column col-sm-1" style="height: auto;"></div>
1022</div>
1023</div>
1024</div>
1025<style class="mobile-frm">@media (max-width: 767px) {#fN1zNw > .view > .tb{height:31px !important;}} .mobile_editor_mode #fN1zNw > .view > .tb{height:31px !important;}</style></div><div class="frm m-pd-v-0 mobile-font-scale-3 m-pd-h-10" style="text-align: center; margin: 0px; padding: 0px; background: none transparent; border: none; border-radius: 0px;
1025" id="fsMFCd" data-hei="885px" data-m-hei="10px" data-finder-folded="false" data-cwid="" data-finder-name="지도"><div class="preview"></div><div class="view ha-c" style=""><div class="tb tbu" style="height: 885px;"><div class="row clearfix tb-c va-m" style="transform: none; height: auto; display: table-cell;"><div class="col-sm-12 column" style="height: auto;"><div class="frm spacer-frm empty-frm" id="fkITPk" style="display: block;" data-hei="auto"><div class="preview"></div>
1026            
1027            
1028            <div class="view">
1029                <div class="tb tbu">
1030                    <div class="row clearfix tb-c va-m" style="transform: none;">
1031                        <div class="spacer-label"><span class=""></span>
1032                        </div>
1033                        <div class="spacer" style="height: 120px;"></div>
1034                    </div>
1035                </div>
1036            </div>
1037        <style class="mobile-frm">@media (max-width: 767px) {#fkITPk > .view .spacer {height:60px !important;}} .mobile_editor_mode #fkITPk > .view .spacer {height:60px !important;}</style></div><div class="box tbu mapBox" style="height: 500px; display: table;" id="bqNLbr" data-hei="500px" data-m-hei="264px"><div class="preview"></div>
1038            
1039            
1040            <div class="view googlemap" style="text-align:center;">
1041                <a href="#" class="preview-layer" data-target="#MapModal" data-toggle="modal" data-obj="box"></a>
1042                <iframe src="https://www.google.com/maps/embed/v1/place?key=AIzaSyDtF9VaRJqJrq3sX_HB7HL6rjvoRey3g5g&amp;q=place_id:ChIJ9wvXTgCdfDURkp_B6uFb9R4&amp;zoom=18&amp;region=kr&amp;language=en" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%" data-zoom="18" data-language="en"></iframe>
1043            </div>
1044        <style class="mobile-box">@media (max-width: 767px) { #bqNLbr {height:264px !important;} } .mobile_editor_mode #bqNLbr {height:264px !important;} </style></div><div class="frm spacer-frm empty-frm" id="fKQ2jV" style="display: block;" data-hei="auto"><div class="preview"></div>
1045            
1046            
1047            <div class="view">
1048                <div class="tb tbu">
1049                    <div class="row clearfix tb-c va-m" style="transform: none;">
1050                        <div class="spacer-label" style="display: none;"><span class=""></span>
1051                        </div>
1052                        <div class="spacer" style="height: 61px;"></div>
1053                    </div>
1054                </div>
1055            </div>
1056        <style class="mobile-frm">@media (max-width: 767px) {#fKQ2jV > .view .spacer {height:50px !important;}} .mobile_editor_mode #fKQ2jV > .view .spacer {height:50px !important;}</style></div><div class="box tbu btnBox" style="text-align: center; display: table; height: auto; margin: 0px; padding: 0px; background: none transparent; border: none; border-radius: 0px;" id="bo193z" data-hei="auto" href="/64"><div class="preview"></div>
1057                
1058
1059<div class="view tb-c va-m" style="display: table-cell;">
1060<a class="preview-layer" href="#" data-target="#ButtonModal" data-toggle="modal" data-obj="btn"></a>
1061<a id="btnPYdxE" class="button-area" style="background-color:black;width:345px;padding:12px 0px;border:0.909091px solid ;border-color:black;border-radius:0px;text-align: center !important;" href="/67"><p><span style="letter-spacing:0px;margin-right:-0px;"><span style="font-size:18px;"></span></span><span style="font-size:18px;"></span><span style="color:#ffffff;"><span style="font-size:18px;">More Transit Details</span></span><span style="font-size:18px;"></span><span style="font-size:18px;"></span><span style="letter-spacing:0px;margin-right:-0px;"><span style="font-size:18px;"></span></span></p><style>#btnPYdxE:hover {color:white !important;background-color:black !important;border-color:black !important;}#btnPYdxE:hover span,#btnPYdxE:hover p {color:white !important; }</style></a>
1062</div>
1063</div></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fsMFCd > .view > .tb{height:10px !important;}} .mobile_editor_mode #fsMFCd > .view > .tb{height:10px !important;}</style></div>
1064<div class="frm spacer-frm" id="fzgKt1" data-hei="auto"><div class="preview"></div> <div class="view"> <div class="tb tbu"> <div class="row clearfix tb-c va-m" style="transform: none;"> <div class="spacer-label" style="display: none;"><span class="" style="display: none;"></span></div><div class="spacer" style="height: 100px;"></div></div></div></div><style class="mobile-frm">@media (max-width: 767px) {#fzgKt1 > .view .spacer {height:30px !important;}} .mobile_editor_mode #fzgKt1 > .view .spacer {height:30px !important;}</style></div>
1065<webfont>
1065{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}</webfont><webfont>{"google":["Montserrat","Barlow"],"custom":["Noto Sans KR"]}</webfont><!-- naver, google, kakao login script -> header.inc.html 에서 호출 함 -->
1066
1067<!--GOOGLE-->
1068<!-- 커스텀 버튼 : https://developers.google.com/identity/sign-in/web/build-button -->
1069<!--
1069<script src="https://apis.google.com/js/platform.js" async defer></script>
1069-->
1070
1071<!--KAKAO-->
1072<!--
1072<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
1072-->
1073
1074<!--NAVER-->
1075<!--
1075<script type="text/javascript" src="https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js" charset="utf-8"></script>
1075-->
1076
1077<!--2019.03.11 재헌 - 리캡챠 미사용으로 주석처리 -->
1078<!--RECAPTCHA-->
1079<!--
vendor: 75 bytes, line 1079
1079<script src="https://www.google.com/recaptcha/api.js" async defer></script>
1079-->
1080
1081<link rel="stylesheet" href="/css/member.css?v=260904">
1082
1083<div class="modal fade login-modal" id="LoginModal" tabindex="-1" role="dialog" style="top: 0px !important;">
1084    <div class="modal-dialog">
1085        <div class="modal-content">
1086            <div class="modal-header">
1087                <div class="modal-header-title">Login</div>
1088            </div>
1089
1090            <div class="modal-body" style="display:grid; max-height: 700px;">
1091                <div class="login-form">
1092                    <input type="text" class="login-form-id" placeholder="ID" autocomplete="off">
1093                    <input type="password" class="login-form-pw" placeholder="Password" autocomplete="off">
1094                </div>
1095                <div class="login-confirm">
1096                    Login                </div>
1097                <input type="submit" style="display:none"/>
1098                <div class="login-options">
1099                    <div id="login-options-join" class="login-options-join">
1100                        Join                    </div>
1101                    <div id="login-options-find" class="login-options-find">
1102                        Find Password                    </div>
1103                </div>
1104
1105                <div class="login-divider"></div>
1106
1107                <div class="sns-login-form">
1108                    <div class="sns-login-form-naver">
1109                        <!--<div id="naverIdLogin" style="display: none;"></div>-->
1110                        <div id="naver-login-button">
1111                            <img src="/img/ico/login/naver_logo.png">
1112                            Login with Naver ID                        </div>
1113                        <!--<div class="g-signin2" data-onsuccess="onSuccess_google" data-theme="dark"></div>-->
1114                    </div>
1115                    <div class="sns-login-form-kakao">
1116                        <div id="kakao-login-button">
1117                            <img src="/img/ico/login/kakao_logo.png">
1118                            Login with Kakao ID                        </div>
1119                        <!--                        <a id="kakao-login-button"></a>-->
1120                        <!--                        <a href="http://developers.kakao.com/logout"></a>-->
1121                    </div>
1122                    <div class="sns-login-form-google">
1123                        <div id="google-login-button">
1124                            <img src="/img/ico/login/google_new_icon.svg">
1125                            Login with Google ID                        </div>
1126                        <!--<div class="g-signin2" data-onsuccess="onSuccess_google" data-theme="dark"></div>-->
1127                    </div>
1128                </div>
1129            </div>
1130            <!--<div class="modal-footer">-->
1131            <!--</div>-->
1132        </div>
1133    </div>
1134</div>
1135
1136<div class="modal fade find-password-modal z-index-1060" id="FindPasswordModal" tabindex="-1" role="dialog" style="top: 0px !important;">
1137    <div class="modal-dialog">
1138        <div class="modal-content">
1139            <div class="modal-header">
1140                <div class="modal-header-title">Reset Password</div>
1141            </div>
1142
1143            <div class="modal-body" style="display:grid; max-height: 700px;">
1144                <div class="find-password-description">
1145                    Please enter the ID or email you want to find your password                    <br>
1146                    You will receive a password change notification email at the email address for your account.                </div>
1147
1148                <div class="find-password-form">
1149                    <input type="text" id="find-password-form-account" class="find-password-form-account" placeholder="Account or Email">
1150                </div>
1151                <div class="find-password-confirm" onclick="find_password_confirm();">
1152                    <div>Reset Password</div>
1153                </div>
1154
1155                <!--2018.10.16 재헌-->
1156                <!--recapcha 걷어냄-->
1157                <!--<div class="find-password-captcha">-->
1158                    <!--<form id="find-password-recaptcha-form" method="POST">-->
1159                        <!--<div id="find-password-recaptcha"></div>-->
1160                        <!--<input id="hidden-grecaptcha" name="hidden-grecaptcha" type="hidden"/>-->
1161                    <!--</form>-->
1162                <!--</div>-->
1163            </div>
1164            <!--<div class="modal-footer">-->
1165            <!--</div>-->
1166        </div>
1167        <div class="qv-loader qv-loader-black"></div>
1168    </div>
1169</div>
1170
1171<div class="modal fade change-password-modal" id="ChangePasswordModal" tabindex="-1" role="dialog" style="top: 0px !important;">
1172    <div class="modal-dialog">
1173        <div class="modal-content">
1174            <div class="modal-header">
1175                <div class="modal-header-title">Change Password</div>
1176            </div>
1177
1178            <div class="modal-body">
1179                <div class="change-password-description">
1180                    Please enter a new password                </div>
1181
1182                <div class="change-password-form">
1183                    <input type="password" id="change-pw1" class="change-pw1" placeholder="변경할 비밀번호" autocomplete="off">
1184                    <input type="password" id="change-pw2" class="change-pw2" placeholder="변경할 비밀번호 확인" autocomplete="off">
1185                </div>
1186                <div class="change-password-notice">
1187                    <div class="change-password-advisor">
1188                        <i class="fa fa-lock" style="font-size: 20px;" aria-hidden="true"></i>
1189                    </div>
1190                    <p>Please enter 8 to 20 characters including English, numbers, and special characters.</p>
1191                </div>
1192                <div class="change-password-confirm">
1193                    <div onclick="change_password_confirm();">Change Password</div>
1194                </div>
1195            </div>
1196            <!--<div class="modal-footer">-->
1197            <!--</div>-->
1198        </div>
1199        <div class="qv-loader qv-loader-black"></div>
1200    </div>
1201</div>
1202
1203
1204<!--member.js inc/script.inc.html 에 위치 -->
1205<script type='text/javascript'>
1206    var NAVER_CLIENT_ID = '';
1207    var NAVER_CLIENT_SECRET = '';
1208    var NAVER_AUTH_URL = '';
1209    var KAKAO_CLIENT_ID = '';
1210    var KAKAO_PLUS_FRIEND_ID = '';
1211    var GOOGLE_CLIENT_ID = '';
1212    var GOOGLE_CAPTCHA_KEY = '6Lf62UcUAAAAAEEWIFWPJc_oE-PlkmlZ2h665q9K';
1213
1214    $('#LoginModal').on('show.bs.modal', function () {
1215        $(this).find('.modal-header-title-sub').remove();
1216    });
1217    $('#LoginModal').on('hidden.bs.modal', function () {
1218        if ($('.modal.fade.in').length > 0) {
1219            $('body').addClass('modal-open');
1220        }
1221    });
1222    
1223    $(function() {
1224        var query = qv_func.getUrlParams();
1225        if (query.m == 'change_password') {
1226            $('#ChangePasswordModal').modal('show');
1227        }
1228        else {
1229            initSocialLoginClientId();
1230        }
1231
1232
1233//        // KAKAO
1234//        // https://developers.kakao.com/docs/restapi/tool#user-api
1235//        //<![CDATA[
1236//        // 사용할 앱의 JavaScript 키를 설정해 주세요.
1237//        Kakao.init('eeebfc46f7f77f5855c5be2ca40594e3');
1238//        // 카카오 로그인 버튼을 생성합니다.
1239//        Kakao.Auth.createLoginButton({
1240//            container: '#kakao-login-button',
1241//            success: function(authObj) {
1242//                Kakao.API.request({
1243//                    url: '/v1/user/me',
1244//                    success: function(res) { onSuccess_kakao(authObj, res); }
1245//                });
1246//            },
1247//            fail: function(err) {
1248//                alert(JSON.stringify(err));
1249//            }
1250//        });
1251//        //]]>
1252//
1253//        // GOOGLE
1254//        // https://developers.google.com/+/web/signin/
1255//        // 새로고침 시 onsuccess가 발동하는 문제가있음 --> 해결 http://usefulangle.com/post/55/google-login-javascript-api
1256//        gapi.signin2.render('google-login-button', {
1257//            'scope': 'profile email',
1258//            'width': 240,
1259//            'height': 50,
1260//            'longtitle': false,
1261//            'theme': 'dark',
1262//            'onsuccess': function () {},
1263//            'onfailure': function () {}
1264//        });
1265    });
1266
1267    function initSocialLoginClientId() {
1268        var data = [];
1269        if (data == null || data.length == 0) {
1270            $('.sns-login-form-naver').remove();
1271            $('.sns-login-form-kakao').remove();
1272            $('.sns-login-form-google').remove();
1273            $('.login-divider').remove();
1274        }
1275        else {
1276            $.each(data, function () {
1277                switch (this.ssi_type) {
1278                    case "1": // NAVER LOGINcol-sm-2
1279                        if (this.ssi_state == "0" || this.ssi_key1 == '') {
1280                            $('.sns-login-form-naver').remove();
1281                        }
1282                        else {
1283                            $('.sns-login-form-naver > div').show();
1284                            NAVER_CLIENT_ID = this.ssi_key1;
1285                            NAVER_CLIENT_SECRET = this.ssi_key2;
1286                            // 네이버 버튼 규정, 재 디자인 필요
1287                            // https://developers.naver.com/docs/login/bi/
1288
1289                            if (typeof naver === 'object') {
1290                                naverLogin = new naver.LoginWithNaverId(
1291                                    {
1292                                        clientId: NAVER_CLIENT_ID,
1293                                        callbackUrl: location.protocol + '//' + QV_BASE_OBJ.eng_domain + "/oauth/callback.php?cliendId=" + NAVER_CLIENT_ID,
1294                                        isPopup: true
1295                                        //callbackHandle: true,
1296                                        //loginButton: {color: "green", type: 3, height: 43, width: 370} /* 로그인 버튼의 타입을 지정 */
1297                                    }
1298                                );
1299                                naverLogin.init();
1300                                NAVER_AUTH_URL = naverLogin.generateAuthorizeUrl();
1301                                $('#naver-login-button').data('authUrl', NAVER_AUTH_URL);
1302                            }
1303                        }
1304                        break;
1305                    case "2": // KAKAO LOGIN
1306                        if (this.ssi_state == "0" || this.ssi_key1 
1306== '') {
1307                            $('.sns-login-form-kakao').remove();
1308                        }
1309                        else {
1310                            $('.sns-login-form-kakao > div').show();
1311                            KAKAO_CLIENT_ID = this.ssi_key1;
1312                            KAKAO_PLUS_FRIEND_ID = this.ssi_key2;
1313
1314                            if (typeof Kakao === 'object') {
1315                                Kakao.init(KAKAO_CLIENT_ID);
1316                            }
1317                        }
1318                        break;
1319                    case "3": // GOOGLE LOGIN
1320                        if (this.ssi_state == "0" || this.ssi_key1 == '') {
1321                            $('.sns-login-form-google').remove();
1322                        }
1323                        else {
1324                            $('.sns-login-form-google > div').show();
1325                            GOOGLE_CLIENT_ID = this.ssi_key1;
1326                        }
1327                        break;
1328                }
1329            });
1330
1331            if ($('.sns-login-form').children().length == 0) {
1332                $('.login-divider').remove();
1333            }
1334        }
1335    }
1336
1337    function initSocialLoginClientId_dummy() {
1338        qvjax_direct(
1339            "select_sns_info",
1340            "/module/member/member.php",
1341            '',
1342            function (data) {
1343                if (data.length == 0) {
1344                    $('.sns-login-form-naver').remove();
1345                    $('.sns-login-form-kakao').remove();
1346                    $('.sns-login-form-google').remove();
1347                    $('.login-divider').remove();
1348                }
1349                else {
1350                    $.each(data, function () {
1351                        switch (this.ssi_type) {
1352                            case "1": // NAVER LOGINcol-sm-2
1353//                                $.getScript( "https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js", function( data, textStatus, jqxhr ) {
1354//
1355//                                });
1356                                if (this.ssi_state == "0" || this.ssi_key1 == '') {
1357                                    $('.sns-login-form-naver').remove();
1358                                }
1359                                else {
1360                                    NAVER_CLIENT_ID = this.ssi_key1;
1361                                    NAVER_CLIENT_SECRET = this.ssi_key2;
1362                                    // 네이버 버튼 규정, 재 디자인 필요
1363                                    // https://developers.naver.com/docs/login/bi/
1364
1365                                    naverLogin = new naver.LoginWithNaverId(
1366                                        {
1367                                            clientId: NAVER_CLIENT_ID,
1368                                            //callbackUrl: document.location.origin + "/oauth/callback.php?cliendId=" + NAVER_CLIENT_ID,
1369                                            callbackUrl: location.protocol + '//' + QV_BASE_OBJ.eng_domain + "/oauth/callback.php?cliendId=" + NAVER_CLIENT_ID,
1370                                            isPopup: true
1371                                            //callbackHandle: true,
1372                                            //loginButton: {color: "green", type: 3, height: 43, width: 370} /* 로그인 버튼의 타입을 지정 */
1373                                        }
1374                                    );
1375                                    naverLogin.init();
1376                                    NAVER_AUTH_URL = naverLogin.generateAuthorizeUrl();
1377                                    $('#naver-login-button').data('authUrl', NAVER_AUTH_URL);
1378                                }
1379                                break;
1380                            case "2": // KAKAO LOGIN
1381                                if (this.ssi_state == "0" || this.ssi_key1 == '') {
1382                                    $('.sns-login-form-kakao').remove();
1383                                }
1384                                else {
1385                                    KAKAO_CLIENT_ID = this.ssi_key1;
1386                                    KAKAO_PLUS_FRIEND_ID = this.ssi_key2;
1387
1388                                    if (typeof Kakao === 'object') {
1389                                        Kakao.init(KAKAO_CLIENT_ID);
1390                                    }
1391                                }
1392                                break;
1393                            case "3": // GOOGLE LOGIN
1394                                if (this.ssi_state == "0" || this.ssi_key1 
1394== '') {
1395                                    $('.sns-login-form-google').remove();
1396                                }
1397                                else {
1398                                    GOOGLE_CLIENT_ID = this.ssi_key1;
1399                                }
1400                                break;
1401                        }
1402                    });
1403
1404                    if ($('.sns-login-form').children().length == 0) {
1405                        $('.login-divider').remove();
1406                    }
1407                }
1408            },
1409            function (xhr) {}
1410        );
1411    }
1412
1413</script>
1413
1414<div class="modal fade join-modal" id="JoinModal" tabindex="-1" role="dialog" style="top: 0px !important;">
1415    <div class="modal-dialog">
1416        <div class="modal-content">
1417<!--            <div class="modal-header" style="padding-bottom: 20px;">-->
1418<!--                <div class="modal-header-title">회원가입</div>-->
1419<!--            </div>-->
1420
1421            <div class="modal-body" style="display:grid; max-height: 700px; padding: 2px 15px;">
1422                <div class="join-type">
1423                    <!-- 회원가입 유형 선택 -->
1424                    <div class="join-type-group2">
1425<!--                        <span class="join-type-description"></span>-->
1426                        <div class="join-type-normal"><div>Join with ID/PW</div></div>
1427                    </div>
1428                    <div class="join-type-group1">
1429<!--                        <span class="join-type-description"></span>-->
1430                        <div class="join-type-naver"><img src="/img/ico/login/naver_logo.png"><div>Join with Naver ID</div></div>
1431                        <div class="join-type-kakao"><img src="/img/ico/login/kakao_logo.png"><div>Join with Kakao ID</div></div>
1432                        <div class="join-type-google"><img src="/img/ico/login/google_new_icon.svg"><div>Join with Google ID</div></div>
1433                    </div>
1434                </div>
1435            </div>
1436        </div>
1437    </div>
1438</div>
1439<script>
1440    $(function() {
1441        $('.join-type-normal').on('click', function() {
1442            location.href = '/join';
1443        });
1444
1445        $('.modal').on('hidden.bs.modal', function () {
1446            $('body').css('padding-right', 0); // 모달 부분에서 버그. padding-right +17px 계속 적용시킴
1447        });
1448
1449        $('#JoinModal').on('show.bs.modal', function () {
1450            if (NAVER_CLIENT_ID == '' && KAKAO_CLIENT_ID == '' && GOOGLE_CLIENT_ID == '') {
1451                location.href = "/join";
1452                return;
1453            }
1454
1455            // NAVER
1456            if (NAVER_CLIENT_ID == '') {
1457                $('.join-type-naver').remove();
1458            }
1459            else {
1460                $('.join-type-naver').off('click.join');
1461                $('.join-type-naver').on('click.join', function() {
1462                    location.href = NAVER_AUTH_URL;
1463                });
1464            }
1465
1466            // KAKAO
1467            if (KAKAO_CLIENT_ID == '') {
1468                $('.join-type-kakao').remove();
1469            }
1470            else {
1471                $('.join-type-kakao').off('click.join');
1472                $('.join-type-kakao').on('click.join', function() {
1473                    Kakao.Auth.login({
1474                        success: function(authObj) {
1475                            Kakao.API.request({
1476                                url: '/v2/user/me',
1477                                success: function(res) { onSuccess_kakao(authObj, res); }
1478                            });
1479                        },
1480                        fail: function(err) {
1481                            alert(JSON.stringify(err));
1482                        }
1483                    });
1484                });
1485            }
1486
1487            // GOOGLE
1488            if (GOOGLE_CLIENT_ID == '') {
1489                $('.join-type-google').remove();
1490            }
1491            else {
1492                $('.join-type-google').off('click.join');
1493                $('.join-type-google').on('click.join', function() {
1494                    gapi.load('auth2', function(){
1495                        // Retrieve the singleton for the GoogleAuth library and set up the client.
1496                        auth2 = gapi.auth2.init({
1497                            client_id: GOOGLE_CLIENT_ID,
1498                            cookiepolicy: 'single_host_origin',
1499                            plugin_name: 'chat'
1500                        });
1501
1502                        grantPermissions();
1503
1504                        // API call for Google login
1505                        gapi.auth2.getAuthInstance().signIn().then(
1506                            function(success) {
1507                                // Login API call is successful
1508                                onSuccess_google(success);
1509                            },
1510                            function(error) {
1511                                // Error occurred
1512                                onFailure_google(error);
1513                            }
1514                        );
1515                    });
1516                });
1517            }
1518        });
1519    });
1520</script>
1520</div><div class="footer-theme-1 footer-frame-mobile" style="">
1521                                    <div class="frm dp-none-important" style="text-align: center; margin: 0px; display: block; padding: 0px; background: none rgb(71, 35, 189); border: 0px solid transparent; border-radius: 0px;" id="bgRzke" data-hei="380" data-cwid="b">
1522
1523                                        <div class="preview"></div>
1524                                        <div class="view ha-c boxing">
1525                                            <div class="tb tbu" style="height: auto;">
1526                                                <div class="row clearfix tb-c va-m" style="display: table-cell; transform: none; height: 380px;">
1527                                                    <div class="column col-sm-12" style="height: auto;"> <div class="frm spacer-frm" id="bodXUS" style="display: block;">
1528
1529                <div class="preview"></div>
1530                <div class="view">
1531                    <div class="tb tbu">
1532                        <div class="row clearfix tb-c va-m" style="transform: none;">
1533                            <div class="spacer-label" style="display: block;"><span class="" style="display: none;"></span></div>
1534                            <div class="spacer" style="height: 50px;"></div>
1535                        </div>
1536                    </div>
1537                </div>
1538            </div></div>
1539                                                </div>
1540                                            </div>
1541                                        </div>
1542                                    </div>
1543
1544                                </div><div class="footer-frame footer-theme-1 footer-frame-pc" style="display: block;">
1545                                    <div class="frm" style="text-align: center; margin: 12px 0px; display: block; padding: 0px; background: none rgb(255, 255, 255); border: none; border-radius: 0px;" id="fQLZgn" data-hei="206px" data-cwid="">
1546                                        
1547                                        <div class="preview"></div>
1548                                        <div class="view ha-c" style="">
1549                                            <div class="tb tbu" style="height: auto;">
1550                                                <div class="row clearfix tb-c va-m" style="display: table-cell; transform: none; height: 182px;">
1551                                                    <div class="column col-sm-12" style="height: auto;" pp_grid="12"><div class="box tbu lineBox" style="height: 50px; display: table;" data-m-hei="50px" data-hei="50px" id="brU62o">
1552            
1553            <div class="preview"></div>
1554            <div class="view tb-c va-m">
1555                <a href="#" data-target="#LineModal" data-toggle="modal" data-obj="box" class="preview-layer"></a>
1556                <div class="drag_inner" contenteditable="false">
1557                    <p class="line" style="background: url(/img/d/lin/line_x_gray.png) center center repeat-x; height:15px; width:100%; margin:0 auto;"></p>
1558                </div>
1559            </div>
1560        </div>
1561                                                        
1562                                                        
1563                                                        
1564                                                        
1565                                                        
1566                                                        
1567                                                    <div class="box tbu txtBox" id="bYG1xq" style="height: 97px; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: none; border-radius: 0px;" data-hei="97px"><div class="preview"></div><div class="view tb-c va-m" style="display: table-cell;"><div class="qv-text drag_inner" contenteditable="false"><p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';">Hosted by<span style="letter-spacing:0px;margin-right:-0px;"><span style="line-height:5px;">&nbsp;: </span></span>Korea Post</span></p>
1568<p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';">Organized by<span style="letter-spacing:0px;margin-right:-0px;"><span style="line-height:5px;">&nbsp;:&nbsp;</span></span>The Philatelic Federation of Korea, Korea Postal Service Agency</span></p>
1569<p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';">Supported by<span style="letter-spacing:0px;margin-right:-0px;"><span style="line-height:5px;">&nbsp;:&nbsp;</span></span>Fédération Internationale de Philatélie,&nbsp;Federation of Inter-Asian Philately,&nbsp;Seoul Metropolitan Government,&nbsp;Ministry of Education</span></p>
1570<p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';">(30114) 19, Doum 5-ro, Sejong-si, Republic of Korea,&nbsp;Korea Post, PHILAKOREA 2025 World Stamp Exhibition Organizing Committee</span></p>
1571<p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';"><span style="letter-spacing:0px;margin-right:-0px;"><span style="line-height:5px;">TEL : 02-2036-0821&nbsp;|&nbsp;FAX : 02-2036-0698&nbsp;|&nbsp;</span></span>EMAIL&nbsp;: [email protected]</span></p>
1572<p class="text-m" style="text-align: center;"><span style="font-family:'Noto Sans KR';"><span style="letter-spacing:0px;margin-right:-0px;"><span style="line-height:5px;">Copyrights by Korea Philatelic Exhibition 2025.&nbsp;All Rights reserved</span></span></span></p>
1573</div></div></div></div>
1574                                                </div>
1575                                            </div>
1576                                        </div>
1577                                    </div>
1578                                </div>                                                                                                                                                    <webfont>
1578{"google":[],"custom":["Noto Sans KR"]}</webfont>    <!--</div>-->
1579</div><!--/container-->
1580
1581</body>
1582</html>
1583
1584<!-- 네이버 지도 모듈 호출 -->
1585
1586
1587<script>
1588$(document).ready(function(){
1589    //live only
1590    if($("body .header").hasClass("useFixed")) {
1591        $("body").addClass("headerFixed");
1592    }
1593
1594    initHeader9();
1595
1596    $(".header .header9 .header9-close-btn").click(function(){
1597        $(".header .header9").hide();
1598        $("body.live").addClass("header9_closed");
1599        setCookie("header9_closed", 1, 1);
1600        realignHeader9();
1601    });
1602    if($(".header").hasClass("useFixed")) {
1603        qv_on_scroll("init"); //scrolled page load시 init();
1604
1605        var agent = navigator.userAgent.toLowerCase();
1606        if ((navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1)) {
1607            $('body').scroll(function() { qv_on_scroll_ie(); });
1608        }
1609        else {
1610            window.onscroll = function(){ qv_on_scroll(); };
1611        }
1612
1613        //window.onscroll = function(){qv_on_scroll()};
1614    }
1615
1616    // column 내 whitespace가 들어가있는 항목 정리
1617    $.each($('.column'), function() {
1618        if($(this).html().trim() == '') { $(this).html(''); }
1619    });
1620
1621//    $('.slider-frm').not('.fullpage').find('.carousel').carousel({ swipe: 200 });
1622//    $('.slider-frm').not('.fullpage').find('.carousel').carousel(0);
1623    $(".carousel").carousel({ swipe: 200 });
1624//    $('.carousel').carousel(0);
1625
1626    var login_require = "";
1627    if (login_require == 1) {
1628        $('#LoginModal').modal('show');
1629        $('#LoginModal .modal-header').append($('<div class="modal-header-title-sub">' + lang.requires_login + '</div>'));
1630    }
1631
1632    /* 2020.01.15 재헌
1633       페이지 최초 로드 시 QV_BASE_OBJ.sskey 에 값이 비어있음.
1634       쿠키에서 정보를 가져와 채워주도록 함.
1635     */
1636    if (!QV_BASE_OBJ.sskey || QV_BASE_OBJ.sskey == '') {
1637        QV_BASE_OBJ.sskey = getCookie('QVSSID');
1638    }
1639
1640    removeSiteCopiedElement();
1641
1642    initMobileHeader();
1643    // initSnsFeed(); Instagram api denied
1644    initPopup();
1645    initFixedContents();
1646    initMenu();
1647    initTabFrame();
1648    initSMS();
1649    initSliderCallback();
1650    initSlider();
1651    initFullPageSlider();
1652    initSnSIconImage();
1653    initPolicyPrivacyModal();
1654    initJoinModal();
1655    initPageFadeEvent();
1656    initCalendar();
1657    initLnb();
1658
1659    initNonScaledImageBox();
1660
1661    initHeaderSideNav();
1662    initMobileHeaderMenu();
1663
1664    initRss();
1665
1666    initMouseoverObjects();
1667    initLanguageSelector();
1668
1669    initDownloadButton();
1670
1671    initInstagramFeed();
1672    initDatabaseContents();
1673
1674    initGrid();
1675    initVideo();
1676    initFrameLink();
1677    initDday();
1678    initCountDown();
1679    initNotionContents();
1680
1681    });
1682
1683$(window).bind("load", function (){
1684    initIframe();
1685});
1686
1687function initNotionContents() {
1688    //quv-notion-frame iframe을 안내 마크업으로 교체
1689    $('iframe.quv-notion-frame').each(function(){
1690        var noticeHtml =
1691            '<div class="quv-notion-frame quv-notion-notice" style="display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:260px;box-sizing:border-box;padding:16px;font-family:\'noto sans kr\',\'Apple SD Gothic Neo\',sans-serif;">'
1692          +   '<div style="display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;max-width:480px;box-sizing:border-box;padding:36px 24px;background:#fff;border:1px solid #ececec;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,0.04);">'
1693          +     '<img src="https://quv.kr/img/mail/mail_logo.png" alt="QUV" style="height:32px;margin-bottom:20px;" />'
1694          +     '<p style="margin:0 0 10px;font-size:19px;font-weight:700;color:#1f1f1f;line-height:1.35;">노션 임베드(Beta) 기능이 종료됩니다.</p>'
1695          +     '<p style="margin:0;font-size:13px;color:#8c8c8c;line-height:1.6;">기존에 노션 임베드를 사용 중인 페이지는<br>더 이상 지원되지 않습니다.<br>노션 공식 iframe 방식<a href="https://quv.kr/customer_help.html?m=read&aid=w5ve8D" target="_blank" style="color:#2f6fed;text-decoration:underline;">(가이드)</a>으로 변경해 주세요.</p>'
1696          +     '<div style="margin-top:20px;width:100%;padding:11px 18px;box-sizing:border-box;background:#f5f5f5;border-radius:6px;font-size:13px;color:#555;">서비스 종료 일정: 2026년 4월 17일</div>'
1697          +   '</div>'
1698          + '</div>';
1699        $(this).replaceWith(noticeHtml);
1700    });
1701    $('.iframe-notion-guide').remove()
1702}
1703
1704function initDday(target) {
1705    // 2021.12.17(금) (정빈) D-day 기능
1706    const today = new Date()
1707    const todayTimeStamp = today.getTime()
1708    const ddayTarget = target ? target : $('#main_container .ddayBox')
1709
1710    ddayTarget.each(function () {
1711        const ddayBox = $(this);
1712        const ddayArea = ddayBox.find('.dday-area')
1713        const userDdayTimeStamp = ddayArea.attr('data-dday')
1714        const ddayDistance = userDdayTimeStamp - todayTimeStamp
1715        const getDday = Math.floor(ddayDistance / (1000 * 60 * 60 * 24)) + 1
1716
1717        if (isNaN(getDday)) {
1718            ddayArea.find('.dday-area-variable').text('-Day')
1719        } else {
1720            const ddayView = getDday >= 0 ? '-'+ getDday : '+' + Math.abs(getDday)
1721            ddayArea.find('.dday-area-variable').text(ddayView)
1722        }
1723    })
1724
1725
1726}
1727
1728function ddayGetDate(date) {
1729    const distance = new Date(date).getTime() - new Date().getTime()
1730    let dateObj = {}
1731    if (distance <= 0 || isNaN(distance)) {
1732        dateObj.setDays = '00'
1733        dateObj.setHours = '00'
1734        dateObj.setMinutes = '00'
1735        dateObj.setSeconds = '00'
1736    } else {
1737        const days = Math.floor(distance / (1000 * 60 * 60 * 24))
1738        const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) - 9
1739        const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))
1740        const seconds = Math.floor((distance % (1000 * 60)) / 1000)
1741
1742        dateObj.setDays = days > 9 ? days : '0' + days
1743        dateObj.setHours = hours > 9 ? hours : '0' + hours
1744        dateObj.setMinutes = minutes > 9 ? minutes : '0' + minutes
1745        dateObj.setSeconds = seconds > 9 ? seconds : '0' + seconds
1746    }
1747    return dateObj
1748}
1749
1750// 글로벌 setInterval 관리
1751let countdownInterval = null
1752function initCountDown() {
1753    let isCountDownExist = false
1754
1755    function ddayCountDown () {
1756        $('#main_container .ddayBox .view').each(function () {
1757            if ($(this).find('.dday-area-countdown').css('display') === 'block') {
1758                const vBox = $(this)
1759                const getDate = Number(vBox.find('.dday-area').attr('data-dday'))
1760                const setDays = ddayGetDate(getDate).setDays
1761                const setHours = ddayGetDate(getDate).setHours
1762                const setMinutes = ddayGetDate(getDate).setMinutes
1763                const setSeconds = ddayGetDate(getDate).setSeconds
1764
1765                vBox.find('.dday-area').find('.days-value').text(setDays)
1766                vBox.find('.dday-area').find('.hours-value').text(setHours)
1767                vBox.find('.dday-area').find('.minutes-value').text(setMinutes)
1768                vBox.find('.dday-area').find('.seconds-value').text(setSeconds)
1769            }
1770        })
1771    }
1772
1773    $('#main_container .ddayBox .view').each(function () {
1774        if($(this).find('.dday-area-countdown').css('display') === 'block') {
1775            ddayCountDown()
1776            isCountDownExist = true
1777            return false
1778        }
1779    })
1780
1781    if (isCountDownExist) {
1782        clearInterval(countdownInterval)
1783        countdownInterval = setInterval(ddayCountDown,1000)
1784    }
1785}
1786
1787
1788function initFrameLink(target) {
1789    if (!target) {
1790        target = $('.frm, .box');
1791    }
1792
1793    target.each(function() {
1794        const area = $(this);
1795        const href = area.attr('href');
1796        if (href) {
1797            let targetAttr = '';
1798            const target = area.attr('target');
1799            if (target && target !== '') {
1800                targetAttr = 'target="' + target + '"';
1801            }
1802
1803            area.append('<a class="link-wrapper" href="' + href + '" ' + targetAttr + '></a>')
1804        }
1805    });
1806}
1807
1808function initHeaderSearch() {
1809    /* 2021.11.01
1810     * 게시판 통합검색(헤더)
1811     */
1812    /* Search button */
1813    $('#main_container').delegate('.header-search-bar-button', 'click', function() {
1814        headerSearchAllBoard();
1815    });
1816    /* Search bar keyup */
1817    $('#main_container').delegate('#header-search-bar', 'keyup', function(event) {
1818        if (event.keyCode == 13) {
1819            headerSearchAllBoard();
1820        }
1821    });
1822
1823    /* Search Icon */
1824    $('#main_container').delegate('.header-search-icon-button', 'click', function() {
1825        $('#main_container').append(
1826            '<div class="header-search-dialog">' +
1827                '<div class="header-search-dialog-close"></div>' +
1828                '<div class="header-search-dialog-body">' +
1829                    '<div>' +
1830                        '<input type="text" id="header-search-bar" placeholder="검색어를 입력해주세요."/>' +
1831                        '<i class="icon-magnifier header-search-bar-button"></i>' +
1832                    '</div>' +
1833                '</div>' +
1834            '</div>'
1835        );
1836    });
1837    $('#main_container').delegate('.header-search-dialog-close', 'click', function() {
1838        $('.header-search-dialog').remove();
1839    })
1840}
1841
1842function headerSearchAllBoard(page) {
1843    const targetPage = page ? page : 1;
1844    const keyword = $('#header-search-bar').val();
1845    if (keyword) {
1846        window.location = '/module/board/search.html?keyword=' + keyword + '&page=' + targetPage
1847    } else {
1848        alert('검색어를 입력해주세요.');
1849    }
1850}
1851
1852function initVideo() {
1853    $('#main_container').delegate('.videoBox[data-popup="1"]', 'click', function() {
1854        // 지연 로드로 아직 src 가 없을 수 있어 data-src 로 폴백한다
1855        let src = $(this).find('iframe').attr('src') || $(this).find('.video-iframe').attr('data-src');
1856        // src = src.indexOf('&autoplay=1') > 0 ? src : src + '&autoplay=1&mute=1&muted=1';
1857
1858        $('#main_container').append(
1859            '<div class="video-popup"><div><iframe src="' + src + '"></iframe></div></div>'
1860        );
1861    });
1862
1863    $('#main_container').delegate('.video-popup', 'click', function() {
1864        if ($(this).parent().attr('id') === 'main_container') {
1865            $(this).remove();
1866        }
1867    })
1868}
1869
1870function initGrid(target) {
1871    const gridBoxes = target ? target : $('.gridBox');
1872    if (gridBoxes.length > 0) {
1873        function setGridHeaderHeight(target, height) {
1874            const gridOption = target.data('gridOption');
1875            if (gridOption) {
1876                gridOption.api.setHeaderHeight(parseInt(height));
1877            }
1878        }
1879
1880        function setGridRowHeight(target, height) {
1881            const gridOption = target.data('gridOption');
1882            if (gridOption) {
1883                gridOption.api.forEachNode(function (rowNode) {
1884                    rowNode.setRowHeight(parseInt(height));
1885                });
1886                gridOption.api.onRowHeightChanged();
1887            }
1888        }
1889
1890        $.getScript('/js/xlsx/ag-grid.js', function() {
1891            gridBoxes.each(function() {
1892                const gridBox = $(this);
1893                const columnDefs = gridBox.attr('columnDefs');
1894                const rowData = gridBox.attr('rowData');
1895                if (columnDefs && rowData) {
1896                    gridBox.find('.grid-area').children().remove();
1897
1898                    const _columnDefs = JSON.parse(columnDefs).map(function(r, i) {
1899                        r.lockPosition = true;
1900                        delete r.rowDrag;
1901                        return r;
1902                    });
1903                    const _gridOption = {
1904                        columnDefs: _columnDefs,
1905                        defaultColDef: {
1906                            minWidth: 110,
1907                            editable: false,
1908                            resizable: false,
1909                        },
1910                        domLayout: 'autoHeight',
1911                        cellStyle: {'white-space': 'normal'},
1912                        rowData: JSON.parse(rowData),
1913                        animateRows: true,
1914                        scrollbarWidth: 4,
1915                    };
1916
1917                    const gridElement = gridBox.find('.grid-area')[0];
1918                    new agGrid.Grid(gridElement, _gridOption);
1919
1920                    gridBox.data('gridOption', _gridOption);
1921
1922                    const gridHeightHeader = gridBox.attr('headerHeight');
1923                    if (gridHeightHeader) {
1924                        setGridHeaderHeight(gridBox, gridHeightHeader);
1925                    }
1926
1927                    const gridRowHeight = gridBox.attr('rowHeight');
1928                    if (gridRowHeight) {
1929                        setGridRowHeight(gridBox, gridRowHeight);
1930                    }
1931
1932                    gridBox.find('.grid-area').show();
1933                }
1934            })
1935        })
1936    }
1937}
1938
1939function initIframe(elements) {
1940        const iframes = elements ? elements : $('.iframeBox')
1941    iframes.each(function() {
1942        // 탭에 속해있지만 활성화 되지 않은 상태이면 초기화 하지 않음
1943        if ($(this).parents('.tab-frm').length > 0
1944            && $(this).parents('.tab-pane.active').length === 0) {
1945            return;
1946        }
1947
1948        const target = $(this).find('.iframe-area');
1949        const value = target.attr('data-iframe-html');
1950        const height = $(this).attr('data-hei');
1951
1952        if (value) {
1953            const decodeValue = decodeURIComponent(value);
1954            var regex = /(?:<iframe[^>]*)(?:(?:\/>)|(?:>.*?<\/iframe>))/g;
1955            var divs = $(decodeValue).filter(function(i, v) { return v.tagName === 'div' || v.tagName === 'DIV' });
1956
1957            /* TAG: Iframe */
1958            if (regex.test(decodeValue) && divs.length === 0) {
1959                // do nothing
1960                var iframe = decodeValue.match(regex)[0];
1961                target.html($(iframe));
1962            }
1963            /* TAG: No Iframe */
1964            else {
1965                setIframeBox(target, decodeValue, height)
1966            }
1967            // if (QV_BASE_OBJ.stid === "cxzvffdy1") {
1968            //     alert(navigator.userAgent)
1969            // }
1970        }
1971    });
1972
1973    function setIframeBox(target, value, height) {
1974        // 기존 iframe 제거
1975        target.find('iframe').remove();
1976        target.removeAttr('data-iframe-html');
1977
1978        const iframe = document.createElement('iframe');
1979        iframe.className = 'wrap-in-iframe';
1980        iframe.style = 'height: ' + height + 'px';
1981
1982        target.append($(iframe));
1983        target.removeAttr('data-iframe-html');
1984
1985        const context = iframe.contentWindow.document;
1986        context.open();
1987        context.write(value);
1988        context.close();
1989
1990        // iframe 추가
1991        // if (typeof(qv_func.isInAppBrowser) !== 'undefined' && qv_func.isInAppBrowser()) {
1992        //     script 태그 내 document scope가 parent로 잡히는 문제
1993        //     const iframe = document.createElement('iframe');
1994        //     iframe.className = 'wrap-in-iframe';
1995        //     target.append($(iframe));
1996        //     target.removeAttr('data-iframe-html');
1997        //
1998        //     // iframe html 세팅
1999        //     const context = iframe.contentWindow.document;
2000        //     const body = $('body', context);
2001        //     body.html(value);
2002        // } else {
2003        //     in-app 브라우저에서 작동하지 않음
2004        //     var iframe = document.createElement('iframe');
2005        //     var html = '<body>' + value + '</body>';
2006        //     iframe.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(html);
2007        //     target.append($(iframe));
2008        // }
2009
2010        // iframe 높이 할당
2011        // const interval = setInterval(function() {
2012        //     const h = $(iframe).css('height');
2013        //     if (h != '100%') {
2014        //         clearInterval(interval);
2015        //         $(iframe).parents('.iframeBox').height(h);
2016        //     }
2017        // },100);
2018        // var iframeBoxInterval = window.setInterval(function() {
2019        //     if (iframe.contentWindow.document.readyState === "complete") {
2020        //         window.clearInterval(iframeBoxInterval);
2021        //         // grab the content of the iframe here
2022        //         console.log('iframebox loaded')
2023        //     }
2024        // }, 100);
2025
2026    }
2027    }
2028//
2029// function initFilter() {
2030//     if ($('.filter-area').length == 0) return;
2031//
2032//     $('body').delegate('.filter-item', 'click', function() {
2033//         $(this).toggleClass('active');
2034//
2035//         if ($('.filter-item.active').length == 0) {
2036//             $('.gallery-board-box').removeClass('disapear');
2037//
2038//         }
2039//         else {
2040//             $.each($('.filter-item'), function() {
2041//                 var filter_code = $(this).find('.filter-item-name').text();
2042//                 if ($(this).hasClass('active')) {
2043//                     $('.gallery-board-box[data-filter-code="' + filter_code + '"]').removeClass('disapear');
2044//                 }
2045//                 else {
2046//                     $('.gallery-board-box[data-filter-code="' + filter_code + '"]').addClass('disapear');
2047//                 }
2048//             });
2049//         }
2050//     });
2051//
2052//     $('body').delegate('.filter-header', 'click', function() {
2053//         $('.filter-body').toggleClass('active');
2054//         if ($('.filter-body').hasClass('active')) {
2055//             $(this).parents('.box').css('border-bottom', '1px solid #eee');
2056//         }
2057//         else {
2058//             $(this).parents('.box').css('border-bottom', 'none');
2059//         }
2060//     });
2061//
2062//     $.each($('.gallery-board-box'), function() {
2063//        var filter_code = $(this).find('.gallery-board-caption-title > span').text();
2064//        $(this).attr('data-filter-code', filter_code);
2065//     });
2066// }
2067//
2068// function initColorChip() {
2069//     if ($('.color-chip-area').length == 0) return;
2070//
2071//     $('#main_container').delegate('.color-chip-item', 'click', function() {
2072//         var url = $(this).attr('data-url');
2073//         var target = $(this).parents('.color-chip-container').siblings('.color-chip-image');
2074//
2075//         var temp_image = new Image();
2076//         temp_image.src = url;
2077//         $(temp_image).one('load',function() {
2078//             $(target).attr('src', url);
2079//         });
2080//
2081//         $(this).siblings('.color-chip-item').removeClass('active');
2082//         $(this).addClass('active');
2083//     });
2084//
2085//     $.each($('.color-chip-area'), function() {
2086//        $(this).find('.color-chip-item').first().trigger('click');
2087//     });
2088// }
2089
2090function initDatabaseContents() {
2091    if ($('.databaseContentsBox').length > 0) {
2092        let DATABASE_CONTENTS = {};
2093        $.each($('.databaseContentsBox'), function () {
2094            const area = $(this).find('.dbc-area');
2095            const id = area.attr('data-id');
2096            const count = area.attr('data-count');
2097            const paging = area.attr('data-paging');
2098            const matrix = area.children('.dbc-item:first-of-type').clone();
2099
2100            qvjax_direct(
2101                "select_database_contents",
2102                "/module/dbc/databaseContents.php",
2103                '&cid=' + id,
2104                function (data) {
2105                    if (data.length > 0) {
2106                        // const column_defs = JSON.parse(data[0].column_defs);
2107                        const row_data = JSON.parse(data[0].row_data.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t"));
2108                        const size = Math.ceil(row_data.length / count);
2109                        DATABASE_CONTENTS[id] = {
2110                            data: row_data,
2111                            size: size,
2112                        };
2113
2114                        // let pagingHtml = '<div class="dbc-paging">';
2115                        for (let i = 1; i <= size; i++) {
2116                            // pagingHtml += '<span data-id="' + id + '" data-page="' + i + '" class="' + (i == 1 ? 'active' : '') + '">' + i + '</span>';
2117                            DATABASE_CONTENTS[id][i] = DATABASE_CONTENTS[id]['data'].slice(count * (i-1), count * i);
2118                        }
2119                        // pagingHtml += '</div>';
2120                        if (paging == 1) {
2121                            // area.after(pagingHtml);
2122                            area.after('<div class="pager"><ol class="paging-btn-group"></ol></div>');
2123                            buildDatabaseContentsPagingHtml(DATABASE_CONTENTS[id], area, 1);
2124                        }
2125
2126
2127                        pagingDatabaseContents(DATABASE_CONTENTS[id][1], matrix, area);
2128                    }
2129
2130                    area.show();
2131                },
2132                function (xhr) {}
2133            );
2134        });
2135
2136        $('.databaseContentsBox').delegate('.pager li', 'click', function() {
2137            const area = $(this).parents('.databaseContentsBox').find('.dbc-area');
2138            const matrix = area.children('.dbc-item:first-of-type').clone();
2139            const id = area.attr('data-id');
2140            const page = $(this).attr('value');
2141            const databaseContents = DATABASE_CONTENTS[id];
2142
2143            if (databaseContents) {
2144                buildDatabaseContentsPagingHtml(databaseContents, area, page);
2145                pagingDatabaseContents(databaseContents[page], matrix, area);
2146
2147                if (isMobile()) {
2148                    const scrollY = area.offsetTop();
2149                    $("html, body").animate({scrollTop: scrollY - 50}, 500);
2150                }
2151            }
2152        });
2153
2154        function buildDatabaseContentsPagingHtml(databaseContents, area, page) {
2155            var page = parseInt(page);
2156            var size = databaseContents.size;
2157            var pagingStart;
2158            var pagingEnd;
2159            var html = '';
2160
2161            if (page - 2 <= 0) {
2162                pagingStart = 1;
2163                pagingEnd = Math.ceil(size) >= pagingStart + 4 ? 5 : Math.ceil(size);
2164            }
2165            else if (page + 2 >= Math.ceil(size)) {
2166                pagingStart = Math.ceil(size) - 4 <= 0 ? 1 : Math.ceil(size) - 4;
2167                pagingEnd = Math.ceil(size);
2168            }
2169            else {
2170                pagingStart = page - 2;
2171                pagingEnd = page + 2;
2172            }
2173            html += '<li class="paging-btn-group__item left" value="1">';
2174            html += '<i class="i-chevron-left"></i>';
2175            html += '</li>';
2176            for(var i = pagingStart; i <= pagingEnd; i ++) {
2177                var buttonClassName = i == page ? 'btn btn--basic active' : 'btn btn--basic';
2178                html += '<li class="paging-btn-group__item" value="' + i + '">';
2179                html += '<button class="' + buttonClassName + '"><span>' + i;
2180                html += '</span></button></li>';
2181            }
2182            html += '<li class="paging-btn-group__item right" value="' + size + '">';
2183            html += '<i class="i-chevron-right"></i>';
2184            html += '</li>';
2185
2186            area.next('.pager').find('.paging-btn-group').children('.paging-btn-group__item').remove();
2187            area.next('.pager').find('.paging-btn-group').append(html);
2188        }
2189
2190        function pagingDatabaseContents(data, matrix, area) {
2191            const $frag = $(document.createDocumentFragment());
2192            area.children('.dbc-item').remove();
2193            $.each(data, function() {
2194                const clone = matrix.clone();
2195                const rowData = this;
2196                $.each(clone.find('.dbc-contents-item'), function() {
2197                    const connect = $(this).attr('data-connect');
2198                    const type = $(this).attr('data-type');
2199
2200                    switch (type) {
2201                        case '1':
2202                        case '3':
2203                            $(this).find('p:last-of-type').text(rowData[connect]);
2204                            break;
2205                        case '2':
2206                            $(this).find('img').attr('src', typeof rowData[connect] === 'string' ? rowData[connect].trim() : rowData[connect]);
2207                            break;
2208                    }
2209                });
2210                clone.find('style').remove();
2211                clone.attr('data-id', this.id);
2212                $frag.append(clone);
2213            });
2214            area.append($frag);
2215        }
2216
2217
2218        $('body').delegate('.databaseContentsBox .dbc-area[data-detail="1"] .dbc-item', 'click', function() {
2219            const page = $(this).parents('.dbc-area').first().attr('data-id');
2220            const id = $(this).attr('data-id');
2221
2222            if (page && id) {
2223                location = '/' + page + '?id=' + id;
2224            } else {
2225                alert('데이터 컨텐츠 설정 오류', page, id);
2226            }
2227        });
2228    }
2229}
2230
2231function initDownloadButton() {
2232    $('#main_container').delegate('.qv-file-download', 'click', function() {
2233        var url = $(this).attr('data-download-url');
2234        if (!url || url == '') return;
2235
2236        var name = $(this).attr('data-download-url').split('/').pop();
2237        url = url.split('/').reduce(function(p, c, idx) {
2238            var slash = (c == '') ? '//' : '/';
2239            var add = (idx == url.split('/').length -1) ? encodeURIComponent(c) : c + slash;
2240            return p + add;
2241        });
2242
2243        if ((navigator.userAgent.toLowerCase().indexOf('safari') > -1 &&
2244            navigator.userAgent.toLowerCase().indexOf('chrome') == -1) ||
2245            is_InternetExplorer()) {
2246            var a = $("<a>").attr("href", url).attr("download", name).appendTo("body");
2247            a[0].click();
2248            a.remove();
2249        }
2250        else {
2251            post_redirect('/module/board/download.php', {'url': url, 'name': name}, '_top');
2252        }
2253    });
2254}
2255
2256function initLanguageSelector() {
2257    if ($('.header .languageSelectorBox').length > 0) {
2258        var LANGUAGE_CODE = {
2259            'ko': '한국어',
2260            'en': 'English',
2261            'ja': '日本語',
2262            'zh-chs': '中文(简体)',
2263            'zh-cht': '中文(繁體)',
2264            'es-ar': 'Español (Argentina)',
2265            'en-au': 'English (Australia)',
2266            'pt-br': 'português (Brasil)',
2267            'en-ca': 'English (Canada)',
2268            'de': 'Deutsch',
2269            'fr': 'français',
2270            'en-uk': 'English (UK)',
2271            'id': 'Bahasa Indonesia',
2272            'en-in': 'English (India)',
2273            'it': 'italiano',
2274            'es-mx': 'Español (Mexico)',
2275            'ru': 'Русский',
2276            'ar-sa': 'العربية',
2277            'th': 'ไทย',
2278            'tr': 'Türkçe',
2279            'vn': 'Tiếng Việt',
2280            'en-za': 'English (South Africa)',
2281        };
2282        
2283        $('body').delegate('.language-selector.language-type-3', 'click', function() {
2284            if ($(this).find('.language-dropdown').length > 0) {
2285                $(this).find('.language-dropdown').remove();
2286            }
2287            else {
2288                var html = '<div class="language-dropdown">';
2289                $.each($(this).find('.language-selector-flag'), function() {
2290                    var lang = $(this).attr('data-lang');
2291                    var href = $(this).children('a').attr('href');
2292                    var target = $(this).children('a').attr('target') ? $(this).children('a').attr('target') : '_self';
2293                    html += '<div class="language-dropdown-item"><a href="' + href + '" target="' + target + '">' + LANGUAGE_CODE[lang] + '</a></div>';
2294                });
2295                html += '</div>';
2296            }
2297            $(this).append(html);
2298
2299            // 2020.12.04 높이 지정 불필요함
2300            // var top = $(this).position().top + 40;
2301            // $('.language-dropdown').css('top', top);
2302        });
2303    }
2304}
2305
2306function initMouseoverObjects() {
2307    // mouseover 객체 내에 애니메이션 컨텐츠가 있으면 hover 에서도 동작하도록 하는 코드.
2308    // 오동작이 있기 때문에 다시 구축해야 함
2309    // $('#main_container').delegate('.mouseover-frm', 'mouseenter', function() {
2310    //     console.log('enter');
2311    //     $.each($(this).find('.mouseover-after'), function() {
2312    //         var elm = this;
2313    //         var newone = elm.cloneNode(true);
2314    //         elm.parentNode.replaceChild(newone, elm);
2315    //     });
2316    // });
2317    // $('#main_container').delegate('.mouseover-frm', 'mouseleave', function() {
2318    //     console.log('enter');
2319    //     $.each($(this).find('.mouseover-before'), function() {
2320    //         var elm = this;
2321    //         var newone = elm.cloneNode(true);
2322    //         elm.parentNode.replaceChild(newone, elm);
2323    //     });
2324    // });
2325
2326    function resizeMouseoverFrame(mouseoverFrame) {
2327        var before = mouseoverFrame.find('.mouseover-before').first();
2328        var after = mouseoverFrame.find('.mouseover-after').first();
2329        var mouseover_height = before.height() > after.height() ? before.height() : after.height();
2330        if (mouseover_height == 0) {
2331            var data_height = mouseoverFrame.attr('data-hei') ? parseInt(mouseoverFrame.attr('data-hei')) : 0;
2332            data_height = data_height == 0 ? mouseoverFrame.find('.imgBox:first').height() : data_height;
2333            mouseover_height = data_height;
2334        }
2335
2336        if (mouseoverFrame.height() < mouseover_height) {
2337            var tb = mouseoverFrame.children('.view').children('.tb');
2338            // tb.height(mouseover_height);
2339            if (tb.length > 0) {
2340                tb.get(0).style.setProperty('height', mouseover_height + 'px', 'important');
2341            }
2342        }
2343    }
2344
2345    $(window).bind("load",function() {
2346        // tb의 높이보다 하위 컨텐츠의 높이가 더 클 경우 tb의 높이를 맞춰준다.
2347        // mouseover 객체들이 absolute로 전환되기 때문에 높이를 수동으로 지정해주지 않으면 컨텐츠들이 겹치게 됨
2348        $.each($('#main_container .mouseover-frm'), function() {
2349            const mouseoverFrame = $(this);
2350            mouseoverFrame.find('.box').each(function(i, val) {
2351                $(val).addClass('displayed');
2352            });
2353
2354            // mouseover frame 내 이미지를 모두 호출한 뒤 위치를 다시 잡아준다
2355            let loadCompleteCount = 0;
2356            const imageCore = $(this).find('.img-core');
2357            const imageCount = imageCore.length;
2358            if (imageCount === 0) {
2359                resizeMouseoverFrame(mouseoverFrame);
2360            } else {
2361                imageCore.each(function() {
2362                    const img = new Image();
2363                    const bg = $(this).css('background-image');
2364                    if (bg.indexOf('url(') === 0) {
2365                        img.src = bg.replace('url(','').replace(')','').replace(/\"/gi, "");
2366                        $(img).one('load',function(){
2367                            loadCompleteCount++;
2368                            if (loadCompleteCount === imageCount) {
2369                                resizeMouseoverFrame(mouseoverFrame);
2370                            }
2371                        })
2372                    } else {
2373                        loadCompleteCount++;
2374                        if (loadCompleteCount === imageCount) {
2375                            resizeMouseoverFrame(mouseoverFrame);
2376                        }
2377                    }
2378                })
2379            }
2380        });
2381
2382        // 이미지 박스 전용 mouseover
2383        // 향후 실제 사용여부는 확인필요
2384        $.each($('#main_container .imgBox'), function() {
2385            var mouseover_image = $(this).find('.img-core').attr('data-mouseover-image');
2386            if (mouseover_image) {
2387                var image = $(this).find('.img-core');
2388                var dummy = $(this).find('.img-core-dummy');
2389                image.attr('data-default-image', image.css('background-image'));
2390
2391                $(this).on('mouseenter', function () {
2392                    console.log('imgBox mouse enter');
2393                    image.css('background-image', image.attr('data-mouseover-image'));
2394                    dummy.attr('src', image.attr('data-mouseover-image').replace('url(', '').replace(')', '').replace(/\"/gi, ""))
2395                });
2396
2397                $(this).on('mouseleave', function () {
2398                    console.log('imgBox mouse leave');
2399                    image.css('background-image', image.attr('data-default-image'));
2400                    dummy.attr('src', image.attr('data-default-image').replace('url(', '').replace(')', '').replace(/\"/gi, ""))
2401                });
2402            }
2403        });
2404    });
2405}
2406
2407function initMobileFooterFixedContents() {
2408    if (isMobile() && $('.footer-fixed-contents').length > 0) {
2409        $(window).bind("load",function() {
2410            // fixed 크기만큼 페이지 최하단에 공백넣음
2411            var footer_fixed = $('.footer-fixed-contents');
2412            var empty_div = '<div style="height:' + footer_fixed.height() + 'px;"></div>';
2413            $('.footer-frame-mobile').after($(empty_div));
2414        });
2415    }
2416}
2417
2418function initHeaderOverflowMenuResizeEvent() {
2419    var column;
2420    $.each($('#main_container .header .al-box'), function() {
2421        if ($(this).children('ul.mn-ul').length > 0 &&
2422            $(this).find('.mn-item').length > 0) {
2423            column = $(this);
2424        }
2425    });
2426    if (column) {
2427        headerOverflowMenuInit(column);
2428    }
2429
2430    $(window).resize(function() {
2431        if(this.resizeTO) clearTimeout(this.resizeTO);
2432        this.resizeTO = setTimeout(function() {
2433            $(this).trigger('resizeEnd');
2434        }, 100);
2435    });
2436    $(window).bind('resizeEnd', function() {
2437        if (column) {
2438            headerOverflowMenuInit(column);
2439        }
2440    });
2441}
2442
2443function headerOverflowMenuInit(column) {
2444    if (column.children('ul.mn-ul').length == 0) { return; }
2445
2446    var column_width = 0;
2447    var box_width = 0;
2448    var overflow_menu = [];
2449
2450    var container = column.parents('#main_container');
2451    var menu = column.children('ul.mn-ul');
2452    var header_contents = column.parents('.header-contents').first();
2453    var header = header_contents.parent();
2454    var header_width = column.parent().css('width');
2455    if (header_width.indexOf('%') > -1) {
2456        // %로 리턴됨 -> px 값 계산해서 처리 (IE에서 가끔 %로 넘어옴)
2457        header_width = $(window).width() * parseInt(header_width) / 100;
2458    }
2459    else {
2460        // px로 리턴 -> 그대로 처리
2461        header_width = parseInt(header_width);
2462    }
2463
2464    $.each(column.children('div.box'), function() {
2465        box_width += $(this).width();
2466        box_width += parseInt($(this).css('padding-left'))
2467        box_width += parseInt($(this).css('padding-right'))
2468    });
2469    column_width += box_width;
2470
2471    container.find('.mn-item').removeClass('mn-item-overflow');
2472    $.each(menu.children('.mn-item').not('.mn-item-overflow-list'), function() {
2473        column_width += $(this).width();
2474
2475        if (header_width < column_width + 110) {
2476            $(this).addClass('mn-item-overflow');
2477            overflow_menu.push($(this));
2478        }
2479    });
2480
2481    if (overflow_menu.length > 0) {
2482        if (menu.find('headerstart').length == 0) { menu.prepend('<headerstart></headerstart>'); }
2483        if (menu.find('headerend').length == 0) { menu.append('<headerend></headerend>'); }
2484
2485        if (menu.find('.mn-item-overflow-list').length == 0) {
2486            var html = '<li class="mn-item mn-item-overflow-list"> <a class="mn-link"><i class="icon-options" aria-hidden="true"></i></a> <div class="header-overflow-pop"><ul></ul></div></li>';
2487            menu.find('headerend').before($(html));
2488        }
2489
2490        container.find('.header-overflow-pop ul li').remove();
2491        $.each(overflow_menu, function() {
2492            var clone = $(this).clone();
2493            clone.find('ul.sub-mn').remove(); // clone 내부에서 제거
2494            menu.find('.header-overflow-pop ul').append(clone);
2495        });
2496    }
2497    else {
2498        container.find('.mn-item-overflow-list').remove();
2499    }
2500}
2501
2502
2503function initMobileHeaderMenu() {
2504    if ((isMobile() && window.innerWidth <= 767) && $('.header').length > 0) {
2505        // menu touch
2506        if ($('.header-mobile .column > ul.mn-ul').length > 0) {
2507            // 현재 활성화된 페이지의 메뉴 위치 잡기
2508            $(window).bind("load",function() {
2509
2510                // 서브메뉴 추가
2511                if ($('.header-mobile .column > ul.mn-ul').data('sub')) {
2512                    if ($('.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item > ul.sub-mn > li.mn-item').length > 0) { // 메인 메뉴 중에 cur-mn-item이 존재할 경우
2513                        var sub_mn = $('.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item > ul.sub-mn');
2514                    }
2515                    else if ($('.header-mobile .column > ul.mn-ul .mn-item > ul.sub-mn > li.mn-item.cur-mn-item').length > 0) { // 서브 메뉴 중에 cur-mn-item이 존재할 경우
2516                        var sub_mn = $('.header-mobile .column > ul.mn-ul .mn-item > ul.sub-mn > li.mn-item.cur-mn-item').parent();
2517                    }
2518                    if (sub_mn) {
2519                        var header_contents = sub_mn.parents('.header-contents');
2520                        var sub_html = '<div class="col-xs-12 header-mobile-sub-menu" style="' +
2521                                'padding: 0 10px;' +
2522                                'margin-top: ' + header_contents.css('border-bottom-width') + ';' +
2523                                'border-bottom: ' +  header_contents.css('border-bottom') + ';' +
2524                                '">' +
2525                            '<div class="al-box column al-l">' +
2526                            '<ul class="mn-ul tc box hsync" style="display: table-cell; transform: translate3d(0px, 0px, 0px); height: ' + $(header_contents).height() + 'px;">' +
2527                            '<div class="preview"></div>' +
2528                            '<headerstart></headerstart>' +
2529                            sub_mn.html() +
2530                            '<headerend></headerend>' +
2531                            '</ul>' +
2532                            '</div>' +
2533                            '</div>';
2534                        sub_html = $(sub_html).css('background', header_contents.css('background'));
2535                        sub_html = $(sub_html).css('border-bottom', header_contents.css('border-bottom'));
2536                        header_contents.append($(sub_html));
2537
2538                        var header_cur = header_contents.parent();
2539                        var header_next = header_cur.next('div');
2540                        $.each(header_next, function () {
2541                            var top = 0;
2542                            $.each($(this).prev('div'), function () {
2543                                top += $(this).find('.header-contents').height();
2544                                top += $(this).find('.header-contents > div:last-child').height();
2545                            });
2546                            $(this).attr('data-top', top);
2547                            $(this).css('top', top);
2548                        });
2549                    }
2550                }
2551
2552                if ($('.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item').length > 0) {
2553                    var cur = $('.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item').last();
2554                    var ul = cur.parents('ul.mn-ul').first();
2555                    var pos = cur[0].offsetLeft * -1;
2556                    var width = ul.parents('.column').parent().width();
2557                    var max = (ul.width() - width) * -1;
2558                    pos = pos < 0 ? pos : 0;
2559                    max = max < 0 ? max : 0;
2560                    pos = pos <= max ? max : pos;
2561                    ul.css('transform', 'translate3d(' + pos + 'px, 0, 0)');
2562                    ul.data('pos', pos);
2563                }
2564
2565                var startPoint;
2566                $('#main_container').delegate('.header-mobile .column > ul.mn-ul', "touchstart", function (e) {
2567                    startPoint = e.originalEvent.touches[0].screenX;
2568
2569                    var pos = parseInt($(this).data('pos'));
2570                    if (!pos) {
2571                        $(this).data('pos', 0);
2572                    }
2573                });
2574                $('#main_container').delegate('.header-mobile .column > ul.mn-ul', "touchmove", function (e) {
2575                    var event = e.originalEvent;
2576                    var x = event.touches[0].screenX;
2577                    var diff = x - startPoint;
2578                    var width = $(e.currentTarget).parents('.column').parent().width();
2579                    var max = ($(this).width() - width) * -1;
2580
2581                    var pos = parseInt($(this).data('pos'));
2582                    pos += diff;
2583                    pos = pos < 0 ? pos : 0;
2584                    max = max < 0 ? max : 0;
2585                    pos = pos <= max ? max : pos;
2586                    $(this).css('transform', 'translate3d(' + pos + 'px, 0, 0)');
2587                });
2588                $('#main_container').delegate('.header-mobile .column > ul.mn-ul', "touchend", function () {
2589                    if ($(this).css('transform').indexOf('matrix') > -1) {
2590                        $(this).data('pos', $(this).css('transform').split(',')[4].trim());
2591                    }
2592                });
2593            });
2594
2595            // 카테고리 항목 클릭 시 하위 페이지가 있으면
2596            // 해당 페이지 목록(header-mobile-sub-menu)을 동적으로 만들어준다
2597            $('#main_container').delegate('.header-mobile .al-box > .mn-ul > .mn-item > .mn-link:not([href])', 'click', function() {
2598                if ($('.header-mobile .column > ul.mn-ul').data('sub')) {
2599                    var sub_mn = $(this).siblings('ul.sub-mn');
2600                    if (sub_mn) {
2601                        $('.header-mobile-sub-menu').remove();
2602
2603                        var header_contents = sub_mn.parents('.header-contents');
2604                        var sub_html = '<div class="col-xs-12 header-mobile-sub-menu" style="' +
2605                            'padding: 0 10px;' +
2606                            'margin-top: ' + header_contents.css('border-bottom-width') + ';' +
2607                            'border-bottom: ' +  header_contents.css('border-bottom') + ';' +
2608                            '">' +
2609                            '<div class="al-box column al-l">' +
2610                            '<ul class="mn-ul tc box hsync" style="display: table-cell; transform: translate3d(0px, 0px, 0px); height: ' + $(header_contents).height() + 'px;">' +
2611                            '<div class="preview"></div>' +
2612                            '<headerstart></headerstart>' +
2613                            sub_mn.html() +
2614                            '<headerend></headerend>' +
2615                            '</ul>' +
2616                            '</div>' +
2617                            '</div>';
2618                        sub_html = $(sub_html).css('background', header_contents.css('background'));
2619                        sub_html = $(sub_html).css('border-bottom', header_contents.css('border-bottom'));
2620                        header_contents.append($(sub_html));
2621
2622                        var header_cur = header_contents.parent();
2623                        var header_next = header_cur.next('div');
2624                        $.each(header_next, function () {
2625                            var top = 0;
2626                            $.each($(this).prev('div'), function () {
2627                                top += $(this).find('.header-contents').height();
2628                                top += $(this).find('.header-contents > div:last-child').height();
2629                            });
2630                            $(this).attr('data-top', top);
2631                            $(this).css('top', top);
2632                        });
2633                    }
2634                }
2635            });
2636        }
2637
2638        // section merge
2639        // var section_merge = $('.header-mobile > .header1').data('section-merge');
2640        // if (section_merge == false || location.pathname.indexOf('/module/board') > -1) { // merge = false 거나 게시글 쓰기/읽기 에서는 헤더영역 확보
2641        //     var height = 0;
2642        //     $.each($('.header-mobile > div'), function() {
2643        //         height += parseInt($(this).attr('data-hei'));
2644        //     });
2645        //     $('#main_container > .body')[0].style.setProperty('margin-top', height + 'px', 'important');
2646        // }
2647        // else if (section_merge == true) {
2648        //     $('#main_container > .body')[0].style.setProperty('margin-top', 0, 'important');
2649        //     $('#main_container > .body > .frm')[0].style.setProperty('margin-top', 0, 'important');
2650        // }
2651
2652        // $(window).bind("load",function() {});
2653        // section merge ver.2
2654        if ($('#main_container .body > mobile-header-section-merge').length > 0) {
2655            $('#main_container > .header-mobile').addClass('mobileHeaderSectionMerge');
2656            $('#main_container > .body')[0].style.setProperty('margin-top', 0, 'important');
2657            $('#main_container > .body > .frm')[0].style.setProperty('margin-top', 0, 'important');
2658        } else {
2659            $('#main_container > .header-mobile').removeClass('mobileHeaderSectionMerge');
2660            var height = 0;
2661            $.each($('.header-mobile > div'), function () {
2662                height += parseInt($(this).attr('data-hei'));
2663            });
2664
2665            /* 2020.05.21 재헌
2666             * 서브메뉴가 존재할 때 해당 높이도 더해서 body에 margin-top을 부여
2667             */
2668            if ($('.header-mobile-sub-menu').length > 0) {
2669                height += $('.header-mobile-sub-menu').height();
2670            }
2671
2672            $('#main_container > .body')[0].style.setProperty('margin-top', height + 'px', 'important');
2673        }
2674    }
2675}
2676
2677function initHeaderSideNav() {
2678    $('#main_container').delegate('.header-side-nav-button', 'click', function() {
2679        $('.header-side-nav').toggleClass('active');
2680
2681        if ($(this).parents('.header-mobile').length > 0) {
2682            $(this).parents('.header1, .header2, .header3, .header9').addClass('z-index-9999');
2683        }
2684
2685        // header-side-nav 영역만큼 밀어내기
2686        // $('.body').css('width', "calc(100% - 500px)");
2687    });
2688    $('#main_container').delegate('.header-side-nav-close', 'click', function() {
2689        $('.header-side-nav').removeClass('active');
2690
2691        if ($(this).parents('.header-mobile').length > 0) {
2692            setTimeout(function() {
2693                // 사이드 네비 닫히는 시간 0.3ms, z-index 빠지는 시간 0.5ms
2694                $(this).parents('.header1, .header2, .header3, .header9').removeClass('z-index-9999');
2695            }, 500)
2696        }
2697
2698        // header-side-nav 영역만큼 밀어내기
2699        // $('.body').removeAttr('style');
2700    });
2701
2702    /* 2020.03.16 재헌
2703     * language selector, header side nav 같은 별도의 창을 띄우는 헤더 요소가
2704     * header1, header2의 z-index 영향을 받아 위로 겹치거나 의도대로 동작하지 않는 문제를 수정
2705     */
2706    $('#main_container').delegate('.header > div', 'mouseenter', function() {
2707        if ($('.language-dropdown').length > 0 || $('.header-side-nav.active').length > 0) return;
2708        $(this).css('z-index', 2);
2709    });
2710    $('#main_container').delegate('.header > div', 'mouseleave', function() {
2711        if ($('.language-dropdown').length > 0 || $('.header-side-nav.active').length > 0) return;
2712        $(this).css('z-index', 1);
2713    });
2714}
2715
2716// 이미지 중 모바일 높이가 지정되지 않은 항목들 및 부모 프레임 크기 지정
2717function initNonScaledImageBox() {
2718    if (!isMobile()) return;
2719
2720    var image_count = 0;
2721    var target_count = 0;
2722    $.each($('.body .imgBox'), function() {
2723        if ($(this).parents('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
2724        if ($(this).parents('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11').length > 0) return;
2725        if ($(this).find('.mobile-box').length > 0) return;
2726        if ($(this).parents('.popup-container').length > 0) return;
2727        if ($(this).parents('.fixed-contents-layer').length > 0) return;
2728        if ($(this).parents('.tab-frm, .slider-frm').length > 0) return;
2729
2730        var bg_size = $(this).find('.img-core').css('background-size');
2731        if (bg_size == 'contain') {
2732            image_count++;
2733        }
2734    });
2735
2736    $.each($('.body .imgBox'), function() {
2737        if ($(this).parents('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
2738        if ($(this).parents('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11').length > 0) return;
2739        if ($(this).find('.mobile-box').length > 0) return;
2740        if ($(this).parents('.popup-container').length > 0) return;
2741        if ($(this).parents('.fixed-contents-layer').length > 0) return;
2742        if ($(this).parents('.tab-frm, .slider-frm').length > 0) return;
2743
2744        var img_box = $(this);
2745        var bg_size = $(this).find('.img-core').css('background-size');
2746        var bg_image = $(this).find('.img-core').css('background-image');
2747
2748        if (bg_image) {
2749            bg_image = bg_image.replace('url(', '').replace(')', '').replace(/\"/gi, "");
2750        }
2751
2752        if (bg_size == 'contain') {
2753            var tmpImg = new Image();
2754            tmpImg.src = bg_image;
2755            $(tmpImg).one('load',function(){
2756                var ratio = tmpImg.width / tmpImg.height;
2757                var height_origin = img_box.height();
2758                var width_resize = window.innerWidth; // img_box.width()는 퍼센트로 출력되기때문에 window width로 대체
2759                var height_resize = width_resize/ratio;
2760                var diff = height_origin - height_resize;
2761
2762                // 모바일 스크린보다 작은 이미지, 가로가 더 긴 이미지 등은 패스한다
2763                if (ratio > 1 || height_resize < window.innerHeight || height_origin * ratio < window.innerHeight) {
2764                    return;
2765                }
2766
2767                img_box.height(height_resize);
2768                img_box.find('.img-core').height(height_resize);
2769                img_box.attr('data-m-hei', height_resize + 'px');
2770                img_box.data('diff', diff);
2771                target_count++;
2772
2773                if (target_count == image_count) {
2774                    resizeNonScaledImageBoxUpperFrame();
2775                }
2776            });
2777        }
2778    });
2779}
2780
2781function resizeNonScaledImageBoxUpperFrame() {
2782    $.each($('.body > .frm'), function() {
2783        var re = 0;
2784        var image_count = 0;
2785        $.each($(this).find('.box.imgBox'), function() {
2786            re += parseInt($(this).data('diff'));
2787            image_count++;
2788        });
2789
2790        if (image_count > 0 && !isNaN(re)) {
2791            $.each($(this).find('.frm').andSelf(), function () {
2792                if ($(this).height() - re < 0) return;
2793                resetMobileFrameStyle($(this));
2794            });
2795        }
2796    });
2797}
2798
2799function resetMobileFrameStyle($frm) {
2800    $frm.children('.view').children('.tb').css('height', 'auto');
2801}
2802
2803function initRss() {
2804    if ($('.rssBox').length > 0) {
2805        $('.rssBox .rss-area > ul').remove();
2806        $('.rssBox .view').append($('<div class="qv-loader qv-loader-black" style="display: block;"></div>'));
2807
2808        $(window).bind("load",function() {
2809            // jquery.rss.js 동적 호출
2810            $.getScript( "/js/jquery.rss.js", function( data, textStatus, jqxhr ) {
2811                $.each($('.rssBox'), function() {
2812                    var box             = $(this);
2813                    var target          = box.find('.rss-area');
2814                    var rss_url         = target.attr('data-rss-url');
2815                    var limit           = target.attr('data-contents-limit');
2816
2817                    jQuery(function($) {
2818                        target.rss(rss_url, {
2819                            limit: limit,
2820                            dateFormat: 'YYYY-MM-DD kk:mm',
2821                            entryTemplate: '<li><a href="{url}" target="_blank"><span class="rss-title">{title}</span><span class="rss-date">{nicetime}</span><span class="rss-body">{bodyPlain}..</span></a></li>',
2822                            tokens: {
2823                                nicetime: function(entry, tokens) {
2824                                    var createDateTime = new Date(tokens.date).getTime();
2825                                    var currentDateTime = new Date();
2826                                    var compareDateTime = currentDateTime.setDate(currentDateTime.getDate() - 1);
2827                                    if (createDateTime > compareDateTime) {
2828                                        return getNiceTime(createDateTime, new Date(), 1, true);
2829                                    }
2830                                    else {
2831                                        return tokens.date;
2832                                    }
2833                                },
2834                            },
2835                            success: function(data){ box.find('.qv-loader').remove(); },
2836                            error: function(xhr){ box.find('.qv-loader').remove(); },
2837                        })
2838                    })
2839                });
2840            });
2841        });
2842    }
2843}
2844
2845function initLnb() {
2846    if ($('.lnbBox').length > 0) {
2847        var path = QV_BASE_OBJ.spid;
2848        $('.lnb-area .lnb-item[data-spid="' + path + '"]').addClass('active');
2849    }
2850}
2851
2852// 모바일 터치 참고 https://fullcalendar.io/docs/longPressDelay
2853function initCalendar(elements) {
2854    if ($('.calendarBox').length > 0) {
2855        // calendar script 동적 호출
2856        $.getScript( "/js/fullcalendar/moment.min.js", function( data, textStatus, jqxhr ) {
2857            $.getScript( "/js/fullcalendar/fullcalendar.min.js", function( data, textStatus, jqxhr ) {
2858                $.getScript( "/module/calendar/calendar.js", function( data, textStatus, jqxhr ) {
2859                    if (elements) {
2860                        buildCalendar(elements);
2861                    } else {
2862                        $.each($('.calendarBox'), function() {
2863                            buildCalendar(this);
2864                        });
2865                    }
2866                });
2867            });
2868        });
2869    }
2870}
2871
2872function initPageFadeEvent() {
2873    var page_effect = 0;
2874    if (page_effect == 1) {
2875        $('body').addClass('body-fade');
2876        $('.body-fade').delegate('a', 'click', function(e) {
2877            var target = $(this);
2878            var targetUrl = document.activeElement.href;
2879            if (target.attr('class').indexOf('cke') > -1) return;
2880            else if (target.attr('target') == '_blank') return;
2881            else if (target.attr('href') == undefined) return;
2882            else if (target.attr('href').indexOf('#sld') > -1) return;
2883            else if (target.attr('href').indexOf('#tab') > -1) return;
2884            else if (targetUrl === 'javascript:void(0)') return;
2885            else if (targetUrl == undefined) return;
2886            else if (targetUrl.substr(targetUrl.length - 1) == '#') return;
2887            else if (targetUrl != undefined && targetUrl != '') {
2888                e.preventDefault();
2889                $('body').fadeOut( "fast", function() {
2890                    location.href = targetUrl;
2891                });
2892            }
2893        });
2894    }
2895}
2896
2897function initJoinModal() {
2898    $('#main_container').delegate('a[href="/join"]', 'click', function() {
2899        if (NAVER_CLIENT_ID == '' && KAKAO_CLIENT_ID == '' && GOOGLE_CLIENT_ID == '') {
2900            location.href = "/join";
2901            return;
2902        }
2903        else {
2904            $('#JoinModal').modal('show');
2905            return false;
2906        }
2907    });
2908}
2909
2910function initPolicyPrivacyModal() {
2911    $('#main_container').delegate('a[href="/policy_privacy"]', 'click', function() {
2912        if ($('#PolicyPrivacyModal').data('policy')) {
2913            $('#PolicyPrivacyModal').modal('show');
2914        }
2915        else {
2916            qvjax_direct(
2917                "select_terms",
2918                "/module/member/member.php",
2919                '',
2920                function (data) {
2921                    if (data.length > 0) {
2922                        var m = "privacy";
2923                        var text = $.grep(data, function (e) { return e.stms_type == m; })[0].stms_txt;
2924                        $('#policy-privacy-textarea').val(text);
2925                        $('#PolicyPrivacyModal').modal('show');
2926                        $('#PolicyPrivacyModal').data('policy', data);
2927                    }
2928                },
2929                function (xhr) { }
2930            );
2931        }
2932
2933        return false;
2934    });
2935}
2936
2937function removeSiteCopiedElement() { // 복제된 게시판, 폼 삭제처리
2938    $('#main_container .SiteCopiedElement').remove();
2939}
2940
2941function initSnSIconImage() {
2942    $.each($('.sns-icon-image'), function() {
2943        if ($(this).width() < 40) {
2944            var bg = $(this).css('background-image');
2945            if (bg.toLowerCase().indexOf('color-30') > 0 || bg.toLowerCase().indexOf('color-30') > 0) { return; }
2946
2947            if (bg.indexOf('-30') > -1) return;
2948            var convertSmall = bg.replace('Color', 'Color-30').replace('Black', 'Black-30');
2949            $(this).css('background-image', convertSmall);
2950        }
2951    });
2952}
2953
2954function initSliderCallback() {
2955    $.each($('.slider-frm .carousel.slide'), function() {
2956        $(this).bind('slide.bs.carousel', function (e) {
2957            //$(this).find('.qv-ani-ele').toggleClass('qv-ani-ele qv-ani');
2958            $(e.relatedTarget).find('.qv-ani').toggleClass('qv-ani qv-ani-ele');
2959
2960            $.each($(e.relatedTarget).find('.video-iframe'), function() {
2961                var src;
2962                if ($(this).attr('src')) {
2963                    src = $(this).attr('src').split('&timestamp=')[0];
2964                } else if ($(this).attr('data-src')) {
2965                    src = $(this).attr('data-src').split('&timestamp=')[0];
2966                }
2967
2968                if (src) {
2969                    $(this).attr('src', src + '&timestamp=' + new Date().getTime());
2970                }
2971            });
2972        });
2973    });
2974}
2975function initSlider(element) {
2976    /* 2020.03.12 재헌
2977     * 슬라이드 배경 이미지는 초기화 시 미리 불러온다
2978     * 미리 불러오지 않으면 슬라이드 넘길 때 마다 흰 화면이 나타남
2979     */
2980    const target = element ? element : $('.slider-frm')
2981
2982    $.each(target.find('.carousel-inner > .item > .frm'), function() {
2983        var url = $(this).css('background-image');
2984        if (url == 'none' || url.indexOf('url') == -1) return;
2985        else {
2986            var img = new Image();
2987            img.src = url.match(/url\(["']?([^"']*)["']?\)/)[1];
2988        }
2989    });
2990
2991    // carousel 스윕
2992    $.each(target.not('.fullpage').find('.carousel'), function() {
2993        $.each($(this).find('.item'), function(i) {
2994            var active = i == 0 ? ' active' : '';
2995            $(this).attr('class', 'item' + active);
2996        });
2997        $(this).find('.carousel-indicators > li').removeClass('active');
2998        $(this).find('.carousel-indicators > li').first().addClass('active');
2999
3000        $(this).carousel({ swipe: 200 });
3001        $(this).carousel(0);
3002
3003        /* 2020.02.25 재헌
3004         * 자동 넘기기 시간 간격 조정
3005         */
3006        if($(this).attr('data-slider-interval')) {
3007            var slider = $(this);
3008            var interval = parseInt($(this).attr('data-slider-interval'));
3009            interval = interval >= 1000 ? interval : 5000;
3010            var sliderInterval = setInterval(function() {
3011                slider.carousel("next");
3012            }, interval);
3013        }
3014    });
3015}
3016function initFullPageSlider() {
3017    if ($('#main_container > .body > .fullpage').length == 0) return;
3018
3019    $.each($('.slider-frm.fullpage'), function() {
3020        $(this).find('.carousel.slide').carousel(0);
3021        $(this).find('.item').each(function(i, val) {
3022            if (i === 0) {
3023                $(val).addClass('active').removeAttr('style');
3024            } else {
3025                $(val).removeClass('active').attr('style', 'transform: translate3d(0px, 100%, 0px);');
3026            }
3027        })
3028    });
3029
3030    var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
3031    if(!isMobile) {
3032        $('#main_container').delegate('.slider-frm.fullpage', 'mousewheel', function (e, delta) {
3033        //$('.slider-frm.fullpage').on('mousewheel', function (e, delta) {
3034            if (delta == undefined) { // 2019.01.02 delta 값이 undefined로 넘어와서 아래와 같이 처리
3035                if (e.originalEvent.wheelDelta > 0) delta = 1;
3036                else delta = -1;
3037            }
3038
3039            var is_fullpage_scrolling = $(this).attr('data-scrolling') == "true" ? true : false;
3040            if (is_fullpage_scrolling) {
3041                e.preventDefault();
3042                return false;
3043            }
3044            $(this).attr('data-scrolling', true);
3045
3046            var index = $(this).find('.carousel.slide .carousel-inner > .item.active').index() + 1;
3047            var total = $(this).find('.carousel.slide .carousel-inner > .item').length;
3048            var active_item = $(this).find('.carousel.slide .carousel-inner > .item.active');
3049            if (delta == 1) {
3050                if (index == 1) {
3051                    $(this).attr('data-scrolling', false);
3052                    return;
3053                }
3054                $(this).find('.carousel.slide').carousel("prev");
3055
3056                var scrollY = parseInt(this.offsetTop);
3057                $("html, body").animate({scrollTop: scrollY}, 300);
3058
3059                // 2019-05-13 재헌
3060                // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함
3061                active_item.prev().removeAttr('style');
3062                active_item.css('transform', 'translate3d(0, 100%, 0)');
3063            }
3064            else {
3065                if (index == total) {
3066                    $(this).attr('data-scrolling', false);
3067                    return;
3068                }
3069                $(this).find('.carousel.slide').carousel("next");
3070
3071                var scrollY = parseInt(this.offsetTop);
3072                $("html, body").animate({scrollTop: scrollY}, 300);
3073
3074                // 2019-05-13 재헌
3075                // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함
3076                active_item.next().removeAttr('style');
3077                active_item.css('transform', 'translate3d(0, -100%, 0)');
3078            }
3079
3080            return false;
3081        });
3082    }
3083    else {
3084        // touchmove 이벤트 제거. 일부 브라우저에서 스크롤 오동작함 (safari)
3085        $('.slider-frm.fullpage').bind('touchmove', function(e){e.preventDefault()});
3086        $('.slider-frm.fullpage').on('swipedown swipeup', function (e) {
3087            var is_fullpage_scrolling = $(this).attr('data-scrolling') == "true" ? true : false;
3088            if (is_fullpage_scrolling) {
3089                // e.preventDefault();
3090                return false;
3091            }
3092            $(this).attr('data-scrolling', true);
3093
3094            var index = $(this).find('.carousel.slide .carousel-inner > .item.active').index() + 1;
3095            var total = $(this).find('.carousel.slide .carousel-inner > .item').length;
3096            var active_item = $(this).find('.carousel.slide .carousel-inner > .item.active');
3097            if (e.type == "swipedown") {
3098                if (index == 1) {
3099                    if ($(this).prev('.frm').length > 0) { //
3100                        var scrollY = parseInt($(this).prev('.frm').offset().top);
3101                        $("html, body").animate({scrollTop: scrollY}, 200);
3102                    } else {
3103                        $("html, body").animate({scrollTop: 0}, 200);
3104                    }
3105                    $(this).attr('data-scrolling', false);
3106                    return;
3107                }
3108                $(this).find('.carousel.slide').carousel("prev");
3109
3110                var scrollY = parseInt(this.offsetTop);
3111                $("html, body").animate({scrollTop: scrollY}, 300);
3112
3113                // 2019-05-13 재헌
3114                // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함
3115                active_item.prev().removeAttr('style');
3116                active_item.css('transform', 'translate3d(0, 100%, 0)');
3117            }
3118            else {
3119                if (index == total) {
3120                    var scrollY = parseInt(this.offsetTop + $(this).height());
3121                    $("html, body").animate({scrollTop: scrollY}, 200);
3122                    $(this).attr('data-scrolling', false);
3123                    return;
3124                }
3125                $(this).find('.carousel.slide').carousel("next");
3126
3127                var scrollY = parseInt(this.offsetTop);
3128                $("html, body").animate({scrollTop: scrollY}, 300);
3129
3130                // 2019-05-13 재헌
3131                // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함
3132                active_item.next().removeAttr('style');
3133                active_item.css('transform', 'translate3d(0, -100%, 0)');
3134            }
3135
3136            return false;
3137        });
3138    }
3139
3140    // 2019-05-13 재헌
3141    // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함
3142    $('#main_container').on('click', '.fullpage .carousel-indicators > li', function () {
3143        var fullpage = $(this).parents('.fullpage').first();
3144        fullpage.find('.carousel-inner > .item').removeAttr('style');
3145
3146        var selected_item_num = $(this).attr('data-slide-to');
3147        var selected_item = $(fullpage.find('.carousel-inner > .item').get(selected_item_num));
3148
3149        selected_item.prev('.item').css('transform', 'translate3d(0, -100%, 0)');
3150        selected_item.next('.item').css('transform', 'translate3d(0, 100%, 0)');
3151    });
3152
3153    // transition init (ie : left, others : transition)
3154    $.each($('.fullpage .carousel-inner .item'), function() {
3155        $.each($(this).children('.frm'), function(i) {
3156            if (is_InternetExplorer()) {
3157                $(this).css('transform', 'none');
3158                $(this).css('left', parseInt(i * 100) + 'vw');
3159            }
3160            else {
3161                $(this).css('transform', 'translate3d(' + parseInt(i * 100) + 'vw,0,0)');
3162            }
3163            $(this).removeClass('active');
3164        });
3165    });
3166
3167    $('#main_container').on('click', '.fullpage-slide-control', function () {
3168        var item = $(this).parent();
3169        var frames = $(item).children('.frm');
3170        var total_length = frames.length;
3171        var active_frm = frames.filter(function () { return $(this).hasClass('active'); });
3172        if (active_frm.length == 0) { active_frm = frames.first(); }
3173        var index = active_frm.index();
3174
3175        if ($(this).hasClass('left')) {
3176            if (index == 0) {
3177                frames.removeClass('active');
3178                frames.last().addClass('active');
3179                $.each(frames, function (i) {
3180                    var idx = total_length - i - 1;
3181                    if (is_InternetExplorer()) {
3182                        $(this).css('left', '-' + parseInt(idx * 100) + 'vw');
3183                    }
3184                    else {
3185                        $(this).css('transform', 'translate3d(-' + parseInt(idx * 100) + 'vw,0,0)');
3186                    }
3187                });
3188            }
3189            else {
3190                $.each(frames, function (i) {
3191                    var left = (i - index + 1) * 100;
3192                    if (is_InternetExplorer()) {
3193                        $(this).css('left', left + 'vw'); }
3194                    else {
3195                        $(this).css('transform', 'translate3d(' + left + 'vw,0,0)');
3196                    }
3197
3198                    $(this).removeClass('active');
3199                    if (i == index-1) { $(this).addClass('active'); }
3200                });
3201            }
3202        }
3203        else if ($(this).hasClass('right')) {
3204            if (index == total_length - 1) {
3205                frames.removeClass('active');
3206                frames.first().addClass('active');
3207                $.each(frames, function (i) {
3208                    if (is_InternetExplorer()) {
3209                        $(this).css('left', parseInt(i * 100) + 'vw');
3210                    }
3211                    else {
3212                        $(this).css('transform', 'translate3d(' + parseInt(i * 100) + 'vw,0,0)');
3213                    }
3214                });
3215            }
3216            else {
3217                $.each(frames, function (i) {
3218                    var left = (i - index - 1) * 100;
3219                    if (is_InternetExplorer()) {
3220                        $(this).css('left', left + 'vw');
3221                    }
3222                    else {
3223                        $(this).css('transform', 'translate3d(' + left + 'vw,0,0)');
3224                    }
3225                    $(this).removeClass('active');
3226                    if (i == index + 1) { $(this).addClass('active'); }
3227                });
3228            }
3229        }
3230    });
3231
3232    $('.fullpage').find('.carousel.slide').on('slid.bs.carousel', function () {
3233        var slider = $(this).parents('.fullpage');
3234        setTimeout(function () {
3235            $(slider).attr('data-scrolling', false);
3236        }, 550);
3237    });
3238
3239    jQuery.fn.carousel.Constructor.TRANSITION_DURATION = 1000  // 2 seconds
3240}
3241
3242function is_InternetExplorer() {
3243    var agent = navigator.userAgent.toLowerCase();
3244    return (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1);
3245}
3246
3247function initSMS() {
3248    qvjax_direct(
3249        "select_sms_info",
3250        "//" + QV_BASE_OBJ.dev + "g" + QV_BASE_OBJ.svid + "m.quv.kr" + "/qws/aligo.php",
3251        '',
3252        function (data) {
3253            $.each(data, function() {
3254                if (this.smi_state == '1') {
3255                    var hide_icon = '';
3256                    var hide_window = '';
3257
3258                    var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
3259                    if(isMobile) {
3260                        hide_window = 'sms-hide';
3261                    }
3262                    else {
3263                        if (this.smi_init_show == '1') { hide_icon = 'sms-hide'; }
3264                        else { hide_window = 'sms-hide'; }
3265                    }
3266
3267                    var html = '<div id="fixed-contents-sms" class="fixed-contents-layer fixed-contents-show-all" style="bottom: 40px; right: 40px; top: auto; left: auto;" data-axis="se"> <div class="box smsBox"> <div class="preview"></div><div class="view"> <div> <div class="sms-icon ' + hide_icon + '"> <div> <i class="icon-bubbles" aria-hidden="true"></i> </div></div><div class="sms sms-1 ' + hide_window + '"> <div class="sms-header"><span>SMS 문자보내기</span> <div class="sms-close">×</div></div><div class="sms-body"> <div class="sms-message"> <div class="sms-title">메세지</div><textarea></textarea> </div><div class="sms-contact"> <div class="sms-title">연락처</div><input type="text"> <div class="sms-agree"><input type="checkbox"><a href="/policy_privacy">개인정보 수집 및 이용</a>에 동의합니다</div></div></div><div class="sms-footer"> 보내기 </div></div></div><span class="configuration fixed-contents-config-btn" style="top: -18px; bottom: auto;"><a class="label"> <i class="icon-arrow-down"></i></a></span> <div class="fixed-contents-close"><i class="icon-close"></i></div></div></div></div>';
3268                    $('.body').append($(html));
3269
3270                    $('.sms-header > span').text(this.smi_title);
3271                    $('.sms-message > textarea').attr('placeholder', this.smi_placeholder);
3272
3273                    var start = parseInt(this.smi_start_time);
3274                    var end = parseInt(this.smi_end_time);
3275                    end = end == 0 ? 2400 : end;
3276
3277                    var current_hours = new Date().getHours();
3278                    var current_minutes = new Date().getMinutes();
3279                    var current_time = parseInt(current_hours.toString() + current_minutes.toString());
3280
3281                    if (start <= current_time && current_time < end) {
3282                        $('.smsBox').show();
3283                    }
3284                    else {
3285                        $('.smsBox').hide();
3286                        return;
3287                    }
3288
3289                    // sms
3290                    $('.sms-icon').on('click', function() {
3291                        var sms = $(this).parents('.smsBox').first();
3292                        sms.find('.sms-icon').addClass('sms-hide');
3293                        sms.find('.sms').removeClass('sms-hide');
3294                    });
3295
3296                    $('.sms-close').on('click', function() {
3297                        var sms = $(this).parents('.smsBox').first();
3298                        sms.find('.sms').addClass('sms-hide');
3299                        sms.find('.sms-icon').removeClass('sms-hide');
3300                    });
3301
3302                    $('.sms-contact input').on('change keydown paste input', function() {
3303                        var number = $(this).val();
3304                        if (number.length > 20) { $(this).val($(this).val().slice(0,20)); return false; }
3305
3306                        this.value = this.value.replace(/[^0-9\.]/g,'');
3307                    });
3308
3309                    $('.sms-footer').on('click', function() {
3310                        var sms = $(this).parents('.smsBox').first();
3311                        var phone = sms.find('.sms-contact input').val();
3312                        var message = sms.find('.sms-message textarea').val();
3313                        var agree = sms.find('.sms-agree input').prop('checked');
3314
3315                        if (!isValidMobileNumber(phone)) {
3316                            alert(lang.failure_send_sms_invalid_number);
3317                            return;
3318                        }
3319                        if (!agree) {
3320                            alert(lang.agree_privacy_info);
3321                            return;
3322                        }
3323
3324                        qvjax_direct(
3325                            "send",
3326                            "//" + QV_BASE_OBJ.dev + "g" + QV_BASE_OBJ.svid + "m.quv.kr" + "/qws/aligo.php",
3327                            'msg=' + message + '&sender=' + phone,
3328                            function (data) {
3329                                if (data.result_code == "1" && data.message == "success") {
3330                                    smsSendComplete(data.sshid, data.msg_id, data.msg_type, function() {
3331                                        sms.find('.sms-contact input').val('');
3332                                        sms.find('.sms-message textarea').val('');
3333                                        sms.find('.sms-agree input').prop('checked', false);
3334                                        alert(lang.success_send_sms);
3335
3336                                        qv_func.conversion('sms', function() {})
3337                                    });
3338                                }
3339                                else if (data.result_code == "0") {
3340                                    switch(data.message) {
3341                                        case "frequently_called":
3342                                            alert(lang.failure_send_sms_frequently_called);
3343                                            break;
3344                                        case "too_long_message":
3345                                            alert(lang.failure_send_sms_too_long_message);
3346                                            break;
3347                                        case "low_balance":
3348                                            alert(lang.failure_send_sms_low_balance);
3349                                            break;
3350                                        case "invalid_number":
3351                                            alert(lang.failure_send_sms_invalid_number);
3352                                            break;
3353                                        default:
3354                                            alert(lang.failure_send_sms_default);
3355                                            break;
3356                                    }
3357                                }
3358                                else if (data.result_code == '-101') {
3359                                    smsSendFailure(data.sshid, data.result_code, data.message, function() {
3360                                        alert(lang.failure_send_sms_default);
3361                                    });
3362                                }
3363                            },
3364                            function (xhr) { }
3365                        );
3366                    });
3367                }
3368            });
3369        },
3370        function (xhr) { }
3371    );
3372
3373    function smsSendComplete(sshid, msg_id, msg_type, callback) {
3374        var type = msg_type.toLowerCase() == 'sms' ? 'sms' : 'lms';
3375        qvjax_direct(
3376            "complete",
3377            "//" + QV_BASE_OBJ.dev + "g" + QV_BASE_OBJ.svid + "m.quv.kr" + "/qws/aligo.php",
3378            'sshid=' + sshid + '&msg_id=' + msg_id + '&msg_type=' + type,
3379            function (data) {
3380                callback();
3381            },
3382            function (xhr) { }
3383        )
3384    }
3385
3386    function smsSendFailure(sshid, res_code, res_error_msg, callback) {
3387        qvjax_direct(
3388            "failure",
3389            "//" + QV_BASE_OBJ.dev + "g" + QV_BASE_OBJ.svid + "m.quv.kr" + "/qws/aligo.php",
3390            'sshid=' + sshid + '&res_code=' + res_code + '&res_error_msg=' + res_error_msg,
3391            function (data) {
3392                callback();
3393            },
3394            function (xhr) { }
3395        )
3396    }
3397
3398    function isValidMobileNumber(num) {
3399        //if(!num.match(/^\d+$/)) { valid = false; }
3400        var arr_head = ['010','011','016','017','018','019','031','032','041','042','043','051','052','053','054','055','061','062','063','064','070','080',
3401                        '020', '021', '022', '023', '024', '025', '026', '027', '028', '029'];
3402        var head = num.slice(0, 3);
3403        return $.inArray(head, arr_head) > -1 ? true : false;
3404    }
3405}
3406
3407function byteCheck(string){
3408    var utf8length = 0;
3409    for (var n = 0; n < string.length; n++) {
3410        var c = string.charCodeAt(n);
3411        if (c < 128) {
3412            utf8length++;
3413        }
3414        else if((c > 127) && (c < 2048)) {
3415            utf8length = utf8length+2;
3416        }
3417        else {
3418            utf8length = utf8length+3;
3419        }
3420    }
3421    return utf8length;
3422}
3423
3424
3425function initTabFrame() {
3426    // 2019.01.31
3427    $.each($('.tab-frm'), function() {
3428        $(this).find('.tab-frame-nav > ul > li').removeClass('active');
3429        //$(this).find('.tab-frame-nav > ul > li:first-child').addClass('active');
3430        $(this).find('.tab-frame-nav > ul > li:first-child > a').trigger('click');
3431    });
3432
3433    // 2018.09.04 재헌
3434    // URL에 #tab- 형식의 값이 있으면 해당 탭을 활성화한다.
3435    var hash = location.hash;
3436    if (hash != undefined && hash != '') {
3437        if (hash.indexOf('tab-') < 0) { return; }
3438        if ($(hash).length == 0) { return; }
3439
3440        var tab = $('a[href="' + hash + '"]');
3441        var nav = tab.closest('.tab-frame-nav');
3442        $.each(nav.find('li'), function() {
3443            $(this).children('a').attr('aria-expanded', false);
3444            $(this).removeClass('active');
3445        });
3446
3447        tab.attr('aria-expanded', true);
3448        tab.parent().addClass('active');
3449
3450        /* 2021.08.02
3451         * PC, 모바일 따로 구성하여 같은 id가 두 개 이상 있을 때
3452         * 둘 다 active 클래스 영향을 받도록 함
3453         */
3454        $('div[id="' + hash.replace(/#/g, '') + '"]').each(function() {
3455            $(this).siblings().removeClass('active');
3456            $(this).addClass('active');
3457        });
3458        // $(hash).siblings().removeClass('active');
3459        // $(hash).addClass('active');
3460
3461        setTimeout(function(){
3462            $(window).scrollTop(nav.offset().top - $('.header').height());
3463//            $('html, body').animate({
3464//                scrollTop: nav.offset().top - 200
3465//            }, 500);
3466        },500);
3467
3468        /* 2020.03.19 재헌
3469         * 탭을 mobile_ele로 복사하여 넣은 경우 헤더의 탭 앵커가 동작하지 않기 때문에(id가 달라서)
3470         * 이름으로 찾아 활성화한다
3471         */
3472        if (isMobile()) {
3473            var tab_name = tab.first().text();
3474            $.each($('.mobile_ele .tab-frame-nav a'), function() {
3475                if ($(this).text() == tab_name) {
3476                    var id = $(this).attr('href');
3477                    $(this).parent().siblings().removeClass('active');
3478                    $(this).parent().addClass('active');
3479                    $('.mobile_ele ' + id).siblings().removeClass('active');
3480                    $('.mobile_ele ' + id).addClass('active');
3481                }
3482            });
3483        }
3484    }
3485
3486    // 탭 내에 지도가 있으면 렌더링이 정상적으로 안되는 증상이 있음
3487    // 탭 클릭시 지도를 새로 렌더링 하도록 함
3488    $('#main_container').delegate('.tab-frm .tab-frame-nav li > a', 'click', function(e) {
3489        var frm = $(this).parents('.tab-frm').first();
3490        $.each(frm.find('.mapBox'), function() {
3491            var map = $(this);
3492            map.removeClass('map-rendering-complete');
3493            map.find('.qv-map').children().remove();
3494            setTimeout(function() {
3495                renderMapBox(map);
3496            }, 100);
3497        });
3498        $.each(frm.find('.mapListBox'), function() {
3499            var map = $(this);
3500            map.removeClass('map-list-rendering-complete');
3501            map.find('.qv-map-list').children().remove();
3502            setTimeout(function() {
3503                renderMapListBox(map);
3504            }, 100);
3505        });
3506
3507        // 동일 페이지에 같은 아이디의 텝이 두개 이상 존재할 때
3508        var tab_id = $(this).attr('href').replace(/#/g, '');
3509        if ($('.tab-pane[id="' + tab_id + '"]').length > 0) {
3510            e.preventDefault();
3511            //frm.find('.tab-pane.active').removeClass('active');
3512            frm.find('.tab-content').first().children('.tab-pane.active').removeClass('active');
3513            frm.find('.tab-pane[id="' + tab_id + '"]').addClass('active');
3514        }
3515
3516
3517        // 탭 클릭 시 마우스오버 컨텐츠 Initialize
3518        $.each(frm.find('.mouseover-frm'), function() {
3519            var before = $(this).find('.mouseover-before').first();
3520            var after = $(this).find('.mouseover-after').first();
3521            var mouseover_height = before.height() > after.height() ? before.height() : after.height();
3522
3523            if ($(this).height() < mouseover_height) {
3524                var tb = $(this).children('.view').children('.tb');
3525                tb.height(mouseover_height);
3526            }
3527        });
3528
3529        initIframe(frm.find('.iframeBox'));
3530    });
3531}
3532
3533$(window).on('hashchange', function(e) {
3534    var hash = window.location.hash;
3535    var oldUrl = e.originalEvent.oldURL;
3536    var newUrl = e.originalEvent.newURL;
3537
3538    var oldUrl_noHash = oldUrl.indexOf('#') < 0 ? oldUrl : oldUrl.split('#')[0];
3539    var newUrl_noHash = newUrl.indexOf('#') < 0 ? newUrl : newUrl.split('#')[0];
3540
3541    if (hash.indexOf('#tab') > -1 && (oldUrl_noHash == newUrl_noHash)) {
3542        window.location.href = newUrl;
3543        window.location.reload();
3544    }
3545});
3546
3547// 픽스드 컨텐츠 초기화
3548function initFixedContents() {
3549    var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
3550    if(isMobile) {
3551        var fixed = $('body').find('.fixed-contents-layer.fixed-contents-show-mobile');
3552        $.each(fixed, function() {
3553            var top = this.style.top;
3554            var left = this.style.left;
3555            var bottom = this.style.bottom;
3556            var right = this.style.right;
3557            var ratio = 3;
3558
3559            if (top != 'auto') { $(this).css('top', parseFloat(top) / ratio + 'px'); }
3560            if (left != 'auto') { $(this).css('left', parseFloat(left) / ratio + 'px'); }
3561            if (bottom != 'auto') { $(this).css('bottom', parseFloat(bottom) / ratio + 'px'); }
3562            if (right != 'auto') { $(this).css('right', parseFloat(right) / ratio + 'px'); }
3563        });
3564    }
3565
3566    //Click event to scroll to top & bottom
3567    var didScroll = false;
3568    $('body').delegate('.scrollToTop', 'click', function(e) {
3569        if (!didScroll) {
3570            didScroll = true;
3571            $('html, body').stop().animate({scrollTop: 0}, 500, 'swing', function() {didScroll = false;});
3572            return false;
3573        }
3574    });
3575    $('body').delegate('.scrollToBottom', 'click', function(e) {
3576        if (!didScroll) {
3577            didScroll = true;
3578            $('html, body').stop().animate({scrollTop: $('.body').height()}, 500, 'swing', function() {didScroll = false;});
3579            return false;
3580        }
3581    });
3582}
3583// 픽스트 컨텐츠 초기화 끝
3584
3585// Youtube 자동 재생 시작
3586/*
3587 * mute 속성 안주면 자동재생 안됨. 현재 iframe src에 mute=1 속성 부여
3588 * https://stackoverflow.com/questions/40685142/youtube-autoplay-not-working
3589 */
3590
3591/* =========================================================================
3592 * 2026.08 동영상 지연 로드 (썸네일 화질 저하 수정)
3593 *
3594 * iframe이 0x0인 상태에서 src를 주입하면 유튜브가 그 크기 기준으로
3595 * 포스터(썸네일)를 고르고, 이후 커져도 다시 고르지 않아 뭉개진다.
3596 * 따라서 "실제로 보이고 크기가 잡힌 뒤"에만 로드한다.
3597 *
3598 * 이 파일에서 호출하는 이유:
3599 *   script.inc.html 을 include 하는 진입점 12개 중 10개는
3600 *   src 주입 블럭도 onload.inc.html 도 갖고 있지 않다.
3601 *   진입점별로 호출하면 그 10개에서 동영상이 로드되지 않는다.
3602 * ========================================================================= */
3603var qvVideoObserver   = null;
3604var qvVideoPending    = [];
3605var qvVideoLazyInited = false;
3606var qvVideoWatchdogTimer = null;
3607var qvVideoWatchdogTicks = 0;
3608var qvVideoScrollTimer   = null;
3609var QV_VIDEO_WATCHDOG_INTERVAL = 500;   // ms
3610var QV_VIDEO_WATCHDOG_MAX      = 20;    // 500ms * 20 = 최대 10초
3611var QV_VIDEO_ZERO_TICKS_LIMIT  = 2;     // 면적 0 상태가 약 1초 지속되면 포기하고 로드
3612
3613function qvVideoIsRenderable(el) {
3614    var r = el.getBoundingClientRect();
3615    return r.width > 1 && r.height > 1;
3616}
3617
3618// display:none 이면 false (레이아웃 박스 자체가 만들어지지 않는다)
3619function qvVideoIsRendered(el) {
3620    return el.getClientRects().length > 0;
3621}
3622
3623function qvVideoUnobserve(el) {
3624    if (qvVideoObserver) qvVideoObserver.unobserve(el);
3625}
3626
3627// 게이트 없이 실제 로드만 수행 (IntersectionObserver 미지원 폴백에서도 사용)
3628function qvVideoLoad(el) {
3629    if (el.getAttribute('data-qv-activated')) return;
3630    el.setAttribute('data-qv-activated', '1');
3631
3632    if (el.tagName === 'IFRAME') {
3633        var src = el.getAttribute('data-src');
3634        if (!src) return;
3635
3636        // 로딩 마스크를 "활성화 시점"에 삽입한다.
3637        // (기존에는 index.html / onload.inc.html 에서 전량 미리 삽입했다)
3638        $(el).before('<div class="proceeding">' +
3639                     '<div style="z-index: -1;" class="qv-loader qv-loader-black"></div></div>');
3640        $(el).on('load', function() { $(this).siblings('.proceeding').remove(); });
3641        el.setAttribute('src', src);
3642    }
3643    else {
3644        qvCreateYoutubePlayer(el);   // div 플레이스홀더 -> YT.Player
3645    }
3646}
3647
3648// 게이트 통과 시에만 로드. 성공(= 관찰 해제 가능) 시 true
3649function qvVideoActivate(el) {
3650    if (el.getAttribute('data-qv-activated')) return true;
3651    if (!qvVideoIsRenderable(el)) return false;
3652    qvVideoLoad(el);
3653    return true;
3654}
3655
3656function qvVideoObserve(el) {
3657    if (!el || el.getAttribute('data-qv-observed')) return;
3658    el.setAttribute('data-qv-observed', '1');
3659
3660    // IntersectionObserver 미지원(IE11 등) -> 게이트 우회, 기존 동작 그대로
3661    if (!window.IntersectionObserver) { qvVideoLoad(el); return; }
3662
3663    if (!qvVideoObserver) {
3664        qvVideoObserver = new IntersectionObserver(function(entries) {
3665            $.each(entries, function(i, entry) {
3666                if (!entry.isIntersecting) return;   // 등록 직후 false 콜백 포함
3667                if (qvVideoActivate(entry.target)) qvVideoUnobserve(entry.target);
3668            });
3669        }, { rootMargin: '100px' });
3670    }
3671
3672    qvVideoPending.push(el);
3673    qvVideoObserver.observe(el);
3674}
3675
3676/* 감시자
3677 * IntersectionObserver 는 "임계값 교차" 시에만 콜백한다.
3678 * 렌더는 되는데 면적이 0인 요소(예: 부모 폭이 0)는 교차가 성립하지 않아
3679 * isIntersecting 이 영원히 true 가 되지 않는다 -> 영구 대기.
3680 * 그런 요소만 골라 강제 로드한다.
3681 *
3682 * 주의: display:none 인 요소(= 아직 화면에 없는 정상 대기)와,
3683 *       크기가 정상인 요소(= IntersectionObserver 가 처리할 것)는 건드리지 않는다.
3684 *       그렇지 않으면 지연 로드 자체가 무력화된다. */
3685function qvVideoWatchdog() {
3686    qvVideoWatchdogTicks++;
3687
3688    qvVideoPending = $.grep(qvVideoPending, function(el) {
3689        if (el.getAttribute('data-qv-activated')) { qvVideoUnobserve(el); return false; }
3690        if (!qvVideoIsRendered(el))  return true;   // 아직 display:none -> 정상 대기
3691        if (qvVideoIsRenderable(el)) return true;
3691   // 크기 정상 -> IntersectionObserver 담당
3692
3693        var n = (parseInt(el.getAttribute('data-qv-zero-ticks'), 10) || 0) + 1;
3694        el.setAttribute('data-qv-zero-ticks', n);
3695        if (n < QV_VIDEO_ZERO_TICKS_LIMIT) return true;
3696
3697        // 면적 0 인 채로 굳었다 -> 화질을 포기하고 로드한다.
3698        // ("표시됨"이 화질보다 우선이며, 최악의 경우에도 기존 동작보다 나빠지지 않는다)
3699        qvVideoLoad(el);
3700        qvVideoUnobserve(el);
3701        return false;
3702    });
3703
3704    if (!qvVideoPending.length || qvVideoWatchdogTicks >= QV_VIDEO_WATCHDOG_MAX) {
3705        clearInterval(qvVideoWatchdogTimer);
3706        qvVideoWatchdogTimer = null;
3707    }
3708}
3709
3710function qvVideoWatchdogStart() {
3711    qvVideoWatchdogTicks = 0;                       // 이미 돌고 있으면 카운트만 리셋
3712    if (qvVideoWatchdogTimer || !qvVideoPending.length) return;
3713    qvVideoWatchdogTimer = setInterval(qvVideoWatchdog, QV_VIDEO_WATCHDOG_INTERVAL);
3714}
3715
3716function qvVideoWatchdogStartDebounced() {
3717    clearTimeout(qvVideoScrollTimer);
3718    qvVideoScrollTimer = setTimeout(qvVideoWatchdogStart, 300);
3719}
3720
3721// root 인자로 동적 삽입 지점에서 재호출 가능. 중복 호출 안전(멱등)
3722function initVideoLazyLoad(root) {
3723    $(root || document)
3724        .find('iframe.video-iframe[data-src], div.video-iframe[data-src]')
3725        .each(function() { qvVideoObserve(this); });
3726
3727    qvVideoWatchdogStart();
3728
3729    if (qvVideoLazyInited) return;
3730    qvVideoLazyInited = true;
3731    $(window).on('resize orientationchange', qvVideoWatchdogStart);
3732    $(window).on('scroll', qvVideoWatchdogStartDebounced);
3733    $(document).on('shown.bs.tab shown.bs.modal slid.bs.carousel', qvVideoWatchdogStart);
3734}
3735
3736
3737$(window).load(function() {
3738    // 모든 .video-iframe 을 지연 로드 대상으로 등록
3739    initVideoLazyLoad();
3740
3741    /*
3742     * Youtube API 로드
3743     * 2019.03.18 재헌 주석처리
3744     * Youtube API 미사용중. 아래 스크립트 때문에 반복재생이 안되는 문제 발생
3745     */
3746    var tag = document.createElement('script');
3747    tag.src = "https://www.youtube.com/iframe_api";
3748    var firstScriptTag = document.getElementsByTagName('script')[0];
3749    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
3750});
3751
3752// iframe 제거하고 새로운 div 플레이스홀더 생성
3753// iframe이 속한 videoBox를 찾아서, 그 안에 집어넣어주기
3754// 실제 iframe 은 YT.Player 가 이 플레이스홀더를 교체하며 만든다
3755function mobileAutoPlayIframe () {
3756    try {
3757        $('.videoBox').each(function(){
3758            var iframe = $(this).find('.video-iframe')[0];
3759            var vBox   = $(this).find('.view')[0];
3760            // .video-iframe 이나 .view 가 없는 videoBox 에서 루프가 중단되지 않도록 방어
3761            if (!iframe || !vBox) return;
3762
3763            var dataSrc = iframe.getAttribute('data-src') || '';
3764            // vimeo는 해당 로직 필요 없음
3765            if (dataSrc.indexOf('vimeo') > -1) return;
3766            // 기존 아이디 없는 동영상들 놔두기
3767            if (!iframe.id) return;
3768
3769            var placeholder = document.createElement('div');
3770            placeholder.id        = iframe.id;
3771            placeholder.className = 'video-iframe';
3772            placeholder.setAttribute('data-src', dataSrc);
3773
3774            // IE11 은 ChildNode.remove() 미지원. 이 함수는 파싱 시점 최상위에서
3775            // 호출되므로 예외가 나면 이후 최상위 문장이 전부 실행되지 않는다.
3776            if (iframe.parentNode) iframe.parentNode.removeChild(iframe);
3777            vBox.appendChild(placeholder);
3778        });
3779    } catch (e) {
3780        if (window.console && console.error) console.error('mobileAutoPlayIframe', e);
3781    }
3782}
3783mobileAutoPlayIframe()
3784
3785var player_list = [];
3786var qvYoutubeApiReady  = false;
3787var qvPlayerWaitingApi = [];
3788
3789/* playerVars 화이트리스트
3790 * controls / disablekb / fs / showinfo / autohide / wmode / frameborder 는 의도적으로 제외한다.
3791 * 지금까지 YT.Player 가 videoId 만 받아 이 값들이 전부 무시되고 있었으므로,
3792 * 지금 와서 controls=0 을 적용하면 일반 동영상 블럭에서 재생 버튼도 키보드도 못 써
3793 * 방문자가 영상을 재생할 방법이 사라진다. */
3794var QV_PLAYER_VARS_ALLOW = ['autoplay', 'mute', 'loop', 'playlist', 'start', 'end',
3795                            'rel', 'playsinline', 'iv_load_policy', 'modestbranding',
3796                            'cc_load_policy', 'color', 'hl'];
3797
3798// API 준비 완료 - 대기 중이던 것만 생성한다.
3799// (.videoBox 전량 순회는 제거되었다. 등록은 initVideoLazyLoad 가 담당한다)
3800function onYouTubeIframeAPIReady() {
3801    qvYoutubeApiReady = true;
3802    var waiting = qvPlayerWaitingApi;
3803    qvPlayerWaitingApi = [];
3804    $.each(waiting, function(i, el) { qvCreateYoutubePlayer(el); });
3805}
3806
3807function qvCreateYoutubePlayer(el) {
3808    // API 미도착 -> 큐에 넣고 대기
3809    if (!qvYoutubeApiReady || !window.YT || !YT.Player) {
3810        qvPlayerWaitingApi.push(el);
3811        return;
3812    }
3813
3814    var src = el.getAttribute('data-src') || '';
3815    // vimeo는 해당 로직 필요 없음
3816    if (src.indexOf('vimeo') > -1) return;
3817
3818    var videoId = (src.split('embed/')[1] || '').split('?')[0];
3819    if (!videoId) return;
3820
3821    // data-src 의 쿼리 파라미터를 보존한다 (기존에는 videoId 만 넘겨 전부 유실됐다)
3822    var raw = {};
3823    $.each((src.split('?')[1] || '').split('&'), function(i, kv) {
3824        var p = kv.indexOf('=');
3825        if (p < 1) return;                    // 빈 토큰(&&) 및 값 없는 키 제외
3826        raw[kv.slice(0, p)] = kv.slice(p + 1);
3827    });
3828
3829    var playerVars = {};
3830    $.each(QV_PLAYER_VARS_ALLOW, function(i, k) {
3831        if (raw[k] !== undefined) playerVars[k] = raw[k];
3832    });
3833
3834    var isAutoPlay = String(raw.autoplay) === '1';
3835    var isLoop     = String(raw.loop)     === '1';
3836
3837    // 자동재생을 "생성 시점"에 부여 -> 생성 후 src 를 다시 쓰던 2회 로드 제거
3838    if (isAutoPlay) { playerVars.autoplay = 1; playerVars.mute = 1; }
3839    // loop 는 playlist 가 있어야 동작한다. 없으면 자기 자신으로 채운다
3840    if (isLoop && !playerVars.playlist) { playerVars.playlist = videoId; }
3841
3842    var player = new YT.Player(el.id, {
3843        height: "100%",
3844        width: "100%",
3845        videoId: videoId,
3846        playerVars: playerVars,
3847        events: {
3848            // 동영상 로드되면 autoplay 실행
3849            onReady: function() { if (isAutoPlay) player.playVideo(); },
3850            // 재생 끝난 동영상 loop 값 확인하고 다시 재생
3851            onStateChange: function(e) {
3852                if (e.data === YT.PlayerState.ENDED && isLoop) player.playVideo();
3853            }
3854        }
3855    });
3856    player_list.push(player);
3857}
3858// Youtube 자동 재생 끝
3859
3860// SNS 초기화 시작
3861function initSnsFeed() {
3862    //var sns_feed = $("#main_container div[name*='feed']");
3863    var sns_feed = $("#main_container div.sns-feed");
3864    $.each(sns_feed, function(i, val) {
3865        var target = $(val).parents('.box').first();
3866        var feed_token = target.data('feed_token');
3867        var feed_count = target.data('feed_count');
3868        var feed_style = target.data('feed_style');
3869        var feed_column = target.data('feed_column');
3870        var feed_column_m = target.data('feed_column_m');
3871        var feed_height_m = target.data('feed_height_m') == undefined ? $(val).find('.sns-feed-image-layer').height() : target.data('feed_height_m');
3872        var feed_type = target.data('feed_type');
3873        var vBox = $(val).parents('.view').first();
3874
3875        if (feed_type != undefined && feed_token != undefined) {
3876            switch(feed_type) {
3877                case 'twitter':
3878                    renderTwitterFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox);
3879                    break;
3880                case 'instagram':
3881                    renderInstagramFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox);
3882                    break;
3883            }
3884
3885            target.removeAttr('data-feed_token');
3886        }
3887    });
3888}
3889function initInstagramFeed() {
3890    var instagram_feed = $('#main_container div.instagramFeedBox');
3891    $.each(instagram_feed, function(i, val) {
3892        var target = $(this);
3893        var feed_token = target.data('access-token');
3894        var feed_count = target.data('feed-count');
3895        var feed_count_m = target.data('feed-count-m');
3896        var feed_column = target.data('feed-column');
3897        var feed_column_m = target.data('feed-column-m');
3898        var feed_height = target.data('feed-height');
3899        var feed_height_m = target.data('feed-height-m') == undefined ? $(val).find('.sns-feed-image-layer').height() : target.data('feed-height-m');
3900        var feed_margin = target.data('feed-margin');
3901        var vBox = $(val).children('.view').first();
3902
3903        renderInstagramGraphFeed(feed_token, feed_count, feed_column, feed_count_m, feed_column_m, feed_height, feed_height_m, feed_margin, vBox)
3904        target.removeAttr('data-access-token');
3905    });
3906}
3907//(function(d, s, id) {
3908//    var js, fjs = d.getElementsByTagName(s)[0];
3909//    if (d.getElementById(id)) return;
3910//    js = d.createElement(s); js.id = id;
3911//    js.src = 'https://connect.facebook.net/ko_KR/sdk.js#xfbml=1&version=v3.1&appId=786526475012875&autoLogAppEvents=1';
3912//    fjs.parentNode.insertBefore(js, fjs);
3913//}(document, 'script', 'facebook-jssdk'));
3914
3915function initFacebookSDK(d, s, id, c) {
3916    var js, fjs = d.getElementsByTagName(s)[0];
3917    if (d.getElementById(id)) return;
3918    js = d.createElement(s); js.id = id;
3919    js.src = 'https://connect.facebook.net/ko_KR/sdk.js#xfbml=1&version=v3.1&appId=786526475012875&autoLogAppEvents=1';
3920    if (c) { fjs.addEventListener('load', function(e) { c(null, e); }, false); }
3921    fjs.parentNode.insertBefore(js, fjs);
3922}
3923
3924function refreshInstagramAccessToken(access_token, callback) {
3925    qvjax_direct(
3926        "refresh_instagram_access_token",
3927        "/module/sns/instagram.php",
3928        "&access_token=" + access_token,
3929        function(data) {
3930            /* result 0 : 토큰 갱신 필요
3931             * result 1 : 정상
3932             */
3933            if (data.result == 0) {
3934                $.ajax({
3935                    type: "GET",
3936                    url: "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=" + access_token,
3937                    success: function (response) {
3938                        console.log('response', response);
3939                        callback();
3940                    },
3941                    error: function (xhr) {
3942                        console.log('[Instagram]\n토큰 갱신에 실패했습니다.\n관리자에게 문의해주세요.', xhr);
3943                        // if (xhr.responseJSON.error.code === 190) {}
3944                    }
3945                });
3946            } else if (data.result == 1) {
3947                callback();
3948            }
3949        },
3950        function (xhr) {
3951            console.log('xhr', xhr.responseText);
3952            callback();
3953        }
3954    )
3955}
3956
3957function renderInstagramGraphFeed(feed_token, feed_count, feed_column, feed_count_m, feed_column_m, feed_height, feed_height_m, feed_margin, vBox) {
3958    if (!feed_token) return;
3959    refreshInstagramAccessToken(feed_token, function() {
3960        $.ajax({
3961            type: "GET",
3962            url: "https://graph.instagram.com/me/media?fields=id,caption,media_type,media_url,thumbnail_url,timestamp,permalink&access_token=" + feed_token,
3963            success: function (response) {
3964                if (!response.data) return
3965                else if (response.data.length > 0) {
3966                    $(vBox.children('div')[0]).empty();
3967                    var count = isMobile() ? feed_count_m : feed_count;
3968                    for (var i = 0; i < count; i++) {
3969                        var media = response.data[i];
3970                        if (!media) return;
3971
3972                        var thumbnail = media.media_type == "VIDEO" ? media.thumbnail_url : media.media_url;
3973                        var feed = '<div class="sns-feed-box grid-' + feed_column + ' grid-m-' + feed_column_m + '">';
3974                        feed += "<a target='_blank' href='" + media.permalink + "'>";
3975                        feed += "<div class='sns-feed-image-layer m-h-" + feed_height_m + "' style='height:" + feed_height + "px; margin:" + feed_margin + "px;'>";
3976                        feed += '<div class="sns-feed-image" style="background-image: url(' + thumbnail + ');"></div>';
3977                        feed += "<div class='sns-feed-caption-layer qv-font'>";
3978                        if (media.caption !== undefined) {
3979                            if (media.caption.length > 0) {
3980                                var text = media.caption;
3981                                var length = 100;
3982                                var trimmedString = text.length > length ? text.substring(0, length - 3) + "..." : text;
3983                                feed += "<p class='sns-feed-caption-contents'>" + trimmedString + "</p>"
3984                            }
3985                        }
3986                        feed += "<span class='sns-feed-caption-info'>";
3987                        feed += "	<div class='sns-feed-caption-time'>";
3988                        feed += "		<i class='fa fa-calendar-o'></i>";
3989                        feed += getNiceTime(new Date(media.timestamp).getTime(), new Date(), 1, true);
3990                        feed += "	</div>";
3991                        feed += "</span>";
3992                        feed += "</div>";
3993                        feed += "</div>";
3994                        feed += "</a>";
3995                        feed += "</div>";
3996                        $(vBox.children('div')[0]).append(feed);
3997                        $(vBox).find('.sns-feed').show()
3998                    }
3999                }
4000            },
4001            error: function(xhr) {
4002                console.log('[Instagram]\n잘못된 계정이거나 존재하지 않는 계정입니다.\n\n계정정보나 비밀번호가 변경되었다면 다시 한 번 연동해주시기 바랍니다.');
4003                console.log('[Instagram ERROR]', JSON.parse(xhr.responseText).error);
4004                $(vBox).find('.sns-feed').show();
4005            }
4006        });
4007    });
4008}
4009
4010function renderInstagramFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox) {
4011    $.ajax({
4012        type: "GET",
4013        dataType: "jsonp",
4014        cache: false,
4015        url: "https://api.instagram.com/v1/users/self/media/recent/?access_token=" + feed_token + "&count=" + feed_count,
4016        success: function (response) {
4017            if (!response.data) return;
4018            else if (response.data.length > 0) {
4019                $(vBox.children('div')[0]).empty();
4020
4021                for (var i = 0; i < response.data.length; i++) {
4022                    var feed = '<div class="sns-feed-box grid-' + feed_column + ' grid-m-' + feed_column_m + '">';
4023                    feed += "<a target='_blank' href='" + response.data[i].link + "'>";
4024                    feed += "<div class='sns-feed-image-layer m-h-" + feed_height_m + "' style='" + feed_style + "'>";
4025                    feed += '<div class="sns-feed-image" style="background-image: url(' + response.data[i].images.standard_resolution.url + ');"></div>'
4026                    feed += "</div>";
4027                    feed += "<div class='sns-feed-caption-layer qv-font'>";
4028                    if (response.data[i].caption !== null) {
4029
4030                        if (response.data[i].caption.text.length > 0) {
4031                            var text = response.data[i].caption.text;
4032                            var length = 100;
4033                            var trimmedString = text.length > length ? text.substring(0, length - 3) + "..." : text;
4034                            feed += "<p class='sns-feed-caption-contents'>" + trimmedString + "</p>"
4035                        }
4036                    }
4037                    feed += "<span class='sns-feed-caption-info'>";
4038                    feed += "<div class='sns-feed-caption-time'>";
4039                    feed += "<i class='fa fa-calendar-o'></i>";
4040                    feed += getNiceTime(parseInt(response.data[i].created_time) * 1000, new Date(), 1, true);
4041                    feed += "</div>";
4042                    feed += "<div class='sns-feed-caption-likes'>";
4043                    feed += "<i class='fa fa-heart'></i>";
4044                    feed += response.data[i].likes.count;
4045                    feed += "<i class='fa fa-comment'></i>";
4046                    feed += response.data[i].comments.count;
4047                    feed += "</div>";
4048                    feed += "</span>";
4049                    feed += "</div>";
4050                    feed += "</a>";
4051                    feed += "</div>";
4052                    $(vBox.children('div')[0]).append(feed);
4053                }
4054            }
4055
4056            if (response.data.length < feed_count && response.pagination) {
4057                if (!response.pagination.next_url) return;
4058                else {
4059                    renderInstagramFeedMore(
4060                        response.pagination.next_url,
4061                        feed_count - response.data.length,
4062                        feed_column, feed_column_m, feed_height_m, feed_style, vBox);
4063                }
4064            }
4065        }
4066    });
4067}
4068
4069// 특정 이유로 인스타그램 피드를 원하는 개수만큼 불러오지 못했을 때 추가로 API를 호출한다
4070// 저작권이 있는 BGM이 들어간 영상, 재생시간이 1분 이상인 영상 등
4071// https://smashballoon.com/video-posts-are-missing-or-only-show-thumbnail/
4072function renderInstagramFeedMore(feed_url, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox) {
4073    $.ajax({
4074        type: "GET",
4075        dataType: "jsonp",
4076        cache: false,
4077        url: feed_url,
4078        success: function (response) {
4079            if (!response.data) return
4080            else if (response.data.length > 0) {
4081                for (var i = 0; i < feed_count; i++) {
4082                    var feed = '<div class="sns-feed-box grid-' + feed_column + ' grid-m-' + feed_column_m + '">';
4083                    feed += "<a target='_blank' href='" + response.data[i].link + "'>";
4084                    feed += "<div class='sns-feed-image-layer m-h-" + feed_height_m + "' style='" + feed_style + "'>";
4085                    feed += '<div class="sns-feed-image" style="background-image: url(' + response.data[i].images.standard_resolution.url + ');"></div>'
4086                    feed += "</div>";
4087                    feed += "<div class='sns-feed-caption-layer qv-font'>";
4088                    if (response.data[i].caption !== null) {
4089
4090                        if (response.data[i].caption.text.length > 0) {
4091                            var text = response.data[i].caption.text;
4092                            var length = 100;
4093                            var trimmedString = text.length > length ? text.substring(0, length - 3) + "..." : text;
4094                            feed += "<p class='sns-feed-caption-contents'>" + trimmedString + "</p>"
4095                        }
4096                    }
4097                    feed += "<span class='sns-feed-caption-info'>";
4098                    feed += "<div class='sns-feed-caption-time'>";
4099                    feed += "<i class='fa fa-calendar-o'></i>";
4100                    feed += getNiceTime(parseInt(response.data[i].created_time) * 1000, new Date(), 1, true);
4101                    feed += "</div>";
4102                    feed += "<div class='sns-feed-caption-likes'>";
4103                    feed += "<i class='fa fa-heart'></i>";
4104                    feed += response.data[i].likes.count;
4105                    feed += "<i class='fa fa-comment'></i>";
4106                    feed += response.data[i].comments.count;
4107                    feed += "</div>";
4108                    feed += "</span>";
4109                    feed += "</div>";
4110                    feed += "</a>";
4111                    feed += "</div>";
4112                    $(vBox.children('div')[0]).append(feed);
4113                }
4114            }
4115        }
4116    });
4117}
4118
4119function renderTwitterFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style,  vBox) {
4120    $.ajax({
4121        type: "GET",
4122        dataType: "jsonp",
4123        cache: false,
4124        url: location.protocol + '//quv.kr' + "/auth/twitter/tweets_json.php?count=" + feed_count + "&callback=listTweets&screen_name=" + feed_token,
4125        success: function(response) {
4126            if (response.length > 0) {
4127                $(vBox.children('div')[0]).empty();
4128
4129                for (var i = 0; i < response.length; i++) {
4130                    if (typeof response[i].entities.media != 'undefined' && response[i].entities.media.length > 0) {
4131                        var imageUrl = response[i].entities.media[0].media_url_https;
4132                        var link = response[i].entities.media[0].url;
4133                        var feedImageHtml = '<div class="sns-feed-image" style="background-image: url(' + imageUrl + ');"></div>';
4134                    } else {
4135                        var link = 'http://twitter.com/' + response[i].user.screen_name + '/status/' + response[i].id_str;
4136                        var feedImageHtml = '<div class="sns-feed-image"><div><i class="fa fa-twitter"></i></div></div>';
4137                    }
4138
4139                    var feed = '<div class="sns-feed-box grid-' + feed_column + ' grid-m-' + feed_column_m + '">';
4140                    feed += "<a target='_blank' href='" + link + "'>";
4141                    feed += "<div class='sns-feed-image-layer m-h-" + feed_height_m + "' style='" + feed_style + "'>";
4142                    feed += feedImageHtml
4143                    feed += "</div>";
4144                    if (typeof response[i].entities.media != 'undefined' && response[i].entities.media.length > 0) {
4145                        feed += "<div class='sns-feed-caption-layer'>";
4146                    } else {
4147                        feed += "<div class='sns-feed-caption-layer-display'>";
4148                    }
4149
4150                    if (response[i].text.length > 0) {
4151                        var text = response[i].text;
4152                        var length = 100;
4153                        var trimmedString = text.length > length ? text.substring(0, length - 3) + "..." : text;
4154                        feed += "<p class='sns-feed-caption-contents'>" + trimmedString + "</p>"
4155                    }
4156                    feed += "<span class='sns-feed-caption-info'>";
4157                    feed += "	<div class='sns-feed-caption-time'>";
4158                    feed += "		<i class='fa fa-calendar-o'></i>";
4159                    feed += getNiceTime(new Date(Date.parse(response[i].created_at.replace(/( \+)/, ' UTC$1'))), new Date(), 1, true);
4160                    feed += "	</div>";
4161                    feed += "	<div class='sns-feed-caption-likes'>";
4162                    feed += "		<i class='fa fa-heart'></i>";
4163                    feed += response[i].favorite_count;
4164                    feed += "		<i class='fa fa-retweet'></i>";
4165                    feed += response[i].retweet_count;
4166                    feed += "	</div>";
4167                    feed += "</span>";
4168                    feed += "</div>";
4169                    feed += "</a>";
4170                    feed += "</div>";
4171                    $(vBox.children('div')[0]).append(feed);
4172                }
4173            }
4174        }
4175    });
4176}
4177// SNS 초기화 끝
4178
4179
4180
4181// 모바일용 헤더 초기화
4182function initMobileHeader() {
4183    $('.header-mobile-nav-btn').on('click', function() {
4184        $('.header-mobile').addClass('active-side-nav');
4185    });
4186
4187    $('.header-mobile-side-nav-close').on('click', function() {
4188        $('.header-mobile').removeClass('active-side-nav');
4189    });
4190
4191    $('#main_container').delegate('.active-side-nav', 'click', function(e) {
4192        if ($(e.target).hasClass('header-mobile')) {
4193            $('.header-mobile').removeClass('active-side-nav');
4194        }
4195    });
4196
4197    
4198    $('.header-mobile-side-nav, .header-side-nav').delegate('.mn-dropdown', 'click', function(e) {
4199        var parent = $(this).parent();
4200        if (parent.find('ul.sub-mn').length > 0 && !parent.hasClass('active')) {
4201            parent.addClass('active');
4202        }
4203        else {
4204            parent.removeClass('active');
4205        }
4206    });
4207
4208
4209    // 모바일에서 스크롤 할 때 헤더에 scroll클래스 추가
4210    $(window).on('scroll', function(e) {
4211        if ($(this).scrollTop() > 50) {
4212            $('.header-mobile').addClass('scroll');
4213        }
4214        else {
4215            $('.header-mobile').removeClass('scroll');
4216        }
4217
4218        var scrollTop = $(this).scrollTop();
4219        var mobile_header =$('#main_container > .header-mobile > div');
4220        var mobile_header_fixed = $('#main_container > .header-mobile > div[data-scroll-fix="true"]');
4221        if (mobile_header.length != mobile_header_fixed.length) {
4222            $.each($('#main_container > .header-mobile > div[data-scroll-fix="true"]'), function () {
4223                var min = 0;
4224                var max = parseInt($(this).data('top'));
4225                var top = max - scrollTop;
4226                top = top <= min ? min : top;
4227                $(this).css('top', top + 'px');
4228            });
4229        }
4230
4231        // 서브메뉴가 존재할 때 header merge 상태이면
4232        // 스크롤 시 header-mobile-sub-menu 배경 색상을 투명에서 기존 색상으로 변경해주는 작업
4233        $.each($('#main_container > .header-mobile .header-mobile-sub-menu'), function() {
4234            $(this).css('background', $(this).parent().css('background'));
4235        });
4236    });
4237}
4238// 모바일용 헤드 초기화 끝
4239
4240// 스크롤
4241var isScrolling = false;
4242function onScrollBefore() {
4243    if (isScrolling) {
4244        isScrolling = false;
4245        scrollChangeHeaderLogoImage('before');
4246    }
4247}
4248
4249function onScrollAfter() {
4250    if (!isScrolling) {
4251        isScrolling = true;
4252        scrollChangeHeaderLogoImage('after');
4253    }
4254}
4255
4256function scrollChangeHeaderLogoImage(e) {
4257    const logo = $('.header .logoBox .logo-img-core.scroll-change');
4258    if (logo && logo.length > 0) {
4259        const before = logo.attr('data-before');
4260        const after = logo.attr('data-after');
4261        const src = (e === 'before') ? before : after;
4262
4263        if (before && after && src && (logo.attr('src') !== src)) {
4264            logo.attr('src', src);
4265        }
4266    }
4267}
4268
4269function qv_on_scroll(t) {
4270    if(window.pageYOffset<=100){
4271height_sync(".header .header1",100);
4272$("body").addClass("scrollBefore"); $("body").removeClass("scrollAfter");if (typeof onScrollBefore === 'function') { onScrollBefore(); }}
4273if(window.pageYOffset>100){
4274height_sync(".header .header1",95);
4275$("body").removeClass("scrollBefore"); $("body").addClass("scrollAfter");if (typeof onScrollAfter === 'function') { onScrollAfter(); }}
4276}
4277
4278function qv_on_scroll_ie(t) {
4279    if($('body').scrollTop()<=100){
4280height_sync(".header .header1",100);
4281$("body").addClass("scrollBefore"); $("body").removeClass("scrollAfter");}
4282if($('body').scrollTop()>100){
4283height_sync(".header .header1",95);
4284$("body").removeClass("scrollBefore"); $("body").addClass("scrollAfter");}
4285}
4286
4287function height_sync(e,hei){ //fixed_scroll_js에서 사용
4288    // 2018.10.12 재헌
4289    // IE 에서 속도 이슈가 발생해 아래와 같이 조건 추가
4290    // hei 값이 변해야 style 수정하도록 함
4291    // if($(e).length>0) {
4292    if($(e).length>0 && $(e).height() != hei) {
4293        $(e).height(hei);  //hide의 경우에도 애니메이팅 효과를 위해, height를 0으로 설정
4294        $.each($(e).find(".hsync"), function() {
4295            if ($(this).parents('.header-side-nav').length > 0) { return; } // header-side-nav 하위 ul은 높이 수정하지 않아야 함
4296            $(this).height(hei);
4297            $(this).css("line-height", hei + "px");
4298        });
4299        $(e).find(".hsync-nlh").height(hei);
4300        $(e).find(".header-contents").height(hei);
4301        $(e).find(".img-view").height(hei);
4302        $(e).find(".img-core").css('max-height',hei+"px");
4303        $(e).find(".img-op").css('max-height',hei+"px");
4304        $(e).find(".logoBox .logo-img-core").css('max-height',hei+"px");
4305
4306        if(hei<1){
4307            $(e).find(".header-contents").hide();
4308        }else{
4309            $(e).find(".header-contents").show();
4310        }
4311    }
4312}
4313
4314function get_hd_obj(){
4315    var obj_hd= {};
4316    $(".header [class^=header]").each(function(){
4317        var header_class=$(this).attr('class');
4318        var cm;
4319        if(_cm=header_class.match(/(header)(\d+)(\s+)?$/)) {
4320            var hdn=parseInt(_cm[2]);
4321            obj_hd[hdn]=$(this).data('hei')+","+$(this).data('scr-hei');
4322        }
4323    });
4324    return obj_hd;
4325}
4326
4327function showPopup(popup_id) {
4328    qvjax_direct(
4329        "get_popup_only_json",
4330        "/module/site/site.php",
4331        'stid=' + QV_BASE_OBJ.stid,
4332        function (data) {
4333            if (data.length > 0) {
4334                var popup_obj = $.grep(data, function(e) { return e.key == popup_id  });
4335                if (popup_obj.length > 0) {
4336                    $('.dynamic-popup-container').remove();
4337                    $('#main_container').append('<div class="dynamic-popup-container"></div>');
4338
4339                    var popup = $(popup_obj[0].contents).clone();
4340                    popup.attr('id', popup_id);
4341
4342                    $(popup).removeClass('body');
4343                    $(popup).removeClass('popup-editor');
4344                    $(popup).addClass('popup');
4345                    $('#main_container .dynamic-popup-container').append($(popup));
4346                }
4347
4348                $('.popup-frame-header-close').click(function() {
4349                    var popup = $(this).parents('.popup');
4350                    popup.remove();
4351
4352                    if ($('.dynamic-popup-container').children().length <= 0) {
4353                        $('.dynamic-popup-container').remove();
4354                    }
4355                });
4356
4357                $('.popup-frame-footer-todayclose').click(function() {
4358                    var popup = $(this).parents('.popup');
4359                    popup.remove();
4360
4361                    if ($('.dynamic-popup-container').children().length <= 0) {
4362                        $('.dynamic-popup-container').remove();
4363                    }
4364
4365                    setCookie(popup.attr('id'), 1, 1);
4366                });
4367
4368                $.each($('#main_container .dynamic-popup-container .video-iframe, #main_container .popup-container .video-iframe'), function() {
4369                    var url = $(this).attr('data-src');
4370                    $(this).attr('src', url);
4371                });
4372
4373
4374
4375                if ($(popup).find('.formBox').length > 0) {
4376                    form_initialize();
4377                }
4378                if ($(popup).find('.mapBox').length > 0) {
4379                    initMapBox($(popup).find('.mapBox'));
4380                }
4381                if ($(popup).find('.gridBox').length > 0) {
4382                    initGrid($(popup).find('.gridBox'));
4383                }
4384                if ($(popup).find('.ddayBox').length > 0) {
4385                    initDday($(popup).find('.ddayBox'))
4386
4387                    let isCountdown = false
4388                    $(popup).find('.dday-area-countdown').each(function () {
4389                        if ($(this).css('display') === 'block') {
4390                            isCountdown = true
4391                            return false
4392                        }
4393                    })
4394                    if (isCountdown) initCountDown()
4395                }
4396                if ($(popup).find('.calendarBox').length > 0) {
4397                    initCalendar($(popup).find('.calendarBox'));
4398                }
4399                if ($(popup).find('.frm[href], .box[href]')) {
4400                    initFrameLink($(popup).find('.frm[href], .box[href]'));
4401                }
4402                if ($(popup).find('.slider-frm').length > 0) {
4403                    initSlider($(popup).find('.slider-frm'));
4404                }
4405            }
4406        },
4407        function (xhr) {}
4408    );
4409}
4410
4411function initPopup() {
4412    // 페이지에서만 띄움.header1
4413    // if (location.pathname.length > 1) { return; }
4414    // 게시판 읽기/쓰기 때는 안띄움
4415    if (location.pathname.indexOf('/module/board/') > -1) return;
4416    qvjax_direct(
4417        "get_menu_json",
4418        "/module/site/site.php",
4419        'stid=' + QV_BASE_OBJ.stid,
4420        function (data) {
4421            if (data.length > 0) {
4422                var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
4423
4424                var popup_grep = $.grep(data, function(e) { return e.key == QV_BASE_OBJ.spid  });
4425                if (popup_grep.length == 0) return;
4426
4427                var popup_list = popup_grep[0].popup;
4428                var popup_array = popup_list.split(',');
4429                $('#main_container').append('<div class="popup-container"></div>');
4430                $.each(popup_array, function() {
4431                    var popup_spid = this;
4432                    var popup_obj = $.grep(data, function(e) { return e.key == popup_spid && e.type == "popup"; });
4433                    if (popup_obj.length > 0) {
4434                        var popup = $(popup_obj[0].contents).clone();
4435                        popup.attr('id', popup_spid);
4436
4437                        if (getCookie(popup.attr('id')) == 1) {
4438                            return true;
4439                        }
4440
4441                        var start = popup.data('start');
4442                        var end = popup.data('end');
4443                        if (start > 0 && end > 0) {
4444                            if (start > $.now()) return;
4445                            if (end < $.now()) return;
4446                        }
4447
4448                        $(popup).removeClass('body');
4449                        $(popup).removeClass('popup-editor');
4450                        $(popup).addClass('popup');
4451
4452                        if (isMobile &&  $(popup).hasClass('popup-display-pc')
4453                        || !isMobile &&  $(popup).hasClass('popup-display-mobile')) return;
4454
4455                        // popup 다국어처리
4456                        if (LANG && LANG != 'ko') {
4457                            var close = $(popup).find('.popup-frame-header-close');
4458                            if (close.text().indexOf('닫기') > -1) {
4459                                close.html(lang.close + ' <i class="material-icons" style="font-size: 13px;">clear</i>');
4460                            }
4461
4462                            var todayclose = $(popup).find('.popup-frame-footer-todayclose');
4463                            todayclose.text(lang.today_close);
4464                        }
4465
4466                        $('#main_container .popup-container').append($(popup));
4467
4468                        if ($(popup).find('.mapBox').length > 0) {
4469                            initMapBox($(popup).find('.mapBox'));
4470                        }
4471
4472                        if ($(popup).find('.ddayBox').length > 0) {
4473                            initDday($(popup).find('.ddayBox'))
4474
4475                            let isCountdown = false
4476                            $(popup).find('.dday-area-countdown').each(function () {
4477                                if ($(this).css('display') === 'block') {
4478                                    isCountdown = true
4479                                    return false
4480                                }
4481                            })
4482                            if (isCountdown) initCountDown()
4483                        }
4484
4485                        if ($(popup).find('.calendarBox').length > 0) {
4486                            initCalendar($(popup).find('.calendarBox'));
4487                        }
4488
4489                        if ($(popup).find('.frm[href], .box[href]')) {
4490                            initFrameLink($(popup).find('.frm[href], .box[href]'));
4491                        }
4492                        if ($(popup).find('.slider-frm').length > 0) {
4493                            initSlider($(popup).find('.slider-frm'));
4494                        }
4495                    }
4496                });
4497
4498                $.each($('#main_container .dynamic-popup-container .video-iframe, #main_container .popup-container .video-iframe'), function() {
4499                    var url = $(this).attr('data-src');
4500                    $(this).attr('src', url);
4501                });
4502
4503                if(isMobile) { }
4504                else {
4505                    // 드래그는 pc에서만 되도록 함
4506                    $('.popup').draggable({
4507                        handle: ".popup-frame-header, .popup-frame-footer",
4508                        start: function( event, ui ) {
4509                            // 새로 리뉴얼된(margin x) 팝업에만 적용
4510                            if (parseInt(ui.helper.css('margin-left')) == 0) {
4511                                // 드래그할 때 bottom이 0이면 비정상적으로 동작하여 auto로 지정
4512                                ui.helper.css({right: 'auto', bottom: 'auto'});
4513                            }
4514                        }
4515                    });
4516                }
4517
4518                $('.popup-frame-header-close').click(function() {
4519                    var popup = $(this).parents('.popup');
4520                    popup.remove();
4521
4522                    if ($('.popup-container').children().length <= 0) {
4523                        $('.popup-container').remove();
4524                    }
4525                });
4526
4527                $('.popup-frame-footer-todayclose').click(function() {
4528                    var popup = $(this).parents('.popup');
4529                    popup.remove();
4530
4531                    if ($('.popup-container').children().length <= 0) {
4532                        $('.popup-container').remove();
4533                    }
4534
4535                    setCookie(popup.attr('id'), 1, 1);
4536                });
4537            }
4538
4539            if ($('.popup-container').children().length <= 0) {
4540                $('.popup-container').remove();
4541            }
4542
4543        },
4544        function (xhr) { }
4545    );
4546}
4547
4548function initHeader9(){
4549    if (getCookie("header9_closed") == 1) {
4550        $(".header .header9").hide(); //hide banner
4551        $("body.live").addClass("header9_closed");
4552    }
4553
4554    var $top_frm=$("#main_container .body > .frm:not(.mobile_ele)").first();
4555    if($top_frm.hasClass("headerSectionMerge")){
4556        $("body").addClass("headerSectionMerge");
4557        $("body").addClass("scrollBefore");
4558    }
4559
4560    if($("body .header").hasClass("useFixed") && !$top_frm.hasClass("headerSectionMerge")){
4561        var body_mg_t=$(".body").css("margin-top")?$(".body").css("margin-top").replace("px",""):0;
4562        if(body_mg_t>0){
4563            var top_frm_mg_t=$top_frm.css("margin-top")?$top_frm.css("margin-top").replace("px",""):0;
4564            if(top_frm_mg_t>0){
4565                var cal_top_frm_mg_t=parseInt(body_mg_t)+parseInt(top_frm_mg_t);
4566                $top_frm.css("margin-top",cal_top_frm_mg_t+"px");
4567                // console.log("top_frm mg-t:"+cal_top_frm_mg_t);
4568            }
4569        }
4570    }
4571}
4572
4573function realignHeader9(){
4574
4575    var $top_frm=$("#main_container .body > .frm:not(.mobile_ele)").first();
4576
4577    if($("body .header").hasClass("useFixed") && !$top_frm.hasClass("headerSectionMerge")){
4578        var body_mg_t=$(".body").css("margin-top")?$(".body").css("margin-top").replace("px",""):0;
4579        if(body_mg_t>0){
4580            $top_frm.css("margin-top",$("body .header").height()+"px");
4581        }
4582    }
4583}
4584
4585function initMenu(){
4586    var query = qv_func.getUrlParams();
4587    if (location.pathname.indexOf('/module/board/read_form') > -1 && query.pn) {
4588        $(".header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link").each(function(i,t){
4589            if($(t).attr('href')=="/" + query.pn){
4590                $(t).parent().addClass("cur-mn-item");
4591            }
4592        });
4593    } else {
4594        $(".header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link").each(function(i,t){
4595            if($(t).attr('href')=="/home"){
4596                $(t).parent().addClass("cur-mn-item");
4597            }
4598        });
4599    }
4600
4601    //$(".header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link").each(function(i,t){
4602    //    if($(t).attr('href')=="///"){
4603    //        $(t).parent().addClass("cur-mn-item");
4604    //    }
4605    //});
4606}
4607
4608// 쿠키 생성
4609function setCookie(cName, cValue, cDay){
4610    var expire = new Date();
4611    expire.setDate(expire.getDate() + cDay);
4612    cookies = cName + '=' + escape(cValue) + '; path=/ '; // 한글 깨짐을 막기위해 escape(cValue)를 합니다.
4613    if(typeof cDay != 'undefined') cookies += ';expires=' + expire.toGMTString() + ';';
4614    document.cookie = cookies;
4615}
4616
4617// 쿠키 가져오기
4618function getCookie(cName) {
4619    cName = cName + '=';
4620    var cookieData = document.cookie;
4621    var start = cookieData.indexOf(cName);
4622    var cValue = '';
4623    if(start != -1){
4624        start += cName.length;
4625        var end = cookieData.indexOf(';', start);
4626        if(end == -1)end = cookieData.length;
4627        cValue = cookieData.substring(start, end);
4628    }
4629    return unescape(cValue);
4630}
4631
4632$('.body').delegate('.fixed-contents-close', 'click', function(e) {
4633    $(this).parents('.fixed-contents-layer').first().remove();
4634});
4635
4636//10.8 MAP 임시 패치
4637
4638</script>
vendor: 2 bytes, line 4638
4638
4639<script type='text/javascript' src="/js/animate.js?v=260904"></script>
vendor: 2 bytes, line 4639
4639
4640<script type="text/javascript" src="/module/member/member.js?v=260904"></script>
4640
4641
4642<script type="text/javascript" src="/module/board/board_read_form.js?v=260904"></script>
vendor: 2 bytes, line 4642
4642
4643<script type="text/javascript" src="/module/map/map.js?v=260904"></script>
4643
4644
4645    
4645<script type='text/javascript' src="/module/form/form.js?v=260904"></script>
4645
4646    
4646<script type="text/javascript" src="/module/board/board_write_form.js?v=260904"></script>
4646
4647    
4647<script type="text/javascript" src="/module/board/board.js?v=260904"></script>
4647
4648
4649<div id="youtube-autoplay" style="display:none;" onclick="playVideo()"></div>
4650
4651<!-- 게시판 패스워드 확인 모달 -->
4652<div class="modal in-editor-modal fade" id="ReadPasswordCheckModal" tabindex="-1" role="dialog">
4653    <div class="modal-dialog modal-bx">
4654        <div class="modal-content">
4655            <div class="modal-body">
4656                <div class="modal-body-title">
4657                    Confirm Password                </div>
4658                <div class="modal-body-contents">
4659                    <input type="password" id="ReadPasswordCheck" placeholder="" autocomplete="off"><button type="button" class="btn btn-default" id="ReadPasswordCheckModalBtnSave" auto>OK</button>
4660                </div>
4661            </div>
4662        </div>
4663    </div>
4664</div>
4665
4666<!-- 개인정보처리방침 모달 -->
4667<div class="modal in-editor-modal fade" id="PolicyPrivacyModal" tabindex="-1" role="dialog">
4668    <div class="modal-dialog modal-bx">
4669        <div class="modal-content">
4670            <div class="modal-body">
4671                <div type="button" class="close" data-dismiss="modal"></div>
4672                <div class="modal-body-title">
4673                    Privacy Policy                </div>
4674                <div class="modal-body-contents">
4675                    <textarea id="policy-privacy-textarea" readonly></textarea>
4676                </div>
4677            </div>
4678        </div>
4679    </div>
4680</div>
4681
4682<!-- 갤러리 이미지 모달 -->
4683<div id="gallery_board_image_modal" class="gallery-board-image-modal">
4684    <img class="gallery-board-modal-content" id="gallery-board-img01">
4685    <div class="gallery-board-modal-overlay"></div>
4686    <span id="gallery_board_cancel" class="close">&times;</span>
4687    <div class="gallery-board-magnifier">
4688        <div class="gallery-board-magnifier-add">
4689            <i class="icon-magnifier-add"></i>
4690        </div>
4691        <div class="gallery-board-magnifier-remove">
4692            <i class="icon-magnifier-remove"></i>
4693        </div>
4694        <div class="gallery-board-magnifier-original-size">
4695            <i class="fa fa-clone"></i>
4696            <div>Original</div>
4697        </div>
4698    </div>
4699    <div class="gallery-board-modal-right">
4700        <i class="fa fa-chevron-right"></i>
4701    </div>
4702    <div class="gallery-board-modal-left">
4703        <i class="fa fa-chevron-left"></i>
4704    </div>
4705    <div class="gallery-board-modal-download"><i class="icon-paper-clip" aria-hidden="true"></i></div>
4706</div>
4707
4708<div class="modal in-editor-modal fade" id="CalendarScheduleViewModal" tabindex="-1" role="dialog">
4709    <div class="modal-dialog modal-bx">
4710        <div class="modal-content">
4711            <div class="modal-body">
4712                <div type="button" class="close" data-dismiss="modal"><span>×</span></div>
4713                <div class="modal-body-title">
4714                    <i class="icon-calendar" aria-hidden="true"></i>
4715                    <span>TEST TITLE</span>
4716                </div>
4717                <div class="modal-body-contents">
4718                    <div>
4719                        <div class="calendar-schedule-view-category">
4720                            <div class="calendar-schedule-view-category-color"></div>
4721                            <div class="calendar-schedule-view-category-name"></div>
4722                        </div>
4723                        <div class="calendar-schedule-view-start-datetime">2019.01.10 14:00</div>
4724                        <div class="calendar-schedule-view-end-datetime">2019.01.30 15:00</div>
4725                    </div>
4726                    <div>
4727                        <div class="calendar-schedule-view-content">
4728                            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
4729                        </div>
4730                    </div>
4731                </div>
4732                <div class="modal-body-option">
4733                    <div class="modal-body-option-update">Edit</div>
4734                    <div class="modal-body-option-delete">Delete</div>
4735                </div>
4736            </div>
4737        </div>
4738    </div>
4739</div>
4740
4741<!-- 캘린더 모달 -->
4742<div class="modal in-editor-modal fade" id="CalendarScheduleModal" tabindex="-1" role="dialog">
4743    <div class="modal-dialog modal-bx">
4744        <div class="modal-content">
4745            <div class="modal-body">
4746                <div id="hdCalendarBxData"></div>
4747                <div type="button" class="close" data-dismiss="modal"><span>×</span></div>
4748                <div class="modal-body-title">
4749                    <i class="icon-calendar" aria-hidden="true"></i>
4750                    Create Schedule                </div>
4751                <div class="modal-body-contents">
4752                    <table class="calendar-schedule-datetime">
4753                        <thead>
4754                            <tr>
4755                                <th>Start Date</th>
4756                                <th>End Date</th>
4757                            </tr>
4758                        </thead>
4759                        <tbody>
4760                            <tr>
4761                                <td>
4762                                    <input type="text" class="calendar-schedule-start-date calendar-datepicker" name="calendar-schedule-start-date">
4763                                    <input type="text" class="calendar-schedule-start-time calendar-timepicker" name="calendar-schedule-start-time">
4764                                </td>
4765                                <td>
4766                                    <input type="text" class="calendar-schedule-end-date calendar-datepicker" name="calendar-schedule-end-date">
4767                                    <input type="text" class="calendar-schedule-end-time calendar-timepicker" name="calendar-schedule-end-time">
4768                                </td>
4769                            </tr>
4770                        </tbody>
4771                    </table>
4772                    <div class="calendar-schedule-datetime-everytime-check">
4773                        <label class="checkbox-inline">
4774                            <input type="checkbox" class="calendar-schedule-datetime-everytime" name="" id="calendar-schedule-datetime-everytime" value="1" checked>All Day                        </label>
4775                    </div>
4776
4777                    <div>
4778                        <input type="text" class="calendar-schedule-subject" placeholder="Subject">
4779                    </div>
4780                    <div>
4781                        <textarea class="calendar-schedule-content" placeholder="Content"></textarea>
4782                    </div>
4783                </div>
4784                <div class="calendar-schedule-confirm">Create Schedule</div>
4785            </div>
4786        </div>
4787        <div class="calendar-schedule-category"></div>
4788        <div class="calendar-schedule-category-list">
4789            <ul>
4790            </ul>
4791        </div>
4792    </div>
4793</div>
4794
4795
4796<script type="text/javascript">
4797    $("#gallery_board_cancel").click(function () {
4798        $('#gallery_board_image_modal').hide();
4799        $('body').removeClass('modal-open');
4800    });
4801
4802    var viewGalleryBoardImage;
4803    function viewGalleryBoardImageFullSize(obj) {
4804        var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
4805
4806        if ($(obj).find('div.gallery-board-image').length > 0) {
4807            var link = $(obj).parent().data('link');
4808            var target = $(obj).parent().data('target');
4809        }
4810        else {
4811            var link = $(obj).data('link');
4812            var target = $(obj).data('target');
4813        }
4814
4815        if (link == undefined || link == '') { // gallery-board-box data에 link값이 없으면 full size modal을 띄움
4816            $('body').addClass('modal-open');
4817            $('#gallery-board-img01').fadeOut(0, 'linear');
4818
4819            var modal = document.getElementById('gallery_board_image_modal');
4820            var modalImg = document.getElementById("gallery-board-img01");
4821
4822            $('.gallery-board-modal-right').show();
4823            $('.gallery-board-modal-left').show();
4824
4825            if ($(obj).find('.gallery-board-image')[0].tagName == 'IMG') {
4826                var bg = $(obj).find('.gallery-board-image')[0].src;
4827            }
4828            else {
4829                var bg = $(obj).find('.gallery-board-image').css('background-image');
4830                bg = bg.replace('url(', '').replace(')', '').replace(/\"/gi, "");
4831            }
4832            bg = bg.replace(/_800/g, '_1920');
4833            modalImg.src = bg;
4834            modalImg.onload = function() {
4835                $('#gallery-board-img01').fadeIn(120, 'linear');
4836                initGalleryBoardImageModal(modalImg);
4837            };
4838
4839            viewGalleryBoardImage = [];
4840            $(obj).parents('.gallery-board').first().find('.gallery-board-image').each(function (i, val) {
4841                if ($(val)[0].tagName == 'IMG') {
4842                    var bg = $(val)[0].src
4843                }
4844                else {
4845                    var bg = $(val).css('background-image');
4846                    bg = bg.replace('url(', '').replace(')', '').replace(/\"/gi, "");
4847                }
4848                bg = bg.replace(/_800/g, '_1920');
4849                viewGalleryBoardImage.push({'index':i, 'bg':bg});
4850
4851                if ($(val).is($(obj).find('.gallery-board-image'))) {
4852                    $('#gallery_board_image_modal').data('index', i);
4853                }
4854            });
4855
4856            var allowDownload = $(obj).parents('.galleryBox').first().attr('data-allow-download');
4857            var downloadClip = $('#gallery_board_image_modal .gallery-board-modal-download');
4858            if (allowDownload == 'false') {
4859                downloadClip.hide();
4860            }
4861            else {
4862                downloadClip[0].style.removeProperty('display');
4863            }
4864
4865            modal.style.display = "flex";
4866            $(modalImg).removeClass(function (index, className) {
4867                return (className.match (/(^|\s)size-x-\S+/g) || []).join(' ');
4868            });
4869        }
4870        else if (link == 'none') { // none이면 아무 행동도 하지않음
4871            return;
4872        }
4873        else { // gallery-board-box data에 link값이 존재하면 해당 link로 이동
4874            if (!isMobile && (link.indexOf('tel:') > -1 || link.indexOf('sms:') > -1)) {
4875                return; // tel, sms 링크는 모바일에서만
4876            }
4877            //if (link.indexOf('link:') > -1 || link.indexOf('sms:') > -1) { return; }
4878
4879            if (target == 'blank') {
4880                window.open(link);
4881            }
4882            else {
4883                if ($(obj).hasClass('scrollToTop') || $(obj).hasClass('scrollToBottom')) { }
4884                else {
4885                    location.href = link;
4886                }
4887            }
4888
4889            return false;
4890        }
4891    }
4892
4893
4894    function viewImageFullSize(obj) {
4895        $('body').addClass('modal-open');
4896        $('#gallery-board-img01').fadeOut(0, 'linear');
4897
4898        var modal = document.getElementById('gallery_board_image_modal');
4899        var modalImg = document.getElementById("gallery-board-img01");
4900
4901        $('.gallery-board-modal-right').hide();
4902        $('.gallery-board-modal-left').hide();
4903
4904        var bg = $(obj).find('.img-core').css('background-image');
4905        bg = bg.replace('url(', '').replace(')', '').replace(/\"/gi, "");
4906
4907        bg = bg.replace(/_800/g, '_1920');
4908        modalImg.src = bg;
4909        modalImg.onload = function() {
4910            $('#gallery-board-img01').fadeIn(120, 'linear');
4911        };
4912
4913        modal.style.display = "flex";
4914    }
4915
4916    function initGalleryBoardImageModal(img) {
4917        if ($('.gallery-board-modal-content').hasClass('size-original')) {
4918            $(img).css('top', 0);
4919            $(img).css('bottom', 'auto');
4920            $(img).css('left', 'auto');
4921
4922        }
4923
4924        if ((isMobile() && window.innerWidth / img.naturalWidth * img.naturalHeight > window.innerHeight) || // 모바일에서는 비율로 확인한다
4925            (!isMobile() && img.naturalHeight > window.innerHeight)) {
4926            $('.gallery-board-magnifier-original-size').show();
4927        }
4928        else {
4929            $('.gallery-board-magnifier-original-size').hide();
4930            $('.gallery-board-modal-content').removeClass('size-original');
4931            $(img).css('left', 'auto');
4932        }
4933    }
4934
4935    $('#gallery_board_image_modal').delegate(".gallery-board-modal-right", "click", function (e) {
4936        if (viewGalleryBoardImage != undefined) {
4937            $('#gallery-board-img01').fadeOut(150, 'linear', function() {
4938                var index = parseInt($('#gallery_board_image_modal').data('index')) + 1;
4939
4940                var modalImg = document.getElementById("gallery-board-img01");
4941                if (index == viewGalleryBoardImage.length) {
4942                    var val = $.grep(viewGalleryBoardImage, function(e) { return e.index == 0 })[0];
4943                    modalImg.src = val.bg;
4944                    modalImg.onload = function() {
4945                        $('#gallery-board-img01').fadeIn(120, 'linear');
4946                        initGalleryBoardImageModal(modalImg);
4947                    };
4948
4949                    $('#gallery_board_image_modal').data('index', 0);
4950                }
4951                else {
4952                    var val = $.grep(viewGalleryBoardImage, function(e) { return e.index == index })[0];
4953                    modalImg.src = val.bg;
4954                    modalImg.onload = function() {
4955                        $('#gallery-board-img01').fadeIn(120, 'linear');
4956                        initGalleryBoardImageModal(modalImg);
4957                    };
4958
4959                    $('#gallery_board_image_modal').data('index', index);
4960                }
4961            });
4962        }
4963    });
4964    $('#gallery_board_image_modal').delegate(".gallery-board-modal-left", "click", function (e) {
4965        if (viewGalleryBoardImage != undefined) {
4966            $('#gallery-board-img01').fadeOut(150, 'linear', function() {
4967                var index = parseInt($('#gallery_board_image_modal').data('index')) - 1;
4968
4969                var modalImg = document.getElementById("gallery-board-img01");
4970                if (index == -1) {
4971                    var val = $.grep(viewGalleryBoardImage, function (e) { return e.index == viewGalleryBoardImage.length - 1 })[0];
4972                    modalImg.src = val.bg;
4973                    modalImg.onload = function() {
4974                        $('#gallery-board-img01').fadeIn(120, 'linear');
4975                        initGalleryBoardImageModal(modalImg);
4976                    };
4977
4978                    $('#gallery_board_image_modal').data('index', viewGalleryBoardImage.length - 1);
4979                }
4980                else {
4981                    var val = $.grep(viewGalleryBoardImage, function (e) { return e.index == index})[0];
4982                    modalImg.src = val.bg;
4983                    modalImg.onload = function() {
4984                        $('#gallery-board-img01').fadeIn(120, 'linear');
4985                        initGalleryBoardImageModal(modalImg);
4986                    };
4987
4988                    $('#gallery_board_image_modal').data('index', index);
4989                }
4990            });
4991        }
4992    });
4993    $('#gallery_board_image_modal').delegate('.gallery-board-modal-overlay', 'dblclick', function() {
4994        var image = $(this).siblings('.gallery-board-modal-content');
4995        if (image.attr('class').indexOf('size-x-') > 0) {
4996            image.removeClass(function (index, className) {
4997                return (className.match (/(^|\s)size-x-\S+/g) || []).join(' ');
4998            });
4999        }
5000        else {
5001            image.addClass('size-x-2');
5002            image.css('right', 'auto');
5003            image.css('bottom', 'auto');
5004            image.data('size', 2);
5005        }
5006    });
5007    $('#gallery_board_image_modal').delegate('.gallery-board-modal-right, .gallery-board-modal-left', 'click', function () {
5008        var image = $(this).siblings('.gallery-board-modal-content');
5009        if (image.attr('class').indexOf('size-x-') > 0) {
5010            image.removeClass(function (index, className) {
5011                return (className.match (/(^|\s)size-x-\S+/g) || []).join(' ');
5012            });
5013        }
5014    });
5015
5016    $('#gallery_board_image_modal').delegate('.gallery-board-magnifier-add, .gallery-board-magnifier-remove', 'click touch', function() {
5017        var image = $('#gallery_board_image_modal').find('.gallery-board-modal-content');
5018        var prefix = 'size-x-';
5019        if (image.attr('class').indexOf('size-x-') > 0) {
5020            if ($(this).hasClass('gallery-board-magnifier-add')) {
5021                var size = parseInt(image.data('size')) + 1;
5022                if (size > 5) return;
5023                if (size == 2) {
5024                    image.css('top', 0);
5025                    image.css('right', 'auto');
5026                    image.css('bottom', 'auto');
5027                }
5028            }
5029            else if ($(this).hasClass('gallery-board-magnifier-remove')) {
5030                var size = parseInt(image.data('size')) - 1;
5031                if (size < 1) return;
5032                if (size == 1) {
5033                    image.css('top', 0);
5034                    image.css('right', 'auto');
5035                    image.css('bottom', 'auto');
5036                }
5037            }
5038            else { return; }
5039
5040            image.data('size', size);
5041            image.removeClass(function (index, className) {
5042                return (className.match (/(^|\s)size-x-\S+/g) || []).join(' ');
5043            });
5044            image.addClass(prefix + size);
5045        }
5046        else {
5047            if ($(this).hasClass('gallery-board-magnifier-remove')) { return; }
5048            image.addClass('size-x-2');
5049            image.css('top', 0);
5050            image.css('right', 'auto');
5051            image.css('bottom', 'auto');
5052            image.data('size', 2);
5053        }
5054    });
5055
5056    $('#gallery_board_image_modal').delegate('.gallery-board-magnifier-original-size', 'click touch', function() {
5057        var image = $('#gallery_board_image_modal').find('.gallery-board-modal-content');
5058        image.removeClass(function (index, className) {
5059            return (className.match (/(^|\s)size-x-\S+/g) || []).join(' ');
5060        });
5061
5062        if (image.hasClass('size-original')) {
5063            image.css('left', 'auto');
5064            image.removeClass('size-original');
5065        }
5066        else {
5067            image.css('top', 0);
5068            image.css('bottom', 'auto');
5069            image.css('left', 'calc(50% - ' + (document.getElementById('gallery-board-img01').naturalWidth / 2) +  'px)');
5070            image.addClass('size-original');
5071        }
5072    });
5073
5074    /* 2020.03.03 재헌
5075     * 갤러리 이미지 모달에서 이미지 다운로드가 가능하도록 버튼 추가
5076     */
5077    $('#gallery_board_image_modal').delegate('.gallery-board-modal-download', 'click touch', function() {
5078        var url = $('#gallery-board-img01').attr('src');
5079        var name = url.split('/').pop();
5080
5081        if (!url || !name) return;
5082        if (navigator.userAgent.toLowerCase().indexOf('safari') > -1 &&
5083            navigator.userAgent.toLowerCase().indexOf('chrome') == -1) {
5084            var a = $("<a>").attr("href", url).attr("download", name).appendTo("body");
5085            a[0].click();
5086            a.remove();
5087        }
5088        else {
5089            post_redirect('/module/board/download.php', {'url': url, 'name': name}, '_top');
5090        }
5091    });
5092
5093    $(function() {
5094        var curDown = false,
5095            curYPos = 0,
5096            curXPos = 0,
5097            curTop = 0,
5098            curBottom = 0,
5099            curRight = 0;
5100        $('.gallery-board-modal-overlay').on('mousemove touchmove', function(e){
5101            e.preventDefault();
5102            if(curDown === true){
5103                var moveYPos = e.originalEvent.touches ?  e.originalEvent.touches[0].pageY : e.pageY;
5104                var moveXPos= e.originalEvent.touches ?  e.originalEvent.touches[0].pageX : e.pageX;
5105                // bottom 기준
5106                // $('#gallery-board-img01').css('top', 'auto');
5107                // $('#gallery-board-img01').css('bottom',(curBottom + ((curYPos - moveYPos))));
5108
5109                // top 기준
5110                $('#gallery-board-img01').css('top', (curTop + (moveYPos - curYPos)));
5111                $('#gallery-board-img01').css('bottom', 'auto');
5112
5113                // $('#gallery-board-img01').css('right',(curRight + ((curXPos - moveXPos))));
5114            }
5115        });
5116
5117        $('.gallery-board-modal-overlay').on('mousedown touchstart', function(e){
5118            e.preventDefault();
5119            curDown = true;
5120            curYPos = e.originalEvent.touches ?  e.originalEvent.touches[0].pageY : e.pageY;
5121            curXPos = e.originalEvent.touches ?  e.originalEvent.touches[0].pageX : e.pageX;
5122            curTop = parseInt($('#gallery-board-img01').css('top'));
5123            curBottom = parseInt($('#gallery-board-img01').css('bottom'));
5124            curRight = parseInt($('#gallery-board-img01').css('right'));
5125        });
5126
5127        $('.gallery-board-modal-overlay').on('mouseup touchend', function(){
5128            curDown = false;
5129        });
5130
5131        $('.gallery-board-modal-overlay').on('mousewheel', function(e) {
5132            e.preventDefault();
5133            if ($('#gallery_board_image_modal').css('display') != 'none') {
5134                // bottom 기준
5135                // if ($('#gallery-board-img01').css('bottom') == 'auto') {
5136                //     curBottom = (document.getElementById('gallery-board-img01').naturalHeight - window.innerHeight) * -1;
5137                // }
5138                // else {
5139                //     curBottom = parseInt($('#gallery-board-img01').css('bottom'));
5140                // }
5141                //
5142                // var moveYPos = (curBottom + (e.originalEvent.wheelDelta * -1));
5143                // var realHeight =  $("#gallery-board-img01")[0].getBoundingClientRect().height; // scale 조정 후의 높이값을 가져옴
5144                // var topLimit = parseInt(realHeight * -1) + parseInt(window.innerHeight);
5145                // if (moveYPos > 0) { moveYPos = 0; }
5146                // if (moveYPos < topLimit) { moveYPos = topLimit }
5147                //
5148                // $('#gallery-board-img01').css('top', 'auto');
5149                // $('#gallery-board-img01').css('bottom', moveYPos + 'px');
5150
5151                // top 기준
5152                var currentTop = $('#gallery-board-img01').css('top');
5153                currentTop = currentTop == 'auto' ? 0 : parseInt(currentTop);
5154
5155                var moveYPos = currentTop + e.originalEvent.wheelDelta;
5156                var realHeight =  $("#gallery-board-img01")[0].getBoundingClientRect().height; // scale 조정 후의 높이값을 가져옴
5157                var topLimit = parseInt(realHeight * -1) + parseInt(window.innerHeight);
5158                if (moveYPos > 0) { moveYPos = 0; }
5159                if (moveYPos < topLimit) { moveYPos = topLimit; }
5160
5161                $('#gallery-board-img01').css('top', moveYPos + 'px');
5162                $('#gallery-board-img01').css('bottom', 'auto');
5163            }
5164        });
5165    });
5166
5167
5168    function headerSubMenuPop() {
5169        $('#main_container').delegate('.header .mn-item, .header .mn-item-overflow-list', 'mouseenter', function () {
5170            if ($(this).parents('.header-side-nav').length > 0) return;
5171
5172            var main_header = $(this).parents('.header-contents').first().parent();
5173            var main_menu = $(this).parents('ul.mn-ul').first();
5174            /* 2020.02.12 재헌
5175             * 헤더 서브메뉴 가로로 정렬 ( sub-mn-horizontal )
5176             * sub-mn-type-2 일 때 sub-mn 각각의 top을 지정해준다.
5177             */
5178            // if (main_header.hasClass('sub-mn-type-2') && main_header.hasClass('sub-mn-align-horizontal')) {
5179            //     var all_height = 0;
5180            //     $.each(main_header.find('.sub-mn, .header-overflow-pop > ul'), function(i, val) {
5181            //         var target = $(this);
5182            //         var parentMenu = $(this).parent();
5183            //         if (parentMenu.hasClass('mn-item-overflow')) return;
5184            //
5185            //         var is_overflow_list = $(this).parents('.mn-item-overflow-list').length > 0 ? true : false;
5186            //         if (is_overflow_list) {
5187            //             target = $(this).parents('.header-overflow-pop').first();
5188            //             parentMenu = $(this).parents('li.mn-item');
5189            //         }
5190            //
5191            //         parentMenu.addClass('mn-item-hover');
5192            //
5193            //         var top = parentMenu.height() + all_height - $(window).scrollTop();
5194            //         if (!is_InternetExplorer()) {
5195            //             top += parentMenu.offset().top;
5196            //         }
5197            //
5198            //         target.css('top', top);
5199            //         all_height += target.height();
5200            //     });
5201            //
5202            //     var max_height = 0;
5203            //     $.each(main_header.find('ul'), function() {
5204            //         max_height = max_height > $(this).height() ? max_height : $(this).height();
5205            //     });
5206            // }
5207            // else
5208            if (main_header.hasClass('sub-mn-type-2')) {
5209                $.each(main_menu.find('.mn-item'), function() {
5210                    $(this).addClass('mn-item-hover');
5211
5212                    //var top = this.offsetTop + $(this).height() - $(window).scrollTop();
5213
5214                    // 2019.04.29 원본
5215                    //var top = $(this).offset().top + $(this).height() - $(window).scrollTop();
5216                    // 수정본. ie에서 header가 2단이상이면 위치가 정상적으로 잡히지 않는 문제때문에 추가
5217                    var top = $(this).height() - $(window).scrollTop();
5218                    if (!is_InternetExplorer()) { top += $(this).offset().top; }
5219                    else if (is_InternetExplorer() && main_header.hasClass('sub-mn-align-horizontal')) { top += $(this).offset().top; }
5220
5221                    $(this).find('.sub-mn').css('top', top);
5222                    $(this).find('.sub-mn > .mn-item').css('width', $(this).width());
5223                    $(this).find('.header-overflow-pop').css('top', top);
5224                    $(this).find('.header-overflow-pop').width($(this).width());
5225                });
5226
5227                var max_height = 0;
5228                $.each(main_header.find('ul.sub-mn'), function() {
5229                    max_height = max_height > $(this).height() ? max_height : $(this).height();
5230                });
5231
5232                // header overflow pop이 존재하면 해당 항목의 높이와 비교
5233                if ($('.header-overflow-pop').length > 0) {
5234                    var overflow_pop_height = $('.header-overflow-pop').height();
5235                    max_height = max_height > overflow_pop_height ? max_height : overflow_pop_height;
5236                }
5237
5238                if (max_height > 0) {
5239                    var overlay = '<div class="sub-mn-overlay" style="height:' + parseInt(max_height) + 'px;"></div>';
5240                    main_header.find('.sub-mn-overlay').remove();
5241                    main_menu.find('ul.sub-mn, .header-overflow-pop > ul').first().prepend(overlay);
5242                }
5243            }
5244            // else if (main_header.hasClass('sub-mn-type-1')) {
5245            else {
5246                $(this).find('.sub-mn-overlay').remove();
5247                $(this).addClass('mn-item-hover');
5248
5249                // 2019.04.29 원본
5250                //var top = $(this).offset().top + $(this).height() - $(window).scrollTop();
5251                var top = $(this).height() - $(window).scrollTop();
5252                if (!is_InternetExplorer()) { top += $(this).offset().top; }
5253                else if (is_InternetExplorer() && main_header.hasClass('sub-mn-align-horizontal')) { top += $(this).offset().top; }
5254
5255                if ($(this).hasClass('mn-item-overflow-list')) {
5256                    $(this).find('.header-overflow-pop').css('top', top);
5257                    $(this).find('.header-overflow-pop').width('auto');
5258                }
5259                else if ($(this).hasClass('mn-item')) {
5260                    $(this).find('.sub-mn').css('top', top);
5261                }
5262            }
5263        });
5264
5265        //$('#main_container').delegate('.header .mn-item, .header .mn-item-overflow-list', 'mouseleave', function () {
5266        $('#main_container').delegate('.header .mn-item', 'mouseleave', function (e) {
5267            var main_header = $(this).parents('.header-contents').first().parent();
5268            if (main_header.hasClass('sub-mn-type-2')) {
5269                main_header.find('.mn-item').removeClass('mn-item-hover');
5270                main_header.children('.header-op').css('height', 'auto');
5271                main_header.find('.sub-mn-overlay').remove();
5272            }
5273            // else if (main_header.hasClass('sub-mn-type-1')) {
5274            else {
5275                $(this).removeClass('mn-item-hover');
5276                $(this).removeClass('mn-item-overflow-list-hover');
5277            }
5278        });
5279
5280        $(window).on('scroll.headerSubMenuPop', function() {
5281            /* 2020.02.12 재헌
5282             * 헤더 서브메뉴 가로로 정렬 ( sub-mn-horizontal )
5283             * sub-mn-type-2 일 때 sub-mn 각각의 top을 지정해준다.
5284             */
5285            // var main_header = $('.header .mn-item-hover').parents('.header-contents').parent();
5286            // if (main_header.hasClass('sub-mn-type-2') && main_header.hasClass('sub-mn-align-horizontal')) {
5287            //     var all_height = 0;
5288            //     $.each(main_header.find('.sub-mn'), function(i, val) {
5289            //         var parentMenu = $(this).parents('.mn-item').first();
5290            //         parentMenu.addClass('mn-item-hover');
5291            //
5292            //         var top = parentMenu.height() + all_height - $(window).scrollTop();
5293            //         if (!is_InternetExplorer()) { top += parentMenu.offset().top; }
5294            //
5295            //         $(this).css('top', top);
5296            //         all_height += $(this).height();
5297            //     });
5298            // }
5299            // else
5300            if ($('.header .mn-item-hover').length > 0) {
5301                // 원본
5302                //var top = $('.header .mn-item-hover').offset().top + $('.header .mn-item-hover').height() - $(window).scrollTop();
5303                // 수정본. ie에서 header가 2단이상이면 위치가 정상적으로 잡히지 않는 문제때문에 추가
5304                var top = $('.header .mn-item-hover').height() - $(window).scrollTop();
5305                if (!is_InternetExplorer()) { top += $('.header .mn-item-hover').offset().top; }
5306                //
5307                $('.header .mn-item-hover').find('.sub-mn').css('top', top);
5308            }
5309
5310            if ($('.header .mn-item-overflow-list').length > 0) {
5311                // 원본
5312                //var top = $('.header .mn-item-overflow-list').offset().top + $('.header .mn-item-overflow-list').height() - $(window).scrollTop();
5313                var top = $('.header .mn-item-overflow-list').height() - $(window).scrollTop();
5314                if (!is_InternetExplorer()) { top += $('.header .mn-item-overflow-list').offset().top; }
5315                //
5316                $('.header .mn-item-overflow-list').find('.header-overflow-pop').css('top', top);
5317            }
5318        });
5319
5320    }
5321    headerSubMenuPop();
5322
5323    function isMobile() {
5324        return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
5325    }
5326
5327    // string format
5328    if (!String.prototype.format) {
5329        String.prototype.format = function() {
5330            var args = arguments;
5331            return this.replace(/{(\d+)}/g, function(match, number) {
5332                return typeof args[number] != 'undefined'
5333                    ? args[number]
5334                    : match
5335                    ;
5336            });
5337        };
5338    }
5339
5340    /* 데이터 컨텐츠 페이지 */
5341    </script>
5341
5342
5343<!-- Log -->
5344<script language="javascript" type="text/javascript">
5345    if(typeof qva != "undefined") {
5346        qva.DataSet('account', 'hrlwhxut0');
5347        qva.start();
5348    }
5349
5350    function custom_trigger_call(type,id){
5351            }
5352</script>
5352
5353
5354
5355
5356
5357<script>
5358    $(document).ready(function() {
5359        if (!$('body').hasClass('body-fade')) {
5360            $('body').show();
5361        }
5362    });
5363
5364    $(window).bind("load",function(){
5365                    initContentsLazyLoad();
5366            
5367        if ($('body').hasClass('body-fade')) {
5368            $('body').fadeIn(300, 'linear');
5369        }
5370
5371        initAnchor(document.location.pathname + document.location.search);
5372
5373
5374        if (!is_InternetExplorer()) {
5375            initAnimation();
5376        }
5377
5378        setTimeout(function() { initHeaderOverflowMenuResizeEvent(); }, 500);
5379
5380        // 템플릿에서 버튼 클릭되지 않도록 -> iframe 내부에서 호출되면 form, board 작성 불가, 주소 tpl 포함인 페이지에만 적용
5381        if (self !== top) {
5382            // in iframe (template)
5383            if (location.host.indexOf('tpl') == 0) {
5384                $('.form-contents-button, .board-write').css('pointer-events', 'none');
5385            }
5386            // in iframe (others)
5387            else { }
5388        }
5389
5390        
5391        // initMaintainRatioImage();
5392        initMaintainRatioSlider();
5393        initBackgroundFullSizeVideo();
5394
5395        if ($(window).width() < 767) {
5396            initImageBoxAutoResize();
5397        }
5398    });
5399
5400    // 2022.01.21 주석처리
5401    // 항상 원본비율 유지 옵션 추가로 인해 필요성 x
5402    function initMaintainRatioImage() {
5403        if (isMobile() && $(window).width() < 767) return;
5404        var notAllowed = [
5405            '.mobile_ele',
5406            '.boxing',
5407            '.col-sm-1',
5408            '.col-sm-2',
5409            '.col-sm-3',
5410            '.col-sm-4',
5411            '.col-sm-5',
5412            '.col-sm-6',
5413            '.col-sm-7',
5414            '.col-sm-8',
5415            '.col-sm-9',
5416            '.col-sm-10',
5417            '.col-sm-11',
5418        ];
5419
5420        $.each($('#main_container .body .imgBox'), function() {
5421            if ($(this).parents(notAllowed.join(',')).length > 0) return;
5422            var imgcore = $(this).find('.img-core');
5423            var backgroundSize = imgcore.css('background-size');
5424            var backgroundPosition = imgcore.css('background-position');
5425
5426            if (backgroundSize == 'contain' && backgroundPosition == '50% 50%') {
5427                var url = $(this).find('.img-core').css('background-image').replace('url(', '').replace(')', '').replace(/\"/gi, "");
5428                // var height = $(this).attr('data-hei').replace(/px/g, '');
5429                var height = $(this).find('.img-core').height();
5430                $(this).height('auto');
5431                imgcore.hide();
5432                // max-height 지정에서 height 지정으로 변경됨
5433                // 이미지를 확대해서 저장했을 때 에디터화면과 다른 문제 (라이브에서는 원본크기 이상으로 늘어나지 않음)
5434                imgcore.after('<img class="img-core-dummy" src="' + url + '" style="max-width: 100%; max-height: ' + height + 'px;">')
5435            }
5436        });
5437    }
5438
5439    function resizeMaintainRatioImage() {
5440        if (isMobile()) return;
5441        // var interval = setInterval(function() {
5442        //     if ($('#main_container').width() == 0) { return; }
5443        //     else {
5444        //         clearInterval(interval);
5445        //     }
5446        // }, 100);
5447
5448        $.each($('#main_container .imgBox'), function() {
5449            var imgbox = $(this);
5450            var imgcore = $(this).find('.img-core');
5451            var ratio = imgcore.attr('data-ratio');
5452            var w = $(this).width();
5453            var w_data = $(this).attr('data-width');
5454            var background_size = imgcore.css('background-size');
5455
5456            if (!$(this).hasClass('displayed')
5457                || (background_size != 'contain')
5458                || (w == w_data)
5459                || (!ratio)) {
5460                console.log(this.id, 'returned');
5461                return;
5462            }
5463
5464            ratio = parseFloat(ratio);
5465            var ratio_box = imgcore.height() / imgcore.width();
5466            if (ratio_box > ratio) {
5467                imgcore.height(imgcore.width() * parseFloat(ratio));
5468                imgbox.height('auto');
5469                console.log('1', ratio_box, ratio);
5470            }
5471            else {
5472                imgcore.height(imgbox.attr('data-hei'));
5473                console.log('2', ratio_box, ratio);
5474            }
5475
5476            // $(this).attr('data-width', w);
5477            // $(this).height('auto');
5478            // imgcore.height(imgcore.width() * parseFloat(ratio));
5479        });
5480    }
5481
5482    function resizeMaintainRatioSlider() {
5483        /* 2020.03.18 재헌
5484         * IE, FF 에서 해당함수 호출 시 렌더링이 완료되지 않은 상태면 ratio 값을 잘못 측정하는 문제
5485         * 렌더링 완료 기준은 main_container의 width 값이 0인지 아닌지로 확인
5486         * 렌더링이 완료되지 않은 상태에서 호출되었다면 100ms 간격을 두고 함수 재호출
5487         */
5488        var w = $('#main_container').width();
5489        if (w == 0) {
5490            setTimeout(function() {
5491                resizeMaintainRatioSlider();
5492            }, 100);
5493            return;
5494        }
5495
5496        $.each($('#main_container .slider-frm.maintain-ratio .frm, #main_container .slider-frm.maintain-ratio .box'), function() {
5497            var screenWidth = window.screen.width;
5498            // col-sm 비율까지 고려하려면 아래 코드 사용, 일단 main_container 하위 슬라이드만 적용할 것이라 사용하지 않음
5499            //var sliderFrame = $(this).parents('.slider-frm').first();
5500            // var column = sliderFrame.parent()[0].className.split(' ').filter(v => v.indexOf('col-sm') > -1);
5501            // if (column.length > 0) { // [col-sm-4..]
5502            //     var column_num = column[0].replace(/col-sm-/g, '');
5503            //     var column_ratio = 12 / column_num;
5504            //     screenWidth = screenWidth / column_ratio;
5505            // }
5506
5507            var ratio = $(this).parents('.slider-frm').first().width() / screenWidth;
5508            // 상위에 프레임이 하나 더 있는 경우 width가 0으로 잡힌다
5509            ratio = ratio != 0 ? ratio : $(this).parents('.slider-frm').parent().width() / screenWidth;
5510
5511            if(ratio > 0.1) { //IE11,FF load()전 width()값 못가져오는 case 예외처리
5512                var origin_height = parseInt($(this).data('origin-height'));
5513                var height = Math.floor(origin_height * ratio);
5514
5515                if ($(this).hasClass('frm')) {
5516                    if ($(this).parent().hasClass('item')) {
5517                        if (window.innerWidth <= 767) {
5518                            ratio = 1;
5519                            height = $(this).data('origin-height');
5520                            $(this).children('.view').css('transform-origin', '50% 50%');
5521                            $(this).css('background-position-y', '50%'); // frame 백그라운드 이미지 원복
5522                        }
5523                        $(this).parents('.carousel-inner').height(height);
5524                        $(this).children('.view').children('.tb').height(height);
5525                        $(this).children('.view').css('transform', 'scale(' + ratio + ')');
5526
5527                        // column이 여러개인 경우 item의 높이가 column의 수 만큼 크게나와서 아래와 같이 보정
5528                        var itemHeight = $(this).parent('.item').height();
5529                        if (!$(this).parent('.item').hasClass('active')) {
5530                            itemHeight = itemHeight / $(this).children('.view').children('.tb').children('.row').children('.column').length;
5531                        }
5532                        //
5533                        if (itemHeight >= height) {
5534                            var diff = parseFloat(itemHeight - height);
5535                            var rate = itemHeight / 2;
5536                            var column_height = 0;
5537                            $.each($(this).children('.view').children('.tb').children('.row').children('.column'), function () {
5538                                var total = 0;
5539                                $.each($(this).children('.frm, .box'), function () {
5540                                    total += parseInt($(this).data('origin-height'));
5541                                });
5542                                column_height = column_height < total ? total : column_height;
5543                            });
5544                            column_height = column_height * ratio;
5545                            column_height = height - column_height;
5546                            rate = rate - column_height;
5547
5548                            // most 3
5549                            // var diff = parseFloat(itemHeight - height);
5550                            // var column_height = 0;
5551                            // $.each($(this).children('.view').children('.tb').children('.row').children('.column'), function() {
5552                            //     var total = 0;
5553                            //     $.each($(this).children('.frm, .box'), function() {
5554                            //         total += parseInt($(this).data('origin-height'));
5555                            //     });
5556                            //     column_height = column_height < total ? total : column_height;
5557                            // });
5558                            // var rate = (itemHeight + height - (column_height * ratio * 2)) / 2;
5559
5560                            // most 2
5561                            // var diff = parseFloat(itemHeight - height);
5562                            // var rate = diff + diff * Math.sqrt((ratio - 0.5));
5563
5564                            // most 1
5565                            // var diff = itemHeight - height;
5566                            // var rate = diff * (1 + Math.pow(ratio, 2) + (ratizo - 0.5));
5567
5568                            if (window.innerWidth > 767) {
5569                                $(this).children('.view').css('transform-origin', '50% calc(50% - ' + Math.ceil(rate) + 'px)');
5570                                $(this).css('background-position-y', 'calc(50% - ' + parseFloat(diff / 2) + 'px)'); // frame 백그라운드 이미지 보정
5571                            }
5572                        }
5573                    }
5574                }
5575                else {
5576                    // $(this).height(height);
5577
5578                    // if ($(this).hasClass('imgBox')) {
5579                    //     $(this).find('.img-core').height(height);
5580                    // }
5581                }
5582            }
5583        });
5584    }
5585
5586
5587
5588    function initMaintainRatioSlider() {
5589        if ($('#main_container .slider-frm.maintain-ratio').length > 0) {
5590            // ratio slider는 displayed 클래스를 붙여준다.
5591            $.each($('#main_container .slider-frm.maintain-ratio'), function() {
5592                var target = $(this).parents('.frm');
5593                $.merge(target, [$(this)]);
5594                $.merge(target, $(this).find('.frm, .box'));
5595                $.each(target, function() {
5596                    $(this).addClass('displayed');
5597                });
5598            });
5599
5600            // $.each($('#main_container .slider-frm.maintain-ratio .carousel-inner'), function() {
5601            //     $(this).css('height', 'auto');
5602            // });
5603            $.each($('#main_container .slider-frm.maintain-ratio .item > .frm > .view > .tb > .row > .column'), function() {
5604                $(this).css('height', 'auto');
5605                // $(this).css('min-height', 'auto');
5606            });
5607            $.each($('#main_container .slider-frm.maintain-ratio .column'), function() {
5608                $(this).css('min-height', 'auto');
5609            });
5610            $.each($('#main_container .slider-frm.maintain-ratio .frm, #main_container .slider-frm.maintain-ratio .box'), function() {
5611                var h = $(this).hasClass('frm') ? $(this).children('.view').children('.tb').height() : $(this).height();
5612                h = $(this).parent().hasClass('item') ? $(this).parents('.carousel-inner').height() : h;
5613                $(this).data('origin-height', h);
5614            });
5615
5616            // 브라우저가 resize 될 때 마다 slider 크기를 조절한다
5617            $(window).resize(function(){
5618                resizeMaintainRatioSlider();
5619            });
5620
5621            resizeMaintainRatioSlider();
5622        }
5623    }
5624
5625    /* 2020.02.27 재헌
5626     * fixed - relative 기반
5627     */
5628    function initAffixedFrame() {
5629        var affixedFrame = $('.body .frm[data-fixed="true"]');
5630        if (affixedFrame.length == 0) return;
5631
5632        //data-fixed가 존재하는 frame에 z-index 할당
5633        //var zIndex = $('.body > .frm .frm[data-fixed="true"]').length + 10;
5634        var zIndex = $('.body .frm').length + 10;
5635        $.each($('.body .frm'), function() {
5636            $(this).css('z-index', zIndex--);
5637        });
5638
5639        // 고정 컨텐츠의 초기값 지정 및 affixed 클래스 부여, 더미 생성
5640        $.each(affixedFrame, function() {
5641            // displayed 되지 않은 항목은 width, offsetTop 값을 가져오지 못하기 때문에
5642            // 자신과 부모 프레임에 displayed 클래스를 추가한다
5643            $.each($(this).parents('.frm').andSelf(), function() {
5644                $(this).addClass('displayed');
5645            });
5646
5647            var offsetTop = $(this).offsetTop();
5648            var maxHeight = $('.header.useFixed').length > 0 ? 'calc(100vh - ' + offsetTop + 'px)' : '100vh';
5649
5650            // $(this).css('width', $(this).width() + 'px');
5651            $(this).css('max-height', maxHeight);
5652            if (!$(this).is('.qv-ani, .qv-ani-ele')) {
5653                $(this).attr('data-origin-offset-top', offsetTop);
5654            }
5655            $(this).addClass('affixed');
5656
5657            var height = $(this).height() +
5658                parseInt($(this).css('margin-top')) +
5659                parseInt($(this).css('margin-bottom')) +
5660                parseInt($(this).css('padding-top')) +
5661                parseInt($(this).css('padding-bottom'));
5662            $(this).after('<div class="affixed-dummy" id="dummy-' + this.id + '" style="height:' + height + 'px;"></div>');
5663
5664            // $(this).parents('.frm').last().css('z-index', zIndex--);
5665            // $.each($('#fGYLWT').parents('.frm').andSelf(), function() {
5666            //    $(this).css('z-index', 15);
5667            // });
5668        });
5669
5670        var scrollTarget = is_InternetExplorer() ? $('body') : $(document);
5671        scrollTarget.on('scroll', function() {
5672            var currentScrollTop = $(this).scrollTop();
5673            var topWithWindowHeight = $(this).scrollTop() + $(window).height();
5674            console.log(currentScrollTop);
5675            // 모바일 호환
5676            var header = (isMobile() && $('.header-mobile').length > 0) ? $('.header-mobile') : $('.header:not(.useFixed)');
5677            var footer = (isMobile() && $('.footer-frame-mobile').length > 0) ? $('.footer-frame-mobile') : $('.footer-frame');
5678
5679            $.each(affixedFrame, function() {
5680                /* 2020.02.28 재헌
5681                 * data-origin-offset-top 값이 없거나(qv-ani, qv-ani-ele), currentScrollTop이 0이면 재할당하여 수시로 값을 보정한다
5682                 */
5683                if (!$(this).attr('data-origin-offset-top') || currentScrollTop == 0) {
5684                    var offsetTop = $(this).offsetTop() - currentScrollTop;
5685                    $(this).attr('data-origin-offset-top', offsetTop);
5686                }
5687
5688                // 최상위 프레임
5689                if ($(this).parent().is('.body')) {
5690                    if (header.length > 0 && header.height() > currentScrollTop) {
5691                        if (!$(this).is('.affixed-top')) {
5692                            $(this).removeClass (function (index, className) {
5693                                return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5694                            });
5695                            $(this).addClass('affixed-top');
5696                            $('.affixed-dummy#dummy-' + this.id).hide();
5697
5698                            console.log('scroll - header');
5699                        }
5700                    }
5701                    // 스크롤 중 footer에 도달했을 때 (relative)
5702                    else if (footer.length > 0 && footer.offsetTop() < topWithWindowHeight) {
5703                        if (!$(this).is('.affixed-bottom')) {
5704                            var relativePosition = $(window).height();
5705                            var offsetTop = footer.offsetTop() - relativePosition;
5706                            offsetTop = header.length > 0 ? offsetTop - header.height() : offsetTop;
5707                            $(this).css('top', offsetTop + 'px');
5708                            $(this).removeClass (function (index, className) {
5709                                return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5710                            });
5711                            $(this).addClass('affixed-bottom');
5712                            $('.affixed-dummy#dummy-' + this.id).hide();
5713
5714                            console.log('scroll - footer');
5715                        }
5716                    }
5717                    // header, footer와 접하지 않을 때 (fixed)
5718                    else {
5719                        var offsetTop = $(this).attr('data-origin-offset-top');
5720                        offsetTop = header.length > 0 ? offsetTop - header.height() : offsetTop;
5721                        // offsetTop = offsetTop < 0 ? 0 : offsetTop;
5722                        $(this).css('top', offsetTop + 'px');
5723                        $(this).css('width', $(this).width() + 'px');
5724                        $(this).removeClass(function (index, className) {
5725                            return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5726                        });
5727                        $(this).addClass('affixed');
5728                        $('.affixed-dummy#dummy-' + this.id).show();
5729
5730                        console.log('scroll - main');
5731                    }
5732                }
5733                // 하위 프레임
5734                else {
5735                    var parentFrame = $(this).parents('.frm').last();
5736
5737                    // 스크롤 중 부모프레임 최상부에 도달했을 때
5738                    var _offsetTop = parseInt($(this).attr('data-origin-offset-top'));
5739                    if (_offsetTop > currentScrollTop) {
5740                        if (!$(this).is('.affixed-top')) {
5741                            $(this).removeClass (function (index, className) {
5742                                return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5743                            });
5744                            $(this).addClass('affixed-top');
5745                            $('.affixed-dummy#dummy-' + this.id).hide();
5746                        }
5747
5748                        // offset top 갱신 (chrome, ie 에서 offsetTop 값이 다르게나오는 문제)
5749                        var offsetTop = $(this).offsetTop();
5750                        if (_offsetTop != offsetTop) {
5751                            $(this).attr('data-origin-offset-top', offsetTop);
5752                        }
5753                    }
5754                    // 스크롤 중 부모프레임 최하부에 도달했을 때
5755                    else if (parentFrame.offsetTop() + parentFrame.height() < topWithWindowHeight) {
5756                        if (!$(this).is('.affixed-bottom') && !$(this).is('.affixed-top')) { // affixed-top 에서 바로 affixed-bottom 되는 케이스 없도록 함
5757                            var offsetTop = parentFrame.offsetTop() + parentFrame.height() - $(window).height() - parseInt($(this).attr('data-origin-offset-top'));
5758                            $(this).css('top', offsetTop + 'px');
5759                            $(this).removeClass (function (index, className) {
5760                                return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5761                            });
5762                            $(this).addClass('affixed-bottom');
5763                            $('.affixed-dummy#dummy-' + this.id).hide();
5764                        }
5765                    }
5766                    // 부모프레임 최상부,최하부에 접하지 않을 때
5767                    else {
5768                        if (!$(this).is('.affixed')) {
5769                            $(this).css('top', '0px');
5770                            $(this).css('width', $(this).width() + 'px');
5771                            $(this).removeClass(function (index, className) {
5772                                return (className.match(/(^|\s)affix\S+/g) || []).join(' ');
5773                            });
5774                            $(this).addClass('affixed');
5775                            $('.affixed-dummy#dummy-' + this.id).show();
5776                        }
5777                    }
5778                }
5779            });
5780        });
5781        window.scrollTo(window.scrollX, window.scrollY - 1);
5782    }
5783
5784    function initContentsLazyLoad() {
5785        if (is_InternetExplorer() || $.browser.mozilla) {
5786            $('.body').removeClass('pl-h').addClass('pl-n');
5787            initMapListBox();
5788            initMapBox();
5789            return;
5790        }
5791
5792        var correctionValue = isMobile() ? 500 : 300;
5793        var contents = $('#main_container .body > .frm');
5794        var scrollTarget = is_InternetExplorer() ? $('body') : $(document);
5795
5796        if (contents.length == 0) return;
5797        else {
5798            $.each(contents, function () {
5799                var offsetTop = $(this).offsetTop();
5800                var currentScrollTop = scrollTarget.scrollTop();
5801                if (offsetTop < $(window).height() + correctionValue + currentScrollTop) {
5802                    $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
5803
5804                    if ($(this).find('.mapListBox').length > 0) {
5805                        $.each($(this).find('.mapListBox'), function() { initMapListBox($(this)); });
5806                    }
5807                    if ($(this).find('.mapBox').length > 0) {
5808                        $.each($(this).find('.mapBox'), function() { initMapBox($(this)); });
5809                    }
5810                }
5811            });
5812        }
5813
5814        var lastScrollTop = 0;
5815        scrollTarget.on('scroll', function() {
5816            var currentScrollTop = window.scrollY;
5817            // var currentScrollTop = $(this).scrollTop();
5818//            var screenHeight = $(window).height();
5819            var screenHeight = window.innerHeight;
5820            var t = currentScrollTop;
5821            var b = currentScrollTop + screenHeight + correctionValue;
5822
5823            if (currentScrollTop > lastScrollTop){ // scroll down
5824                $.each($('#main_container .body > .frm'), function() {
5825                    var height = $(this).height() + parseInt($(this).css('padding-top'))  + parseInt($(this).css('padding-bottom'));
5826                    var offsetTop = $(this).offsetTop();
5827
5828                    if (offsetTop + height < t) { }
5829                    else if (offsetTop < b) {
5830                        $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
5831
5832                        if ($(this).find('.mapListBox').length > 0) {
5833                            $.each($(this).find('.mapListBox'), function() { initMapListBox($(this)); });
5834                        }
5835                        if ($(this).find('.mapBox').length > 0) {
5836                            $.each($(this).find('.mapBox'), function() { initMapBox($(this)); });
5837                        }
5838                    }
5839                });
5840            } else { // scroll up
5841                $.each($('#main_container .body > .frm'), function() {
5842                    var height = $(this).height() + parseInt($(this).css('padding-top'))  + parseInt($(this).css('padding-bottom'));
5843                    var offsetTop = $(this).offsetTop();
5844
5845                    if (offsetTop > b) { }
5846                    else if (offsetTop + height > t) {
5847                        $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
5848
5849                        if ($(this).find('.mapListBox').length > 0) {
5850                            $.each($(this).find('.mapListBox'), function() { initMapListBox($(this)); });
5851                        }
5852                        if ($(this).find('.mapBox').length > 0) {
5853                            $.each($(this).find('.mapBox'), function() { initMapBox($(this)); });
5854                        }
5855                    }
5856                });
5857            }
5858
5859            lastScrollTop = currentScrollTop;
5860        });
5861    }
5862
5863    /* 2020.02.21 재헌
5864     * an-once 추가
5865     * 해당 클래스가 있으면 애니메이션이 단 한번만 실행된다.
5866     * (기존엔 스크롤했다가 다시 올라오면 애니메이션이 다시 실행 됨)
5867     */
5868    function initAnimation() {
5869        var scrollTarget = is_InternetExplorer() ? $('body') : $(document);
5870        var ani = $('#main_container .qv-ani-ele, #main_container .qv-ani');
5871        if (ani.length == 0) return;
5872        else {
5873            $.each(ani, function () {
5874                var offsetTop = $(this).offsetTop();
5875                var offsetBottom = offsetTop + $(this).height();
5876                var currentScrollTop = getScrollY();
5877                var currentScrollBottom = currentScrollTop + $(window).height() ;
5878
5879                // 부등호 < 에서 <= 로 모두 변경
5880                if ((offsetTop <= currentScrollTop && currentScrollTop <= offsetBottom) ||
5881                    (offsetTop <= currentScrollBottom && currentScrollBottom <= offsetBottom) ||
5882                    (currentScrollTop <= offsetTop && offsetBottom <= currentScrollBottom) ||
5883                    (offsetTop <= currentScrollTop && currentScrollBottom <= offsetBottom)) {
5884                    return;
5885                }
5886                else if ($(this).hasClass('qv-ani-ele')) {
5887                    $(this).toggleClass('qv-ani-ele qv-ani');
5888                }
5889
5890//                if (offsetTop > $(window).height() &&
5891//                    $(this).hasClass('qv-ani-ele')) {
5892//                    $(this).toggleClass('qv-ani-ele qv-ani');
5893//                }
5894            });
5895        }
5896
5897        var lastScrollTop = 0;
5898        scrollTarget.on('scroll', function() {
5899            var currentScrollTop = getScrollY();
5900            // var currentScrollTop = $(this).scrollTop();
5901//            var screenHeight = $(window).height();
5902            var screenHeight = window.innerHeight;
5903            var t = currentScrollTop;
5904            var b = currentScrollTop + screenHeight;
5905
5906            if (currentScrollTop > lastScrollTop) { // scroll down
5907                $.each($('#main_container .qv-ani-ele, #main_container .qv-ani'), function() {
5908                    var height = $(this).height() + parseInt($(this).css('padding-top'))  + parseInt($(this).css('padding-bottom'));
5909                    var offsetTop = $(this).offsetTop();
5910
5911                    if (offsetTop + height < t) {
5912                        if ($(this).is('.qv-ani-ele.an-once')) {
5913                            $(this).removeClass('qv-ani').addClass('qv-ani-ele');
5914                        }
5915                        else if ($(this).hasClass('qv-ani-ele')) {
5916                            $(this).toggleClass('qv-ani-ele qv-ani');
5917                            //console.log(1);
5918                        }
5919                    }
5920                    else if (offsetTop < b) {
5921                        if ($(this).is('.qv-ani-ele.an-once')) {
5922                            $(this).removeClass('qv-ani').addClass('qv-ani-ele');
5923                        }
5924                        else if ($(this).hasClass('qv-ani')) {
5925                            $(this).toggleClass('qv-ani qv-ani-ele');
5926                            //console.log(2);
5927                        }
5928                    }
5929                });
5930            } else { // scroll up
5931                $.each($('#main_container .qv-ani-ele, #main_container .qv-ani'), function() {
5932                    var height = $(this).height() + parseInt($(this).css('padding-top'))  + parseInt($(this).css('padding-bottom'));
5933                    var offsetTop = $(this).offsetTop();
5934
5935                    if (offsetTop > b) {
5936                        if ($(this).is('.qv-ani-ele.an-once')) {
5937                            $(this).removeClass('qv-ani').addClass('qv-ani-ele');
5938                        }
5939                        else if ($(this).hasClass('qv-ani-ele')) {
5940                            $(this).toggleClass('qv-ani-ele qv-ani');
5941                            //console.log(3);
5942                        }
5943                    }
5944                    else if (offsetTop + height > t) {
5945                        if ($(this).is('.qv-ani-ele.an-once')) {
5946                            $(this).removeClass('qv-ani').addClass('qv-ani-ele');
5947                        }
5948                        else if ($(this).hasClass('qv-ani')) {
5949                            $(this).toggleClass('qv-ani qv-ani-ele');
5950                            //console.log(4);
5951                        }
5952                    }
5953                });
5954            }
5955
5956            lastScrollTop = currentScrollTop;
5957        });
5958    }
5959            $('.quv-made .logo, .quv-made .txt').on('click', function() {
5960            window.open('https://qshop.ai?utm_source=owned&utm_medium=display&utm_campaign=quv','_blank');
5961        });
5962        $('.quv-made .logo, .quv-made .btn-quv-start').on('click', function() {
5963            window.open('https://qshop.ai?utm_source=owned&utm_medium=display&utm_campaign=quv','_blank');
5964        });
5965        
5966    function moveArticle(href) {
5967        var page = href.slice(1, href.indexOf('?'));
5968        var query = qv_func.getUrlParams();
5969        var bid = query.bid;
5970        var aid = query.aid;
5971        var table = $('table[data-bid="' + bid + '"]');
5972
5973        if (table.length == 0) return;
5974        if (bid && aid && (QV_BASE_OBJ.spid == page || SITE_URL == page)) {
5975            // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여
5976            $.each($('.body > .frm'), function() {
5977                $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
5978            });
5979
5980            var type = 'default';
5981            var _pn = page;
5982            var pn = "&pn=" + _pn;
5983
5984            __BID = bid;
5985            __AID = aid;
5986            __PN = QV_BASE_OBJ.spid;
5987
5988            $('#' + bid).attr('data-type', 'default');
5989            checkAuth(bid, aid,
5990                function(obj) { initialize_currentLocation(bid, aid, obj, table); },
5991                function(obj) {
5992                    qvjax_direct(
5993                        "check_board_auth",
5994                        "/module/board/board.php",
5995                        'bid=' + bid + '&aid=' + aid + '&auth_action=read',
5996                        function (data) {
5997                            if (data) {
5998                                if ((obj.is_secret == 1 && obj.writer_account == null)
5999                                    || (obj.is_secret == 1 && $('tr#' + obj.parent).attr('data-type') == 'nm')) {
6000                                    $('.read-body').data('article', obj);
6001                                    $('#ReadPasswordCheckModal').modal('show');
6002                                    $('#ReadPasswordCheckModal').data('article', obj);
6003                                    $('#ReadPasswordCheckModal').data('type', 'check_password');
6004                                    $('#ReadPasswordCheckModal').data('aid', __AID);
6005                                    $('#ReadPasswordCheckModal').data('init-type', type);
6006                                    $('#ReadPasswordCheckModal').data('table', table);
6007                                }
6008                                else if (obj.is_secret == 1) {
6009                                    alert(lang.no_permission);
6010                                    // window.top.close();
6011                                }
6012                                else {
6013                                    initialize_currentLocation(bid, aid, obj, table);
6014                                }
6015                            }
6016                            else { alert(lang.no_permission); }
6017                        },
6018                        function (xhr) { alert(lang.no_permission); }
6019                    );
6020                },
6021                function(obj) {
6022                    //if (obj.is_secret == 1 || obj.writer_account == null) {
6023                    //if (obj.writer_account == null) {
6024                    if (obj.is_secret == 1 && obj.writer_account == null) {
6025                        $('#ReadPasswordCheckModal').modal('show');
6026                        $('#ReadPasswordCheckModal').data('article', obj);
6027                        $('#ReadPasswordCheckModal').data('type', 'check_password');
6028                        $('#ReadPasswordCheckModal').data('aid', __AID);
6029                        $('#ReadPasswordCheckModal').data('init-type', type);
6030                        $('#ReadPasswordCheckModal').data('table', table);
6031                    }
6032                    else if (obj.is_secret == 1) {
6033                        alert(lang.no_permission);
6034                        return;
6035                        // window.top.close();
6036                    }
6037                    else {
6038                        initialize_currentLocation(bid, aid, obj, table);
6039                    }
6040                }
6041            );
6042        }
6043    }
6044
6045    function initAnchor(href) {
6046        var page = href.slice(1, href.indexOf('?'));
6047        var query = qv_func.getUrlParams();
6048        var anchor = "";
6049        var anchor_mobile = "";
6050
6051        if (isMobile() && anchor_mobile) { anchor = anchor_mobile; }
6052        if ($('#' + anchor).length == 0) return;
6053        if (anchor && (QV_BASE_OBJ.spid == page || SITE_URL == page)) {
6054            // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여
6055            $.each($('.body > .frm'), function() {
6056                $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
6057            });
6058
6059            if (is_InternetExplorer() && $("#" + anchor).offsetTop() == 0) { // ie에서 page load 시 offset 값을 가져ì˜
6059¤ì§€ 못하기 때문에 가져올때까지 setInterval 돌림
6060                var interval = null;
6061                interval = setInterval(function() {
6062                    moveAnchor(anchor);
6063                    clearInterval(interval);
6064                }, 100);
6065            }
6066            else {
6067                setTimeout(function() {
6068                    moveAnchor(anchor);
6069                }, 100)
6070            }
6071        }
6072    }
6073
6074    function moveAnchor(anchor) {
6075        var scrolltop = 0;
6076        var header_height_pc = 0;
6077        $.each($('.header > div[class*=header]'), function() {
6078            if ($(this).attr('data-scr-hei')) {
6079                header_height_pc += parseInt($(this).attr('data-scr-hei'));
6080            }
6081        });
6082        header_height_pc = header_height_pc == 0 ? $('.header').height() : header_height_pc;
6083
6084        var header_height = isMobile() ? $('.header-mobile').height() : header_height_pc;
6085
6086        /* 2021.09.28
6087         * 동일 아이디를 가진 anchor 객체가 존재하는 경우가 있음 (PC/Mobile)
6088         * 구분하여 각 환경에 맞게 앵커객체 할당
6089         */
6090        let anchorTarget = $('div[id="' + anchor + '"]').filter(function(i, a) {
6091            const mobileParents = $(a).parents('.mobile_ele');
6092            return isMobile() ? mobileParents.length > 0 : mobileParents.length === 0;
6093        });
6094        anchorTarget = anchorTarget.length > 0 ? anchorTarget : $('#' + anchor);
6095
6096        if (anchorTarget.parents('.slider-frm').length > 0) {
6097            scrolltop = anchorTarget.parents('.slider-frm').offsetTop() - header_height;
6098            scrolltop = is_InternetExplorer() ? scrolltop + $('body').scrollTop() : scrolltop;
6099
6100            var slider_index = anchorTarget.parents('.item').index();
6101            anchorTarget.parents('.carousel.slide').carousel(slider_index);
6102            anchorTarget.parents('.item').first().css('transform', 'translate3d(0, 0, 0)');
6103
6104            if (anchorTarget.parents('.fullpage ').length > 0) {
6105                if (anchorTarget.parents('.item').prev('.item').length > 0 ) {
6106                    anchorTarget.parents('.item').prev('.item').css('transform', 'translate3d(0, -100%, 0)');
6107                }
6108                if (anchorTarget.parents('.item').next('.item').length > 0 ) {
6109                    anchorTarget.parents('.item').next('.item').css('transform', 'translate3d(0, 100%, 0)');
6110                }
6111            }
6112        }
6113        else if (anchorTarget.parents('.tab-frm').length > 0) {
6114            scrolltop = anchorTarget.parents('.tab-frm').offsetTop() - header_height;
6115            scrolltop = is_InternetExplorer() ? scrolltop + $('body').scrollTop() : scrolltop;
6116
6117            if (anchor.indexOf('tab-') > -1) {
6118                var tab_id = anchor;
6119            }
6120            else {
6121                var tab_id = anchorTarget.parent()[0].id;
6122            }
6123            anchorTarget.parents('.tab-frm').find('a[href*="#' + tab_id + '"]').trigger('click');
6124
6125            /* 2020.03.19 재헌
6126             * 탭을 mobile_ele로 복사하여 넣은 경우 헤더의 탭 앵커가 동작하지 않기 때문에(id가 달라서)
6127             * 이름으로 찾아 활성화한다
6128             */
6129            if (isMobile()) {
6130                var tab = anchorTarget.parents('.tab-frm');
6131                var target_tab = tab.find('a[href*="#' + tab_id + '"]');
6132                var tab_name = target_tab.text();
6133                $.each($('.mobile_ele .tab-frame-nav a'), function() {
6134                    if ($(this).text() == tab_name) {
6135                        $(this).trigger('click');
6136                    }
6137                });
6138            }
6139        }
6140        else {
6141            scrolltop = $("#" + anchor).offsetTop() - header_height;
6142            scrolltop = is_InternetExplorer() ? scrolltop + $('body').scrollTop() : scrolltop;
6143        }
6144
6145        $('html, body').animate({
6146            scrollTop: scrolltop
6147        }, 700);
6148
6149
6150        // mn-link 클릭하면 header-side-nav 닫음
6151        if (isMobile() && $('.header-side-nav').hasClass('active')) {
6152            $('.header-side-nav').removeClass('active');
6153
6154            if ($(this).parents('.header-mobile').length > 0) {
6155                $(this).parents('.header1, .header2, .header3, .header9').removeClass('z-index-9999');
6156            }
6157        }
6158    }
6159
6160    //$('.mn-link').on('click', function() {
6161    $('a[href*="qvac"]').on('click', function() {
6162        var href = $(this).attr('href');
6163        if (href != undefined && href != '') {
6164            var page = href.slice(1, href.indexOf('?'));
6165            var params = qv_func.getUrlParams('?' + href.split('?')[1]);
6166            var anchor = params.qvac;
6167            var anchor_mobile = params.qvmac;
6168
6169            if (isMobile() && anchor_mobile) { anchor = anchor_mobile; }
6170            if ($('#' + anchor).length == 0) return;
6171            //side menu close
6172            if($(this).parents(".header-mobile-side-nav").length > 0){
6173                $('.header-mobile').removeClass('active-side-nav');
6174            }
6175            if (anchor && (QV_BASE_OBJ.spid == page || SITE_URL == page)) {
6176                // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여
6177                $.each($('.body > .frm'), function() {
6178                    $(this).find('.frm:not(".dp-none-important"), .box:not(".dp-none-important")').addClass('displayed');
6179                });
6180
6181                if (is_InternetExplorer() && $("#" + anchor).offsetTop() == 0) { // ie에서 page load 시 offset 값을 가져ì˜
6181¤ì§€ 못하기 때문에 가져올때까지 setInterval 돌림
6182                    var interval = null;
6183                    interval = setInterval(function() {
6184                        moveAnchor(anchor);
6185                        clearInterval(interval);
6186                    }, 100);
6187                }
6188                else {
6189                    setTimeout(function() {
6190                        moveAnchor(anchor);
6191                    }, 100)
6192                }
6193                return false;
6194            }
6195        }
6196    });
6197
6198    $('a.mn-link[href*="tab"]').on('click', function(e) {
6199        var href = $(this).attr('href');
6200        if (href != undefined && href != '') {
6201            var page = href.slice(1, href.indexOf('#'));
6202            var anchor = href.split('#')[1];
6203            if ($('#' + anchor).length == 0) return;
6204            else {
6205                if (anchor && (QV_BASE_OBJ.spid == page || SITE_URL == page)) {
6206                    e.preventDefault();
6207                    moveAnchor(anchor);
6208                }
6209            }
6210        }
6211    });
6212
6213    function isMobile() {
6214        return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false;
6215    }
6216
6217    //원래 initHeaderOverflowMenuResizeEvent 위치
6218
6219
6220    //var resize_frames = [];
6221    function imageBoxAutoResize() {
6222        $.each($('#main_container .imgBox'), function() {
6223            var img_box = $(this);
6224            var bg_size = $(this).find('.img-core').css('background-size');
6225            var bg_image = $(this).find('.img-core').css('background-image');
6226
6227            if (bg_image) {
6228                bg_image = bg_image.replace('url(', '').replace(')', '').replace(/\"/gi, "");
6229            }
6230
6231            // displayed 클래스가 없으면 리사이징 하지않는다.
6232            if (!img_box.hasClass('displayed')) return;
6233
6234            // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다.
6235            if (isMobile() || window.innerWidth <= 767) {
6236                if (img_box.parents('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
6237            }
6238            else {
6239                if (img_box.parents('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
6240            }
6241
6242            // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다.
6243            if (img_box.parents('.tab-frm, .slider-frm').length > 0) return;
6244
6245            if (bg_size == 'contain') {
6246                var tmpImg = new Image();
6247                tmpImg.src = bg_image;
6248                $(tmpImg).one('load',function(){
6249                    var ratio = tmpImg.width / tmpImg.height;
6250                    var height_origin = parseInt(getDataHeight(img_box));
6251                    var width_resize = img_box.width();
6252                    var height_resize = width_resize / ratio;
6253                    height_resize = height_resize > height_origin ? height_origin : height_resize;
6254
6255                    var diff = height_origin - height_resize;
6256                    //console.log(diff);
6257
6258                    if (height_origin === 0) return;
6259                    else if (!isMobile() && window.innerWidth > 767) {
6260                        img_box.height(height_origin - diff);
6261                        img_box.find('.img-core').height(height_origin - diff);
6262                    }
6263                    else {
6264                        /*
6265                         * 모바일에서는 에디터 width 375px 기준으로 비율을 맞춰서 크기를 조정한다
6266                         * 모바일객체는 height important가 적용되어있는 경우가 많아 height 조정 시 important를 붙여줘야 함
6267                         */
6268                        var mobile_width = 375 - (parseInt(img_box.parents('.frm').last().css('padding-left')) * 2); // 에디터(375px) 기준
6269                        var mobile_ratio = mobile_width / height_origin;
6270                        img_box[0].style.setProperty('height', (width_resize / mobile_ratio) + 'px', 'important');
6271                        img_box.find('.img-core')[0].style.setProperty('height', (width_resize / mobile_ratio) + 'px', 'important');
6272                    }
6273                });
6274            }
6275        });
6276
6277        $.each($('.body > .frm'), function() {
6278            // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다.
6279            if (isMobile() || window.innerWidth <= 767) {
6280                if ($(this).parents('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11').length > 0) return;
6281                if ($(this).find('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11').length > 0) return;
6282            }
6283            else {
6284                if ($(this).parents('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
6285                if ($(this).find('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
6286            }
6287
6288
6289            // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다.
6290            if ($(this).parents('.tab-frm, .slider-frm').length > 0) return;
6291            if ($(this).hasClass('tab-frm') || $(this).hasClass('slider-frm')) return;
6292
6293            var re = 0;
6294            var image_count = 0;
6295            $.each($(this).find('.box.imgBox'), function() {
6296                // displayed 클래스가 없으면 리사이징 하지않는다.
6297                if (!$(this).hasClass('displayed')) return;
6298
6299                // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다.
6300                if (isMobile() || window.innerWidth <= 767) {
6301                    if ($(this).parents('.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11').length > 0) return;
6302                }
6303                else {
6304                    if ($(this).parents('.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11').length > 0) return;
6305                }
6306
6307                // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다.
6308                if ($(this).parents('.tab-frm, .slider-frm').length > 0) return;
6309
6310                re += getDataHeight($(this)) - $(this).height();
6311                image_count++;
6312            });
6313
6314            if (image_count > 0) {
6315                $.each($(this).find('.frm').andSelf(), function () {
6316                    var h = getDataHeight($(this));
6317                    if (h == 'auto' || h == 0 || re > h) return;
6318                    if ($(this).is($('.body > .frm').first()) && $('.header').length > 0) {
6319                        $.each($('.header > div'), function() { // 헤더 크기가 가변적이기 때문에 data-hei 값을 가져다쓴다
6320                            var header_height = $(this).attr('data-hei');
6321                            if (header_height == '' || header_height == undefined) { return; }
6322                            h += parseInt(header_height);
6323                        });
6324                        //h += $('.header').height();
6325                    } // 최상단 프레임은 헤더 높이 추가
6326                    h -= re;
6327                    //$(this).children('.view').children('.tb').height(h);
6328                    if (isMobile() || window.innerWidth <= 767) {
6329                        $(this).css('height', 'auto');
6330                    }
6331                    else {
6332                        $(this).height(h);
6333                    }
6334                });
6335            }
6336            image_count = 0;
6337        });
6338
6339//    $.each(resize_frames, function() {
6340//        var frame = $('#' + this.id);
6341//        var height_data = frame.attr('data-hei');
6342//        if ((height_data == '' || height_data == undefined || height_data == null)) return;
6343//        if (this.diff <= 0) return;
6344//        var height_origin_frm = parseInt(height_data);
6345//        frame.height(height_origin_frm - this.diff);
6346//        console.log('id : ' + this.id + ' / diff : ' + (height_origin_frm - this.diff).toString());
6347//
6348//        this.diff = 0; // 프레임 높이 조정 후 diff:0 으로 할당
6349//    });
6350    }
6351
6352    function getDataHeight($obj) {
6353        var retval;
6354        if (window.innerWidth <= 767 || isMobile()) {
6355            retval = $obj.attr('data-m-hei');
6356        }
6357        else {
6358            retval = $obj.attr('data-hei');
6359        }
6360
6361        if (retval == '' || retval == 'auto' || retval == undefined || retval == null || retval == 'NaNpx') {
6362            retval = $obj.height();
6363        }
6364        else {
6365            retval = parseInt(retval);
6366            retval -= parseInt($obj.css('margin-top'));
6367            retval -= parseInt($obj.css('margin-bottom'));
6368            retval -= parseInt($obj.css('padding-top'));
6369            retval -= parseInt($obj.css('padding-bottom'));
6370        }
6371
6372        return retval;
6373    }
6374
6375    function initImageBoxAutoResize() {
6376        $.each($('#main_container .frm'), function() {
6377            $(this).css('transition', '0.1s ease height');
6378
6379            if ($(this).hasClass('tab-frm')) return;
6380            if ($(this).parents('.tab-frm').length > 0) return;
6381            if ($(this).hasClass('slider-frm')) return;
6382            if ($(this).parents('.slider-frm').length > 0) return;
6383
6384            var hei = $(this).attr('data-hei');
6385            if (hei == '' || hei == 'auto' || hei == undefined || hei == null || hei == 'NaNpx') {
6386                hei = $(this).height();
6387                hei += parseInt($(this).css('margin-top'));
6388                hei += parseInt($(this).css('margin-bottom'));
6389                hei += parseInt($(this).css('padding-top'));
6390                hei += parseInt($(this).css('padding-bottom'));
6391                $(this).attr('data-hei', hei);
6392            }
6393//            $(this).attr('data-hei', $(this).height());
6394        });
6395
6396        $.each($('#main_container .imgBox'), function() {
6397            var m_hei = $(this).attr('data-m-hei');
6398            if (m_hei == '' || m_hei == 'auto' || m_hei == undefined || m_hei == null || m_hei == 'NaNpx') {
6399                m_hei = $(this).height();
6400                m_hei += parseInt($(this).css('margin-top'));
6401                m_hei += parseInt($(this).css('margin-bottom'));
6402                m_hei += parseInt($(this).css('padding-top'));
6403                m_hei += parseInt($(this).css('padding-bottom'));
6404                $(this).attr('data-m-hei', m_hei + 'px');
6405            }
6406        });
6407
6408        $.each($('#main_container .imgBox .img-core'), function() {
6409            $(this).css('transition', 'none');
6410        });
6411
6412        // 0.2초 마다 갱신
6413        setInterval(imageBoxAutoResize, 200);
6414
6415
6416//        window.onresize = function(event) {
6417//            imageBoxAutoResize();
6418//        };
6419//        $(window).bind('resizeEnd', function() {
6420//            setTimeout(imageBoxAutoResize(), 50)
6421//        });
6422    }
6423
6424    /* 2020.03.10 재헌
6425     * 백그라운드 비디오 크기 설정 (16:9)
6426     * frame/box의 크기를 확인 후 맞는 사이즈의 클래스를 부여함
6427     */
6428    function initBackgroundFullSizeVideo() {
6429        var backgroundVideo = $('.box-background-video-fullwidth .video-iframe');
6430        if (backgroundVideo.length == 0) { return; }
6431        else {
6432            var w = $('#main_container').width();
6433            if (w == 0) {
6434                setTimeout(function() {
6435                    initBackgroundFullSizeVideo();
6436                }, 100);
6437                return;
6438            }
6439            else {
6440                resizeBackgroundFullSizeVideo();
6441                $(window).resize(function () {
6442                    resizeBackgroundFullSizeVideo();
6443                });
6444            }
6445        }
6446    }
6447    function resizeBackgroundFullSizeVideo() {
6448        $.each($('.box-background-video-fullwidth .video-iframe'), function() {
6449            var $t = $(this).parents('.frm, .box').first();
6450            var w = $t.width();
6451            var h = $t.height();
6452
6453            // 모바일에서 vimeo 배경설정 시 '소리 켜기' 버튼이 생기는 문제 때문에 전체 크기 상향 조정
6454            // if (isMobile()) {
6455            //     w += 100;
6456            //     h += 100;
6457            // }
6458
6459            if ($t.parents('.slider-frm').length > 0) {
6460                w = $t.parents('.slider-frm').width();
6461                h = $t.parents('.slider-frm').height();
6462            }
6463            else if ($t.parents('.tab-frm').length > 0) {
6464                w = $t.parents('.tab-frm').width();
6465                h = $t.parents('.tab-frm').height();
6466            }
6467            else if (w == 0 || h == 0) {
6468                $t.addClass('displayed');
6469                $t.parents('.frm').addClass('displayed');
6470                w = $t.width();
6471                h = $t.height();
6472            }
6473
6474            h += parseInt($t.css('padding-top'));
6475            h += parseInt($t.css('padding-bottom'));
6476            h += parseInt($t.css('margin-top'));
6477            h += parseInt($t.css('margin-bottom'));
6478
6479            var resolution = 'resolution-1920x1080'; // default;
6480            var resolution_array = [
6481                { w:320, h:180 },
6482                { w:480, h:270 },
6483                { w:640, h:360 },
6484                { w:800, h:450 },
6485                { w:864, h:486 },
6486                { w:960, h:540 },
6487                { w:1024, h:576 },
6488                { w:1152, h:648 },
6489                { w:1280, h:720 },
6490                { w:1366, h:768 },
6491                { w:1440, h:810 },
6492                { w:1600, h:900 },
6493                { w:1760, h:990 },
6494                { w:1920, h:1080 },
6495                { w:2048, h:1152 },
6496                { w:2560, h:1440 },
6497                { w:2880, h:1620 },
6498                { w:3200, h:1800 },
6499                { w:3840, h:2160 },
6500                { w:4096, h:2304 },
6501                { w:5120, h:2880 },
6502            ];
6503            $.each(resolution_array.reverse(), function() {
6504                if (w > this.w || h > this.h) { return false; }
6505                else {
6506                    resolution = 'resolution-' + this.w + 'x' + this.h;
6507                }
6508            });
6509
6510            if ($(this).hasClass(resolution)) return;
6511            else {
6512                $(this).removeClass(function (index, className) {
6513                    return (className.match(/(^|\s)resolution-\S+/g) || []).join(' ');
6514                });
6515                $(this).addClass(resolution);
6516            }
6517        });
6518    }
6519
6520    function is_InternetExplorer() {
6521        var agent = navigator.userAgent.toLowerCase();
6522        return (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1);
6523    }
6524
6525    /* 2020.03.11 재헌
6526     * IE, Chrome이 $t.offset().top 값을 다르게 출력하기 때문에 아래와 같이 처리
6527     */
6528    const _ZOOM = Number(window.getComputedStyle(document.body).zoom) || 1;
6529    $.fn.offsetTop = function() {
6530        if (_ZOOM === 1) {
6531            var offsetTop = $(this).offset().top - parseInt($(this).css('margin-top'));
6532            return is_InternetExplorer() ? offsetTop + $('body').scrollTop() : offsetTop;
6533        } else {
6534            return window.scrollY + (this[0].getBoundingClientRect().y * _ZOOM);
6535        }
6536    };
6537
6538    function isIpadOS() {
6539        return navigator.maxTouchPoints &&
6540            navigator.maxTouchPoints > 2 &&
6541            /MacIntel/.test(navigator.platform);
6542    }
6543
6544    function getScrollY() {
6545        if (isIpadOS()) {
6546            return window.scrollY / _ZOOM;
6547        } else {
6548            return window.scrollY;
6549        }
6550    };
6551
6552
6553    /* 2020.05.18 재헌
6554     * 동영상 컨텐츠 로딩 시 다른 컨텐츠의 로딩까지 느려지는 부분 개선
6555     * 로딩 순서 (동영상 외) -> (동영상)
6556     *
6557     * 2026.08 - 여기서 전량 주입하던 로직을 제거했다.
6558     * iframe 이 display:none(0x0) 인 상태에서 src 가 주입되면 유튜브가
6559     * 저해상도 썸네일을 확정해버리는 문제가 있었다.
6560     * script.inc.html 의 initVideoLazyLoad() 가 대신 처리한다.
6561     */
6562
6563    $(document).ready(function() {
6564        if ($('.read-content-next')) {
6565            $('.read-content-next').text('이전글');
6566            $('.read-content-prev').text('다음글');
6567        }
6568
6569        $("#main_container").delegate('.board-table-1 tr.board-tbody-tr, .board-table-2 tr.board-tbody-tr, .read-content-next, .read-content-prev', 'click', function (e) {
6570            const customInterval = setInterval(function() {
6571                if ($('.read-content-next')) {
6572                    $('.read-content-next').text('이전글');
6573                    $('.read-content-prev').text('다음글');
6574                    clearInterval(customInterval);
6575                }
6576            }, 1000)
6577        });
6578    });
6579</script>
vendor: 1 bytes, line 6579
6579

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.