Help
RSS
API
Feed
Maltego
Contact
Domain > www.pishoneng.net
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2018-05-21
222.239.223.73
(
ClassC
)
2025-01-24
13.124.106.16
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: nginxDate: Fri, 24 Jan 2025 22:15:11 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveSet-Cookie: QVSSID8311nm22l5tgvq2fdg8f2ou35q; path/; domainpishoneng.netExpires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidatePragma: no-cacheAccess-Control-Allow-Origin: * !DOCTYPE html>html langko>head> meta charsetutf-8> meta http-equivcontent-type contenttext/html; charsetutf-8/> meta http-equivX-UA-Compatible contentIEEdge/> meta nameviewport contentwidthdevice-width, initial-scale1.0> meta namegenerator contentQUV Homepage Builder/> meta namelanguage contentkr/> meta namereferrer contentalways> title>비손푸른엔지니어링(주) /title> meta namekeywords content푸른엔지니어링, 비손푸른엔지니어링/> meta namedescription content환경설비공사 등 폐기물처리 및 오염방지시설 건설업체/> meta propertyog:title content비손푸른엔지니어링(주)/> meta propertyog:description content환경설비공사 등 폐기물처리 및 오염방지시설 건설업체/> meta propertyog:url contenthttp://www.pishoneng.net//> meta propertyog:image content/s/og_image.png?v1737756911/> meta namenaver-site-verification contentf28933b3c4b4b0889fe2bc99288c3f027f5a8989 /> !--favicon--> link relshortcut icon hrefhttps://quv.kr/img/ico/qv_favicon.ico> link relcanonical hrefhttp://www.pishoneng.net/ /> meta namerobots contentindex,follow> link href/css/bootstrap.css?v230725 relstylesheet> link href/css/font-awesome.min.css?v230725 relstylesheet> link href/css/material-icons.min.css?v230725 relstylesheet> link href/css/simple-line-icons.css?v230725 relstylesheet> link href/css/style.css?v230725 relstylesheet typetext/css mediaall/> link href/css/mobile.css?v230725 relstylesheet typetext/css mediaall/> link href/css/header.css?v230725 relstylesheet typetext/css mediaall/> link href/css/uploadfile.css?v230725 relstylesheet typetext/css mediaall/> link href/css/font.css?v230725 relstylesheet typetext/css mediaall/> link href/css/form.css?v230725 relstylesheet typetext/css mediaall/> link href/css/table.css?v230725 relstylesheet typetext/css mediaall/> link href/css/jquery-ui.1.12.css?v230725 relstylesheet typetext/css mediaall/> !--pagespeed link href/css/bootstrap-colorpicker.css?v230725 relstylesheet typetext/css mediaall/>--> link href/css/slider.css?v230725 relstylesheet typetext/css mediaall/> link href/css/animate.css?v230725 relstylesheet typetext/css mediaall/> link href/css/jquery.scrollbar.css?v230725 relstylesheet typetext/css mediaall/> !--page--> !--pagespeed link href/css/jquery.mCustomScrollbar.css?v230725 relstylesheet typetext/css mediaall>--> link href/css/default.less?t1737756911 relstylesheet/less typetext/css/> !--link href/live/s/site.less?t1737756911 relstylesheet/less typetext/css/>--> !-- link relstylesheet hrefhttps://unpkg.com/ag-grid-community/dist/styles/ag-grid.css>--> !-- link relstylesheet href/css/ag-theme-material.css>--> link relstylesheet href/css/ag-grid.css> link relstylesheet href/css/ag-theme-material.css> link href/css/bootstrap-datepicker3.css?v230725 relstylesheet typetext/css mediaall/> link href/css/bootstrap-timepicker.css?v230725 relstylesheet typetext/css mediaall/> !--pagespeed link href/css/tablecellsselection.css?v230725 relstylesheet typetext/css mediaall/>--> !--link href/css/ScrollTrigger.css?v-->!-- relstylesheet typetext/css mediaall/>--> link href/css/fullcalendar.css?v230725 relstylesheet typetext/css mediaall/> link href/css/fullcalendar.min.css?v230725 relstylesheet typetext/css mediaall/> link href/css/fullcalendar.print.min.css?v230725 relstylesheet typetext/css mediaprint/> !-- ionicons --> link href/css/ionicons/ionicons.css?v230725 relstylesheet> link hrefhttps://unpkg.com/ionicons@4.5.10-0/dist/css/ionicons.min.css relstylesheet> script> var qvDebug{}; qvDebug.drag1;//1:debug on var STIDswe9htxrh; var SVID1; var SPID1; var MSIDdftb6o; var SITE_NAME비손푸른엔지니어링; var USE_APP1; var LANGko; var SITE_URLhome; var QV_BASE_OBJ{sskey:, token:ccccba9e356888df883905b2d094b5e8, stid:STID, svid:SVID, spid:SPID, msid:MSID, site_name:SITE_NAME, use_app:USE_APP, eng_domain:www.pishoneng.net, member_account_type:1,is_free_version:0, dev:}; var CKEDITOR_BASEPATH /js/ck3/; var IS_LOGINED0; less { //env: production, //development,production-으로 하면 캐싱 오류남 env: production, logLevel: 2, async: false, fileAsync: false, poll: 1000, functions: {}, dumpLineNumbers: comments, relativeUrls: false }; var account ; var auth ; var group ; var isAdmin 0; if (QV_BASE_OBJ.is_free_version1 && self ! top) { //12.6 alert(도메인으로 이용하시려면\n큐브 프리미엄 버전으로 업그레이드 해주세요.\n큐브 사이트로 이동합니다); location.hrefhttps://www.quv.kr; } /script> script src/js/less.min.js?v230725 typetext/javascript>/script> script>//less.watch();/script> !--if lt IE 9> script typetext/javascript src/js/html5shiv.js?v230725>/script> !endif--> script typetext/javascript src/js/jquery.2.2.4.min.js?v230725>/script> script typetext/javascript src/js/bootstrap.js?v230725>/script> script>$.fn.bootstrapBtn $.fn.button.noConflict();/script> !--반드시 bootsrap - jquery-ui 사이에 위치--> script typetext/javascript src/js/jquery-ui.1.12.min.js?v230725>/script> script typetext/javascript src/js/jquery.lazyload.js?v230725>/script> script typetext/javascript src/js/jquery-migrate-1.2.1.min.js?v230725>/script> script typetext/javascript src/js/jquery.ui.touch-punch.min.js?v230725>/script> !--script typetext/javascript src/js/jquery.htmlClean.js?v230725>/script>--> script typetext/javascript src/js/global.js?v230725 charsetutf-8>/script> script typetext/javascript src/js/script.js?v230725 charsetutf-8>/script> script typetext/javascript src/js/jquery.uploadfile.js?v230725>/script> !--script typetext/javascript src/js/ck3/ckeditor.js?v-->!-- charsetutf-8>/script>--> !--pagespeed script typetext/javascript src/js/bootstrap-colorpicker.new.js?v230725 charsetutf-8>/script>--> script typetext/javascript src/js/jquery.scrollbar.js?v230725 charsetutf-8>/script> !--pagespeed script typetext/javascript src/js/jquery.mCustomScrollbar.concat.min.js?v230725>/script>--> script typetext/javascript src/js/bootstrap-datepicker.min.js?v230725>/script> script typetext/javascript src/js/bootstrap-timepicker.min.js?v230725>/script> !--pagespeed script typetext/javascript src/js/tablecellsselection.js?v230725>/script>--> script typetext/javascript src/js/carousel-swipe.js?v230725>/script> script typetext/javascript src/js/jquerymobile-swipeupdown.js?v230725>/script> !--script typetext/javascript src/js/ScrollTrigger.min.js?v-->!-->/script>--> !--script typetext/javascript src/js/webfont.js?v-->!-->/script>--> script srchttps://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js>/script> script typetext/javascript> var webfontJson_Header {google:Noto Sans KR,custom:}; var webfontJson_Body {google:,custom:Noto Sans KR}; var webfontJson_Footer {google:,custom:Noto Sans KR}; var webfontJson_Fixed {google:,custom:Noto Sans KR}; var webfontJson_Popup ; var webfontArray ; webfontArray.push($.parseJSON(webfontJson_Header)); webfontArray.push($.parseJSON(webfontJson_Body)); webfontArray.push($.parseJSON(webfontJson_Footer)); webfontArray.push($.parseJSON(webfontJson_Fixed)); webfontArray $.merge(webfontArray, $.parseJSON(webfontJson_Popup.replace(/{/g, {).replace(/}/g, }))); var webfont_google ; var webfont_custom ; var webfont_custom_url css/font.css.php?family; var webfont_exclude agGridMaterial; $.each(webfontArray, function(index, value) { if (this.google ! undefined && value ! null) { $.each(value.google, function() { var font String(this) + :300,400,700; if (String(this) || webfont_exclude.indexOf(String(this)) > -1) return; if ($.inArray(font, webfont_google) -1) { webfont_google.push(font); } }); } if (this.custom ! undefined && value ! null) { $.each(value.custom, function() { if ($.inArray(String(this), webfont_custom) -1) { webfont_custom.push(String(this)); webfont_custom_url + String(this).replace(/ /g,+); webfont_custom_url + |; } }); } }); var webfont new Object(); webfont.google webfont_google; webfont.custom webfont_custom; webfont.custom_url / + webfont_custom_url.slice(0, -1); var webfontconfig new Object(); // if (webfont.google.length > 0) { webfontconfig.google { families : webfont.google } } if (webfont.custom.length > 0) { webfontconfig.custom { families : webfont.custom, urls : webfont.custom_url } } /* 2020.01.31 재헌 * 묶어서 호출했을 때 하나라도 지원하지 않는 폰트가 있으면 그 하위로 모두 호출하지 않는 문제가 있음. * 위 이유로 구글 폰트는 개별 호출한다. */ $.each(webfont.google, function() { var webfontconfig_re new Object(); webfontconfig_re.google { families : this }; WebFont.load(webfontconfig_re); }); if (!$.isEmptyObject(webfontconfig)) { WebFontConfig webfontconfig;// WebFontConfig {// google: {// 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// }// }; // https://github.com/typekit/webfontloader // v1.0 -> v1.6.26 (function() { var wf document.createElement(script); wf.src https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js; wf.type text/javascript; wf.async true; var s document.getElementsByTagName(script)0; s.parentNode.insertBefore(wf, s); })(); } /script> script typetext/javascript src//log1.quv.kr/log/qa.js>/script> !-- 다음 우편번호 검색 --> !--script srchttps://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js>/script>--> !-- 정적 로딩 --> script srchttps://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js?autoloadfalse>/script> !-- 동적 로딩 --> !-- 다국어 --> script typetext/javascript src/module/language/lang.ko.js?v230725>/script> /head>body classlive transform styledisplay: none;>div idmain_container class1> div classheader hl1-3 transform useFixed> div classheader1 sub-mn-type-1 data-hei109 data-scr-hei80 styleborder-bottom: 0px solid rgb(85, 85, 85); height: 109px;> div classheader-contents boxing styleheight: 109px;> div classcol-xs-4 styleheight: auto; pp_grid4> div classal-box column al-l> div classbox tc hsync-nlh imgBox tc_drag idbdXPzK styledisplay: table-cell; height: 109px; padding: 0px;> div classpreview>/div> div classview img-view tb-c va-m styletext-align: center; height: 109px;> a classpreview-layer href# data-target#ImgModal data-togglemodal data-objimg data-modehe>/a> a idixYRCh classimage-area stylewidth: auto;> div classimg-core stylebackground: url("https://cdn.quv.kr/swe9htxrh%2Fup%2F5d566fa888023_800.png") 50% 50% / contain no-repeat; width: 115px; height: 109px; border-radius: 0px; max-height: 109px;> /div> div classimg-op stylewidth: 115px; left: 0px; height: auto; top: 0px; background-color: rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; max-height: 109px;> div classcaption-txt>p>br>/p>/div> /div> style>#ixYRCh:hover .img-op{background-color:transparent !important;}/style>/a> /div> /div>div classtc box logoBox hsync-nlh tc_drag styleheight: 109px; padding: 0px 10px; display: table-cell; idbDFC8C> div classpreview>/div> div classview logo_container> div classlogo-text>a href/ stylefont-size: 25px; font-weight: bold; letter-spacing: 0px; color: rgb(0, 0, 0); font-family: arial, "Noto Sans KR";>비손푸른엔지니어링(주)/a>/div> div classlogo-img hide>a href/>img classlogo-img-core src/img/e/logo/quv-logo.png stylemax-height: 109px;>/a>/div> /div> /div>/div> /div> div classcol-xs-6 styleheight: auto;> div classal-box column al-c> ul classmn-ul tc box hsync tc_drag mn-sty-2 styleheight: 109px; line-height: 109px; idbUbCKS>headerstart>/headerstart>li classmn-item> a classmn-link href/home>HOME/a>/li>li classmn-item> a classmn-link>기업소개/a>span classmn-dropdown>/span>ul classsub-mn styletop: 337px;>li classmn-item> a classmn-link href/25>인사말/a>/li>li classmn-item> a classmn-link href/25#tab-2TNpCO-Jliyl>회사연혁/a>/li>li classmn-item> a classmn-link href/25#tab-qEpeq target_blank>산업재산권/a>/li>li classmn-item> a classmn-link href/25#tab-EFRrj>조직도/a>/li>li classmn-item> a classmn-link href/25#tab-Wq0ZM>오시는길/a>/li>/ul>/li>li classmn-item> a classmn-link>제품소개/a>span classmn-dropdown>/span>ul classsub-mn styletop: 337px;>li classmn-item> a classmn-link href/business>비점오염저감시설/a>/li>/ul>/li>li classmn-item> a classmn-link>납품실적/a>span classmn-dropdown>/span>ul classsub-mn styletop: 337px;>li classmn-item> a classmn-link href/product>시공사진/a>/li>li classmn-item> a classmn-link href/19>시공실적/a>/li>/ul>/li>li classmn-item> a classmn-link>고객센터/a>span classmn-dropdown>/span>ul classsub-mn styletop: 337px;>li classmn-item> a classmn-link href/board>게시판/a>/li>/ul>/li>headerend>/headerend> /ul> /div> /div> div classcol-xs-2 styleheight: auto;> div classal-box column al-r> div classbox tc hsync-nlh btnBox tc_drag idbuJ4Wq styledisplay: table-cell; height: 109px; padding: 0px;> div classpreview>/div> div classview tb-c va-m> a classpreview-layer href# data-target#ButtonModal data-togglemodal data-objbtn>/a> a idbtnN7ubW classbutton-area stylebackground-color:#6d6d6d;padding:10px 25px;border:1px solid #ffffff;border-radius:0px;text-align: center !important;display: inline-block; href/6#tab-2KQfI4>p>span stylefont-size:18px;>span stylecolor:#ffffff;>문의하기/span>/span>/p>style>#btnN7ubW:hover {color:#000000 !important;background-color:#ffffff !important;border-color:transparent !important;}#btnN7ubW:hover span,#btnN7ubW:hover p {color:#000000 !important;/style>/a> /div> /div>/div> /div> /div> div classheader-op>/div> /div> logo>{type:txt,text:비손푸른엔지니어링(주),font_size:25,font_weight:bold,font_family_ko:Noto Sans KR,font_family_en:arial,color:#000000,letter_spacing:0}/logo>menuitems>li classmn-item> a classmn-link href/home>HOME/a>/li>li classmn-item> a classmn-link>기업소개/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/25>인사말/a>/li>li classmn-item> a classmn-link href/25#tab-2TNpCO-Jliyl>회사연혁/a>/li>li classmn-item> a classmn-link href/25#tab-qEpeq target_blank>산업재산권/a>/li>li classmn-item> a classmn-link href/25#tab-EFRrj>조직도/a>/li>li classmn-item> a classmn-link href/25#tab-Wq0ZM>오시는길/a>/li>/ul>/li>li classmn-item> a classmn-link>제품소개/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/business>비점오염저감시설/a>/li>/ul>/li>li classmn-item> a classmn-link>납품실적/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/product>시공사진/a>/li>li classmn-item> a classmn-link href/19>시공실적/a>/li>/ul>/li>li classmn-item> a classmn-link>고객센터/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/board>게시판/a>/li>/ul>/li>/menuitems>webfont>{google:Noto Sans KR,custom:}/webfont>/div>div classheader-mobile hl1-1 transform> div classheader1 styletop: 0px; position: absolute; data-top0> div classheader-contents boxing style> div classcol-xs-2 styleheight: auto;> div classal-box column al-c> div classtc box hsync-nlh tc_drag idbMcqNK> div classpreview>/div> div classview> div classheader-mobile-nav-btn> i classicon-menu>/i> /div> /div> /div> /div> /div> div classcol-xs-8 styleheight: auto;> div classal-box column al-c> div classtc box hsync-nlh logoBox tc_drag idbbd9H5> div classpreview>/div> div classview logo_container> div classlogo-text>a href/ stylefont-family:arial, Noto Sans KR;>QUV/a>/div> div classlogo-img hide>a href/>img classlogo-img-core src/img/e/logo/quv-logo.png stylemax-height: 100px;>/a>/div> /div> /div> /div> /div> div classcol-xs-2 styleheight: auto;> div classal-box column al-c> div classbox tc hsync-nlh tc_drag idbrLcSA> div classpreview>/div> div classview> /div> /div> /div> /div> /div> div classheader-op> /div> /div> div classheader-mobile-side-nav hsl-1 data-topNaN styleposition: absolute;> !--logo--> div classlogo_container> div classlogo-text>a href/ stylefont-family:arial, Noto Sans KR;>QUV/a>/div> div classlogo-img hide>a href/>img classlogo-img-core src/img/e/logo/quv-logo.png stylemax-height: 100px;>/a>/div> /div> !--login--> div idheader-mobile-ml-area styleoverflow: auto; classnotuse> div classlogin-before active> div classml-item login-link> a href# data-target#LoginModal rolebutton data-togglemodal>로그인/a> /div> div classml-item join-link> a href/join>회원가입/a> /div> /div> div classlogin-after> div classml-item logout-link> a idLogOutBtn href#>로그아웃/a> /div> div classml-item mypage-link> a href/mypage>정보수정/a> /div> /div> /div> !--menu--> div classmn-ul-container> ul classmn-ul tc box hsync style idbQ62cN>headerstart>/headerstart>li classmn-item> a classmn-link href/home>HOME/a>/li>li classmn-item> a classmn-link>기업소개/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/25>인사말/a>/li>li classmn-item> a classmn-link href/25#tab-2TNpCO-Jliyl>회사연혁/a>/li>li classmn-item> a classmn-link href/25#tab-qEpeq target_blank>산업재산권/a>/li>li classmn-item> a classmn-link href/25#tab-EFRrj>조직도/a>/li>li classmn-item> a classmn-link href/25#tab-Wq0ZM>오시는길/a>/li>/ul>/li>li classmn-item> a classmn-link>제품소개/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/business>비점오염저감시설/a>/li>/ul>/li>li classmn-item> a classmn-link>납품실적/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/product>시공사진/a>/li>li classmn-item> a classmn-link href/19>시공실적/a>/li>/ul>/li>li classmn-item> a classmn-link>고객센터/a>span classmn-dropdown>/span>ul classsub-mn>li classmn-item> a classmn-link href/board>게시판/a>/li>/ul>/li>headerend>/headerend> /ul> /div> div classheader-mobile-side-nav-close>×/div> /div>/div> div classbody pl-h> div classfrm m-pd-v-0 m-pd-h-15 mobile-font-scale-1 qv-ani-ele fade-in qv-in-viewport styletext-align: center; margin: 0px; display: block; padding: 109px 0px 0px; background: url("//cdn.quv.kr/swe9htxrh%2Fup%2F5d567199012d0_1920.jpg") 50% 50% / cover no-repeat scroll rgb(46, 117, 197); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei idffeqSb data-cwid> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: auto;> div classrow clearfix tb-c va-m styletransform: none; display: table-cell; height: auto;> div classcol-sm-12 column styleheight: auto;> div classbox tbu iconBox qv-ani-ele fade-in qv-in-viewport styletext-align: center; display: table; height: 45px; margin: 0px; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; idbonsjp data-hei45px data-styletext-align: center; display: table; height: 45px;> div classpreview>/div> div classview tb-c va-b data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area stylebackground-color:rgba(0,0,0,0);padding:9px;border-radius:0px;display: inline-block;> i classfa fa-minus stylecolor:#ffffff;font-size:26px;>/i> /a> /div> /div> div classbox tbu txtBox qv-ani-ele fade-in qv-in-viewport idbr0PaV data-hei196 styledisplay: table; height: 322px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size:36px;>span stylecolor:#ffffff;>깨끗하고 맑은 /span>/span>span stylecolor:#ffffff;>span stylefont-size:52px;>물, 사람, 기업/span>/span>/p>p classtext-xl styletext-align: center;>span stylefont-size:72px;>span stylecolor:#ffffff;>비손푸른엔지니어링(주) /span>/span>/p>/div> /div> /div> /div> /div> /div> /div>/div>div classfrm m-pd-v-0 m-pd-h-0 mobile-font-scale-3 styletext-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei251 idffuXRe data-cwid data-finder-foldedfalse data-styletext-align: center; margin: 0px; display: block; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px 0px 0px 2px;> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: 252px;> div classrow clearfix tb-c va-m styletransform: none; display: table-cell; height: auto;> div classcol-sm-12 column styleheight: 235px; min-height: 235px;> div classfrm styletext-align: center; margin: 0px; display: block; padding: 0px; background: none rgb(215, 214, 226); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei236 idfE6gc4 data-cwidb data-styletext-align: center; margin: 0px; display: block; padding: 0px; background: none rgb(215, 214, 226); border: 0px solid transparent; border-radius: 0px 0px 0px 2px;> div classpreview>/div> div classview ha-c boxing> div classtb tbu styleheight: 235px;> div classrow clearfix tb-c va-m styletransform: none; display: table-cell; height: auto;> div classcolumn col-xs-12 col-sm-4 styleheight: 235px; min-height: 235px;> div classbox tbu txtBox idbP2SrG data-hei206 styledisplay: table; height: 206px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px; data-styledisplay: table; data-m-hei87px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size:32px;>/span>span stylefont-size:42px;>strong>span stylecolor:#000080;>span styleline-height:5px;>font faceArial>Pishon Green/font>/span>/span>/strong>/span>/p>p>span stylefont-size:32px;>strong>span styleline-height:5px;>em>font faceArial>Engineers & Constructors/font>/em>/span>/strong>/span>/p>/div> /div> /div> /div> div classcolumn col-xs-12 col-sm-4 styleheight: 235px; min-height: 235px;> div classbox tbu txtBox idbClya5 data-hei234 styledisplay: table; height: 235px; margin: 0px; padding: 0px 20px; background: none transparent; text-align: center; border: 0px solid transparent; border-radius: 0px; data-styledisplay: table; data-m-hei121px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p styletext-align: left;>span stylefont-size:16px;>strong>span styleletter-spacing:0px;margin-right:-0px;>환경시설과 제품을 전문적으로 설계, 생산 및 시공하고 있습니다./span>/strong>/span>/p>p styletext-align: left;>span stylefont-size:16px;>span styleletter-spacing:0px;margin-right:-0px;>자세한 내용은 사업소개, 기업소개 메뉴 버튼을 클릭해주세요./span>/span>/p>/div> /div> /div> /div> div classcolumn col-sm-2 styleheight: 235px; min-height: 235px;> div classfrm styletext-align: center; margin: 0px; display: block; padding: 0px; background: none rgb(33, 47, 94); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei234 idfMKDbE data-cwid> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: 235px;> div classrow clearfix tb-c va-m styletransform: none; display: table-cell;> div classcol-sm-12 column styleheight: 225px; min-height: 225px;> div classfrm spacer-frm empty-frm idfTPMtZ styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 30px;>/div> /div> /div> /div> /div> div classbox tbu iconBox styletext-align: center; display: table; height: 60px; margin: 0px; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; idbf10NW data-hei60 data-styletext-align: center; display: table; height: 45px; data-m-hei23px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area style> i classicon-info stylecolor:#ffffff;font-size:26px;>/i> /a> /div> /div> div classbox tbu txtBox idbsi7J2 data-hei50 styledisplay: table; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: 0px solid transparent; border-radius: 0px; height: 50px; data-m-hei45px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse> p classtext-m styletext-align: center;>span stylefont-size:28px;>strong>span styleletter-spacing:4px;margin-right:-4px;>span stylecolor:#ffffff;>기업소개/span>/span>/strong>/span>/p> /div> /div> /div> div classbox tbu btnBox styletext-align: center; display: table; margin: 0px; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; height: 65px; idbrQDNM data-hei64 data-m-hei10px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#ButtonModal data-togglemodal data-objbtn>/a> a idbtndm3ks classbutton-area stylebackground-color:rgba(255,255,255,0.02);padding:8px 20px;border:1px solid #ffffff;border-radius:0px;text-align: center !important;display: inline-block; href/25#tab-1TNpCO-Jliyl>p>span stylefont-size:16px;>strong>span stylecolor:#ffffff;>바로가기/span>/strong>/span>/p>style>#btndm3ks:hover {color:#212f5e !important;background-color:#ffffff !important;border-color:#ffffff !important;}#btndm3ks:hover span,#btndm3ks:hover p {color:#212f5e !important;/style>/a> /div> /div> div classfrm spacer-frm empty-frm idflkO5t styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 15px;>/div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> div classcolumn col-sm-2 styleheight: 235px; min-height: 235px; pp_grid4> div classfrm styletext-align: center; margin: 0px; display: block; padding: 0px; background: none rgb(89, 89, 97); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei234 idfQe2mL data-cwid> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: 235px;> div classrow clearfix tb-c va-m styletransform: none; display: table-cell;> div classcol-sm-12 column styleheight: 225px; min-height: 225px;> div classfrm spacer-frm empty-frm idfHGchZ styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 30px;>/div> /div> /div> /div> /div> div classbox tbu iconBox styletext-align: center; display: table; height: 60px; margin: 0px; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; idbD48RE data-hei60 data-styletext-align: center; display: table; height: 32px; margin: 0px; padding: 0px; background: none rgb(33, 47, 94); border: 0px solid transparent; border-radius: 0px 0px 0px 2px; data-m-hei40px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area style> i classicon-book-open stylecolor:#ffffff;font-size:26px;>/i> /a> /div> /div> div classbox tbu txtBox idbqx17M data-hei50 styledisplay: table; margin: 0px; padding: 0px; background: none transparent; text-align: center; border: 0px solid transparent; border-radius: 0px; height: 50px; data-styledisplay: table; margin: 0px; padding: 0px; background: none rgb(33, 47, 94); text-align: center; border: 0px solid transparent; border-radius: 0px 0px 0px 2px; height: 41px; data-m-hei45px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse> p classtext-m styletext-align: center;>span stylefont-size:28px;>strong>span styleletter-spacing:4px;margin-right:-4px;>span stylecolor:#ffffff;>사업소개/span>/span>/strong>/span>/p> /div> /div> /div> div classbox tbu btnBox styletext-align: center; display: table; margin: 0px; padding: 0px; background: none transparent; border: 0px solid transparent; border-radius: 0px; height: 65px; idbjZz42 data-hei64 data-styletext-align: center; display: table; margin: 0px; padding: 0px; background: none rgb(33, 47, 94); border: 0px solid transparent; border-radius: 0px 0px 0px 2px; height: 79px; data-m-hei31px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#ButtonModal data-togglemodal data-objbtn>/a> a idbtnvYvBN classbutton-area stylebackground-color:rgba(255,255,255,0);padding:8px 20px;border:1px solid #ffffff;border-radius:0px;text-align: center !important;display: inline-block; href/3#tab-2DMyBm>p>span stylefont-size:16px;>strong>span stylecolor:#ffffff;>바로가기/span>/strong>/span>/p>style>#btnvYvBN:hover {color:#212f5e !important;background-color:#ffffff !important;border-color:#ffffff !important;}#btnvYvBN:hover span,#btnvYvBN:hover p {color:#212f5e !important;/style>/a> /div> /div> div classfrm spacer-frm empty-frm idfBaROG styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 15px;>/div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div>/div>div classfrm m-pd-v-0 mobile-font-scale-3 m-pd-h-35 styletext-align: center; margin: 12px 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei901 idfDcXMd data-cwidb data-styletext-align: center; margin: 12px 0px; display: block; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px;> div classpreview>/div> div classview ha-c boxing> div classtb tbu styleheight: 664px;> div classrow clearfix tb-c va-m styletransform: none; height: auto; display: table-cell;> div classcolumn col-sm-12 styleheight: auto; min-height: 664px; pp_grid12> div classbox tbu iconBox qv-ani-ele t-to-b qv-in-viewport styletext-align: center; display: table; height: 26px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; idbmOH0U data-hei27 data-styletext-align: center; display: table; height: 45px;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area style> i classfa fa-minus stylecolor:#212f5e;font-size:26px;>/i> /a> /div> /div> div classbox tbu txtBox qv-ani-ele t-to-b qv-in-viewport idbN4Eal data-hei84 styledisplay: table; height: 85px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px; data-styledisplay: table;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size: 36px; letter-spacing: 5px;>b>공지사항/b>/span>/p>/div> /div> /div>div classbox tbu boardBox data-height10 idbri4zz styledisplay: table; data-hei213>div classpreview>/div>div classview tb-c va-t>a href# data-target#BoardModal data-togglemodal data-objbox classpreview-layer>/a>div classboard-theme theme-4>div classboard-category styledisplay: none;>div classcol-sm-2 board-category-item default data-category-id>div>전체 보기/div>/div>/div>div classboard-search input-group>select classboard-search-select>option valueall>전체/option>option valuesubject>제목/option>option valuecontent>내용/option>option valuewriter>작성자/option>/select>input typetext classform-control board-search-input>span classboard-search-button>button typesubmit onclicksearchBoardArticle(this);>span classfa fa-search>/span>/button> /span>/div>table classboard-table-1 idtgoahh data-pagesize3 data-height10 data-typemove data-languageen data-bidtgoahh data-thead-fontsize12 data-tbody-fontsize12>thead classboard-thead>tr classboard-thead-tr>th classboard-thead-item-no>NO/th>th classboard-thead-item-title>TITLE/th>th classboard-thead-item-writer>WRITER/th>th classboard-thead-item-hits>HITS/th>th classboard-thead-item-views>VIEWS/th>th classboard-thead-item-date>DATE/th>/tr>/thead>tbody classboard-tbody>tr classboard-tbody-tr notice idoWL1c data-typenm>td classboard-tbody-item board-tbody-item-count stylefont-size: 11px;>div>Notice/div>/td>td classboard-tbody-item board-tbody-item-title stylepadding-left:20px>i classicon-volume-2 aria-hiddentrue>/i>div stylefont-weight:bold;>비점오염저감시설 성능검사 인증(2020.12. 한국 환경공단) 통과/div>/td>td classboard-tbody-item board-tbody-item-writer>관리자/td>td classboard-tbody-item board-tbody-item-hits>i classicon-like aria-hiddentrue styledisplay:none;>/i>0/td>td classboard-tbody-item board-tbody-item-views>i classicon-eye aria-hiddentrue styledisplay:none;>/i>86/td>td classboard-tbody-item board-tbody-item-date>2021-01-07/td>/tr>/tbody>/table>div classpager>ol classpaging-btn-group>li classpaging-btn-group__item left>i classi-chevron-left>/i>/li>li classpaging-btn-group__item right>i classi-chevron-right>/i>/li>/ol>/div>div classboard-write board-write-1 onclickmoveWriteForm(this); stylebackground-color:#505050;padding:10px 50px;border:1.11111px solid #505050;border-radius:0px;text-align: center !important;display: inline-block;>p>span stylecolor:#ffffff;>글쓰기/span>/p>style>#bri4zz .board-write:hover {color:#ffffff !important;background-color:#505050 !important;border-color:#505050 !important;}#bri4zz .board-write:hover span {color:#ffffff !important;}/style>/div>/div>style classboard-design>/style>/div>/div> div classbox tbu txtBox qv-ani-ele t-to-b qv-in-viewport idbhMrUH data-hei89 styledisplay: table; height: 89px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px; data-styledisplay: table;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size:18px;>strong>span styleletter-spacing:0px;margin-right:-0px;>비손푸른엔지니어링(주)는 항상 고객과의 소통을 위해 노력합니다./span>/strong>/span>/p>p>span stylefont-size:14px;>span styleletter-spacing:0px;margin-right:-0px;>궁금하신 사항은 언제든지 문의 바랍니다. 항상 고객의 입장에서 생각합니다./span>/span>/p>/div> /div> /div> div classbox tbu lineBox styleheight: 50px; display: table; data-m-hei50px data-hei50 idbIDAWe> div classpreview>/div> div classview tb-c va-m> a href# data-target#LineModal data-togglemodal data-objbox classpreview-layer>/a> div classdrag_inner contenteditablefalse> p classline stylebackground: url("/img/d/lin/line_x_black.png") center center repeat-x; height: 15px; width: 100%; margin: 0px auto;>/p> /div> /div> /div> div classfrm qv-ani-ele b-to-t qv-in-viewport styletext-align: center; margin: 0px; display: block; padding: 0px; background: none rgba(190, 193, 199, 0); border: 0px solid transparent; border-radius: 0px; data-m-hei data-hei413 idflBHjY data-cwid> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: 414px;> div classrow clearfix tb-c va-m styletransform: none; height: auto; display: table-cell;> div classcolumn pp_last_grid col-sm-6 styleheight: auto; min-height: 330px; pp_grid8> div classbox tbu iconBox styletext-align: center; display: table; height: 70px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; idbyLrJk data-hei70> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area style> i classfa fa-map-marker stylecolor:#212f5e;font-size:45px;>/i> /a> /div> /div>div classbox tbu txtBox idbQnXkV data-hei154 styledisplay: table; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px; height: 155px; data-styledisplay: table; data-m-hei79px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size:28px;>b>오시는길 안내/b>/span>/p>p>span stylefont-size:16px;>주소 : 서울시 송파구 법원로 128/span>/p>p>span stylefont-size: 16px;>SKV1 GL메트로시티 B동 1403호/span>/p>/div> /div> /div>div classbox tbu btnBox styletext-align: center; display: table; height: 85px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; idbwRNFd data-hei84 data-styletext-align: center; display: table; height: 137px;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#ButtonModal data-togglemodal data-objbtn>/a> a idbtnHlVaz classbutton-area stylebackground-color:rgba(33,47,94,1);padding:10px 25px;border:1px solid transparent;border-radius:0px;text-align: center !important;display: inline-block; href/25#tab-Wq0ZM>p>span stylefont-size:16px;>font color#ffffff>오시는길/font>/span>/p>style>#btnHlVaz:hover {color:#ffffff !important;background-color:#000000 !important;border-color:#000000 !important;}#btnHlVaz:hover span,#btnHlVaz:hover p {color:#ffffff !important;/style>/a> /div> /div>div classfrm spacer-frm empty-frm idfeXMf5 styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 10px; data-m-hei45px>/div> /div> /div> /div> /div>/div> div classcolumn col-sm-6 styleheight: auto; min-height: 330px;> div classbox tbu iconBox styletext-align: center; display: table; height: 70px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; idboHqzv data-hei70> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#IconModal data-togglemodal data-objicon>/a> a classicon-area style> i classfa fa-commenting stylecolor:#212f5e;font-size:45px;>/i> /a> /div> /div> div classbox tbu txtBox idbUkGcS data-hei154 styledisplay: table; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); text-align: center; border: 0px solid transparent; border-radius: 0px; height: 155px; data-styledisplay: table; data-m-hei95px> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> div classdrag_inner qv-text contenteditablefalse>p>span stylefont-size:28px;>b>문의/b>/span>/p>p>span stylefont-size: 16px;>TEL : 02-445-5805 /span>/p>p>span stylefont-size: 16px;>FAX : 02-6003-0072/span>/p>p>span stylefont-size: 16px;>E-MAIL : pishoneng@naver.com/span>/p>/div> /div> /div> div classbox tbu btnBox styletext-align: center; display: table; height: 85px; margin: 0px; padding: 0px; background: none rgba(0, 0, 0, 0); border: 0px solid transparent; border-radius: 0px; idbS3GmT data-hei84 data-styletext-align: center; display: table; height: 137px;> div classpreview>/div> div classview tb-c va-m data-lh1.4 styleletter-spacing: 0em; line-height: 1.4; display: table-cell;> a classpreview-layer href# data-target#ButtonModal data-togglemodal data-objbtn>/a> a idbtnxVT8I classbutton-area stylebackground-color:#212f5e;padding:10px 25px;border:1px solid rgba(0,0,0,0);border-radius:0px;text-align: center !important;display: inline-block; href/6#tab-2KQfI4> p>span stylefont-size:16px;>span stylecolor:#ffffff;>문의하기/span>/span>/p> style>#btnxVT8I:hover {color:#ffffff !important;background-color:#000000 !important;border-color:#000000 !important;}#btnxVT8I:hover span {color:#ffffff !important;/style> /a> /div> /div> div classfrm spacer-frm empty-frm idfbogkl styledisplay: block; data-heiauto data-m-hei45px> div classpreview>/div> div classview> div classtb tbu> div classrow clearfix tb-c va-m styletransform: none;> div classspacer-label styledisplay: block;>span class styledisplay: none;>/span>/div> div classspacer styleheight: 10px;>/div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div>/div>style classmobile-box style>@media (max-width: 767px) {#bP2SrG{height:87px !important;}#bClya5{height:121px !important;}#bf10NW{height:28px !important;}#bsi7J2{height:45px !important;}#brQDNM{height:37px !important;}#bD48RE{height:40px !important;}#bqx17M{height:45px !important;}#bjZz42{height:37px !important;}#bw3Uy8{height:50px !important;}#bp32nD{height:1326px !important;}#bnUHuN{height:50px !important;}#bZOfhW{height:41px !important;}#bpP2Pi{height:15px !important;}#bQnXkV{height:79px !important;}#bUkGcS{height:95px !important;}} .mobile_editor_mode #bP2SrG{height:87px !important;}.mobile_editor_mode #bClya5{height:121px !important;}.mobile_editor_mode #bf10NW{height:28px !important;}.mobile_editor_mode #bsi7J2{height:45px !important;}.mobile_editor_mode #brQDNM{height:37px !important;}.mobile_editor_mode #bD48RE{height:40px !important;}.mobile_editor_mode #bqx17M{height:45px !important;}.mobile_editor_mode #bjZz42{height:37px !important;}.mobile_editor_mode #bw3Uy8{height:50px !important;}.mobile_editor_mode #bp32nD{height:1326px !important;}.mobile_editor_mode #bnUHuN{height:50px !important;}.mobile_editor_mode #bZOfhW{height:41px !important;}.mobile_editor_mode #bpP2Pi{height:15px !important;}.mobile_editor_mode #bQnXkV{height:79px !important;}.mobile_editor_mode #bUkGcS{height:95px !important;}/style>style classmobile-frm style>@media (max-width: 767px) {#ffeqSb > .view > .tb{height:423px !important;}#ffuXRe > .view > .tb{height:620px !important;}#fE6gc4 > .view > .tb{height:620px !important;}#fMKDbE > .view > .tb{height:200px !important;}#fTPMtZ > .view .spacer {height:45px !important;}#flkO5t > .view .spacer {height:45px !important;}#fQe2mL > .view > .tb{height:212px !important;}#fHGchZ > .view .spacer {height:45px !important;}#fBaROG > .view .spacer {height:45px !important;}#faXPUB > .view .carousel-inner {height:1680px !important;}#fE2yAu > .view > .tb{height:1680px !important;}#fiB3SC > .view > .tb{height:1680px !important;}#fojA8x > .view > .tb{height:1493px !important;}#fAE3ZP > .view > .tb{height:1493px !important;}#fRBV6f > .view .spacer {height:45px !important;}#fIECTC > .view > .tb{height:111px !important;}#fNBX6k > .view .spacer {height:45px !important;}#fqKgPh > .view .spacer {height:46px !important;}#ffyiwc > .view .spacer {height:41px !important;}#fDcXMd > .view > .tb{height:1295px !important;}#flBHjY > .view > .tb{height:1000px !important;}#fPZj5T > .view .spacer {height:45px !important;}#feXMf5 > .view .spacer {height:45px !important;}#fbogkl > .view .spacer {height:45px !important;}} .mobile_editor_mode #ffeqSb > .view > .tb{height:423px !important;}.mobile_editor_mode #ffuXRe > .view > .tb{height:620px !important;}.mobile_editor_mode #fE6gc4 > .view > .tb{height:620px !important;}.mobile_editor_mode #fMKDbE > .view > .tb{height:200px !important;}.mobile_editor_mode #fTPMtZ > .view .spacer {height:45px !important;}.mobile_editor_mode #flkO5t > .view .spacer {height:45px !important;}.mobile_editor_mode #fQe2mL > .view > .tb{height:212px !important;}.mobile_editor_mode #fHGchZ > .view .spacer {height:45px !important;}.mobile_editor_mode #fBaROG > .view .spacer {height:45px !important;}.mobile_editor_mode #faXPUB > .view .carousel-inner {height:1680px !important;}.mobile_editor_mode #fE2yAu > .view > .tb{height:1680px !important;}.mobile_editor_mode #fiB3SC > .view > .tb{height:1680px !important;}.mobile_editor_mode #fojA8x > .view > .tb{height:1493px !important;}.mobile_editor_mode #fAE3ZP > .view > .tb{height:1493px !important;}.mobile_editor_mode #fRBV6f > .view .spacer {height:45px !important;}.mobile_editor_mode #fIECTC > .view > .tb{height:111px !important;}.mobile_editor_mode #fNBX6k > .view .spacer {height:45px !important;}.mobile_editor_mode #fqKgPh > .view .spacer {height:46px !important;}.mobile_editor_mode #ffyiwc > .view .spacer {height:41px !important;}.mobile_editor_mode #fDcXMd > .view > .tb{height:1295px !important;}.mobile_editor_mode #flBHjY > .view > .tb{height:1000px !important;}.mobile_editor_mode #fPZj5T > .view .spacer {height:45px !important;}.mobile_editor_mode #feXMf5 > .view .spacer {height:45px !important;}.mobile_editor_mode #fbogkl > .view .spacer {height:45px !important;}/style>webfont>{google:,custom:Noto Sans KR}/webfont>webfont>{google:,custom:Noto Sans KR}/webfont>!-- naver, google, kakao login script -> header.inc.html 에서 호출 함 -->!--GOOGLE-->!-- 커스텀 버튼 : https://developers.google.com/identity/sign-in/web/build-button -->!--script srchttps://apis.google.com/js/platform.js async defer>/script>-->!--KAKAO-->!--script src//developers.kakao.com/sdk/js/kakao.min.js>/script>-->!--NAVER-->!--script typetext/javascript srchttps://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js charsetutf-8>/script>-->!--2019.03.11 재헌 - 리캡챠 미사용으로 주석처리 -->!--RECAPTCHA-->!--script srchttps://www.google.com/recaptcha/api.js async defer>/script>-->link relstylesheet href/css/member.css?v230725>div classmodal fade login-modal idLoginModal tabindex-1 roledialog styletop: 0px !important;> div classmodal-dialog> div classmodal-content> div classmodal-header> div classmodal-header-title>로그인/div> /div> div classmodal-body styledisplay:grid; max-height: 700px;> div classlogin-form> input typetext classlogin-form-id placeholder아이디 autocompleteoff> input typepassword classlogin-form-pw placeholder비밀번호 autocompleteoff> /div> div classlogin-confirm> 로그인 /div> input typesubmit styledisplay:none/> div classlogin-options> div idlogin-options-join classlogin-options-join> 회원가입 /div> div idlogin-options-find classlogin-options-find> 비밀번호 찾기 /div> /div> div classlogin-divider>/div> div classsns-login-form> div classsns-login-form-naver> !--div idnaverIdLogin styledisplay: none;>/div>--> div idnaver-login-button> img src/img/ico/login/naver_logo.png> 네이버 아이디로 로그인 /div> !--div classg-signin2 data-onsuccessonSuccess_google data-themedark>/div>--> /div> div classsns-login-form-kakao> div idkakao-login-button> img src/img/ico/login/kakao_logo.png> 카카오 아이디로 로그인 /div> !-- a idkakao-login-button>/a>--> !-- a hrefhttp://developers.kakao.com/logout>/a>--> /div> div classsns-login-form-google> div idgoogle-login-button> img src/img/ico/login/google_new_icon.svg> 구글 아이디로 로그인 /div> !--div classg-signin2 data-onsuccessonSuccess_google data-themedark>/div>--> /div> /div> /div> !--div classmodal-footer>--> !--/div>--> /div> /div>/div>div classmodal fade find-password-modal z-index-1060 idFindPasswordModal tabindex-1 roledialog styletop: 0px !important;> div classmodal-dialog> div classmodal-content> div classmodal-header> div classmodal-header-title>비밀번호 재설정/div> /div> div classmodal-body styledisplay:grid; max-height: 700px;> div classfind-password-description> 비밀번호를 찾고자 하는 아이디 또는 이메일을 입력해 주세요. br> 해당 계정의 이메일로 비밀번호 변경 안내 메일이 발송됩니다. /div> div classfind-password-form> input typetext idfind-password-form-account classfind-password-form-account placeholder가입한 계정 또는 이메일> /div> div classfind-password-confirm onclickfind_password_confirm();> div>비밀번호 재설정/div> /div> !--2018.10.16 재헌--> !--recapcha 걷어냄--> !--div classfind-password-captcha>--> !--form idfind-password-recaptcha-form methodPOST>--> !--div idfind-password-recaptcha>/div>--> !--input idhidden-grecaptcha namehidden-grecaptcha typehidden/>--> !--/form>--> !--/div>--> /div> !--div classmodal-footer>--> !--/div>--> /div> div classqv-loader qv-loader-black>/div> /div>/div>div classmodal fade change-password-modal idChangePasswordModal tabindex-1 roledialog styletop: 0px !important;> div classmodal-dialog> div classmodal-content> div classmodal-header> div classmodal-header-title>비밀번호 변경/div> /div> div classmodal-body> div classchange-password-description> 새로운 비밀번호를 입력하세요. /div> div classchange-password-form> input typepassword idchange-pw1 classchange-pw1 placeholder변경할 비밀번호 autocompleteoff> input typepassword idchange-pw2 classchange-pw2 placeholder변경할 비밀번호 확인 autocompleteoff> /div> div classchange-password-notice> div classchange-password-advisor> i classfa fa-lock stylefont-size: 20px; aria-hiddentrue>/i> /div> p>영문, 숫자, 특수문자를 포함하여 8~20자로 입력해주세요./p> /div> div classchange-password-confirm> div onclickchange_password_confirm();>비밀번호 변경/div> /div> /div> !--div classmodal-footer>--> !--/div>--> /div> div classqv-loader qv-loader-black>/div> /div>/div>!--member.js inc/script.inc.html 에 위치 -->script typetext/javascript> var NAVER_CLIENT_ID ; var NAVER_CLIENT_SECRET ; var NAVER_AUTH_URL ; var KAKAO_CLIENT_ID ; var KAKAO_PLUS_FRIEND_ID ; var GOOGLE_CLIENT_ID ; var GOOGLE_CAPTCHA_KEY 6Lf62UcUAAAAAEEWIFWPJc_oE-PlkmlZ2h665q9K; $(#LoginModal).on(show.bs.modal, function () { $(this).find(.modal-header-title-sub).remove(); }); $(#LoginModal).on(hidden.bs.modal, function () { if ($(.modal.fade.in).length > 0) { $(body).addClass(modal-open); } }); $(function() { var query qv_func.getUrlParams(); if (query.m change_password) { $(#ChangePasswordModal).modal(show); } else { initSocialLoginClientId(); }// // KAKAO// // https://developers.kakao.com/docs/restapi/tool#user-api// //!CDATA// // 사용할 앱의 JavaScript 키를 설정해 주세요.// Kakao.init(eeebfc46f7f77f5855c5be2ca40594e3);// // 카카오 로그인 버튼을 생성합니다.// Kakao.Auth.createLoginButton({// container: #kakao-login-button,// success: function(authObj) {// Kakao.API.request({// url: /v1/user/me,// success: function(res) { onSuccess_kakao(authObj, res); }// });// },// fail: function(err) {// alert(JSON.stringify(err));// }// });// //>//// // GOOGLE// // https://developers.google.com/+/web/signin/// // 새로고침 시 onsuccess가 발동하는 문제가있음 --> 해결 http://usefulangle.com/post/55/google-login-javascript-api// gapi.signin2.render(google-login-button, {// scope: profile email,// width: 240,// height: 50,// longtitle: false,// theme: dark,// onsuccess: function () {},// onfailure: function () {}// }); }); function initSocialLoginClientId() { var data ; if (data null || data.length 0) { $(.sns-login-form-naver).remove(); $(.sns-login-form-kakao).remove(); $(.sns-login-form-google).remove(); $(.login-divider).remove(); } else { $.each(data, function () { switch (this.ssi_type) { case 1: // NAVER LOGINcol-sm-2 if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-naver).remove(); } else { $(.sns-login-form-naver > div).show(); NAVER_CLIENT_ID this.ssi_key1; NAVER_CLIENT_SECRET this.ssi_key2; // 네이버 버튼 규정, 재 디자인 필요 // https://developers.naver.com/docs/login/bi/ if (typeof naver object) { naverLogin new naver.LoginWithNaverId( { clientId: NAVER_CLIENT_ID, callbackUrl: location.protocol + // + QV_BASE_OBJ.eng_domain + /oauth/callback.php?cliendId + NAVER_CLIENT_ID, isPopup: true //callbackHandle: true, //loginButton: {color: green, type: 3, height: 43, width: 370} /* 로그인 버튼의 타입을 지정 */ } ); naverLogin.init(); NAVER_AUTH_URL naverLogin.generateAuthorizeUrl(); $(#naver-login-button).data(authUrl, NAVER_AUTH_URL); } } break; case 2: // KAKAO LOGIN if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-kakao).remove(); } else { $(.sns-login-form-kakao > div).show(); KAKAO_CLIENT_ID this.ssi_key1; KAKAO_PLUS_FRIEND_ID this.ssi_key2; if (typeof Kakao object) { Kakao.init(KAKAO_CLIENT_ID); } } break; case 3: // GOOGLE LOGIN if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-google).remove(); } else { $(.sns-login-form-google > div).show(); GOOGLE_CLIENT_ID this.ssi_key1; } break; } }); if ($(.sns-login-form).children().length 0) { $(.login-divider).remove(); } } } function initSocialLoginClientId_dummy() { qvjax_direct( select_sns_info, /module/member/member.php, , function (data) { if (data.length 0) { $(.sns-login-form-naver).remove(); $(.sns-login-form-kakao).remove(); $(.sns-login-form-google).remove(); $(.login-divider).remove(); } else { $.each(data, function () { switch (this.ssi_type) { case 1: // NAVER LOGINcol-sm-2// $.getScript( https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js, function( data, textStatus, jqxhr ) {//// }); if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-naver).remove(); } else { NAVER_CLIENT_ID this.ssi_key1; NAVER_CLIENT_SECRET this.ssi_key2; // 네이버 버튼 규정, 재 디자인 필요 // https://developers.naver.com/docs/login/bi/ naverLogin new naver.LoginWithNaverId( { clientId: NAVER_CLIENT_ID, //callbackUrl: document.location.origin + /oauth/callback.php?cliendId + NAVER_CLIENT_ID, callbackUrl: location.protocol + // + QV_BASE_OBJ.eng_domain + /oauth/callback.php?cliendId + NAVER_CLIENT_ID, isPopup: true //callbackHandle: true, //loginButton: {color: green, type: 3, height: 43, width: 370} /* 로그인 버튼의 타입을 지정 */ } ); naverLogin.init(); NAVER_AUTH_URL naverLogin.generateAuthorizeUrl(); $(#naver-login-button).data(authUrl, NAVER_AUTH_URL); } break; case 2: // KAKAO LOGIN if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-kakao).remove(); } else { KAKAO_CLIENT_ID this.ssi_key1; KAKAO_PLUS_FRIEND_ID this.ssi_key2; if (typeof Kakao object) { Kakao.init(KAKAO_CLIENT_ID); } } break; case 3: // GOOGLE LOGIN if (this.ssi_state 0 || this.ssi_key1 ) { $(.sns-login-form-google).remove(); } else { GOOGLE_CLIENT_ID this.ssi_key1; } break; } }); if ($(.sns-login-form).children().length 0) { $(.login-divider).remove(); } } }, function (xhr) {} ); }/script>div classmodal fade join-modal idJoinModal tabindex-1 roledialog styletop: 0px !important;> div classmodal-dialog> div classmodal-content>!-- div classmodal-header stylepadding-bottom: 20px;>-->!-- div classmodal-header-title>회원가입/div>-->!-- /div>--> div classmodal-body styledisplay:grid; max-height: 700px; padding: 2px 15px;> div classjoin-type> !-- 회원가입 유형 선택 --> div classjoin-type-group2>!-- span classjoin-type-description>/span>--> div classjoin-type-normal>div>ID/PW로 가입하기/div>/div> /div> div classjoin-type-group1>!-- span classjoin-type-description>/span>--> div classjoin-type-naver>img src/img/ico/login/naver_logo.png>div>네이버 아이디로 가입하기/div>/div> div classjoin-type-kakao>img src/img/ico/login/kakao_logo.png>div>카카오 아이디로 가입하기/div>/div> div classjoin-type-google>img src/img/ico/login/google_new_icon.svg>div>구글 아이디로 가입하기/div>/div> /div> /div> /div> /div> /div>/div>script> $(function() { $(.join-type-normal).on(click, function() { location.href /join; }); $(.modal).on(hidden.bs.modal, function () { $(body).css(padding-right, 0); // 모달 부분에서 버그. padding-right +17px 계속 적용시킴 }); $(#JoinModal).on(show.bs.modal, function () { if (NAVER_CLIENT_ID && KAKAO_CLIENT_ID && GOOGLE_CLIENT_ID ) { location.href /join; return; } // NAVER if (NAVER_CLIENT_ID ) { $(.join-type-naver).remove(); } else { $(.join-type-naver).off(click.join); $(.join-type-naver).on(click.join, function() { location.href NAVER_AUTH_URL; }); } // KAKAO if (KAKAO_CLIENT_ID ) { $(.join-type-kakao).remove(); } else { $(.join-type-kakao).off(click.join); $(.join-type-kakao).on(click.join, function() { Kakao.Auth.login({ success: function(authObj) { Kakao.API.request({ url: /v2/user/me, success: function(res) { onSuccess_kakao(authObj, res); } }); }, fail: function(err) { alert(JSON.stringify(err)); } }); }); } // GOOGLE if (GOOGLE_CLIENT_ID ) { $(.join-type-google).remove(); } else { $(.join-type-google).off(click.join); $(.join-type-google).on(click.join, function() { gapi.load(auth2, function(){ // Retrieve the singleton for the GoogleAuth library and set up the client. auth2 gapi.auth2.init({ client_id: GOOGLE_CLIENT_ID, cookiepolicy: single_host_origin, plugin_name: chat }); grantPermissions(); // API call for Google login gapi.auth2.getAuthInstance().signIn().then( function(success) { // Login API call is successful onSuccess_google(success); }, function(error) { // Error occurred onFailure_google(error); } ); }); }); } }); });/script>/div>div classfooter-frame footer-theme-1> div classfrm styletext-align: center; margin: 0px; display: block; padding: 0px 20px; background: none rgb(33, 47, 94); border: 0px solid transparent; border-radius: 0px; idfQLZgn data-hei286 data-cwid> div classpreview>/div> div classview ha-c> div classtb tbu styleheight: 286px;> div classrow clearfix tb-c va-m styledisplay: table-cell; transform: none; height: auto;> div classcol-sm-12 column styleheight: auto; min-height: 131px;> div classbox tbu idbCxVgh styledisplay: table; height: 109px; data-m-hei119px data-hei126> div classpreview>/div> div classview tb-c va-m> div classqv-text txtBox contenteditablefalse>p classtext-m styletext-align: center;>span stylefont-size:14px;>span stylecolor:#ffffff;>span stylefont-family:Noto Sans KR;>상호 : 비손푸른엔지니어링(주) | 대표이사 : 이세홍 | 개인정보책임자 : 유정석br>소재지 : 서울시 송파구 법원로 128 SKV1 GL메트로시티 B동 1403호/span>/span>br>span stylecolor:#ffffff;>span stylefont-family:Noto Sans KR;>사업자등록번호 : 114-81-72821br>전화 : 02-445-5805 / 팩스 : 02-6003-0072 / 메일 : pishoneng@naver.com/span>br>br>span stylefont-family:Noto Sans KR;>COPYRIGHT (C) LOGO. All Rights reserved/span>/span>/span>/p>/div> /div> /div> /div> /div> /div> /div> /div>/div> webfont>{google:,custom:Noto Sans KR}/webfont> !--/div>-->/div>!--/container-->/body>/html>!-- 네이버 지도 모듈 호출 -->script>$(document).ready(function(){ //live only if($(body .header).hasClass(useFixed)) { $(body).addClass(headerFixed); } initHeader9(); $(.header .header9 .header9-close-btn).click(function(){ $(.header .header9).hide(); $(body.live).addClass(header9_closed); setCookie(header9_closed, 1, 1); realignHeader9(); }); if($(.header).hasClass(useFixed)) { qv_on_scroll(init); //scrolled page load시 init(); var agent navigator.userAgent.toLowerCase(); if ((navigator.appName Netscape && agent.indexOf(trident) ! -1) || (agent.indexOf(msie) ! -1)) { $(body).scroll(function() { qv_on_scroll_ie(); }); } else { window.onscroll function(){ qv_on_scroll(); }; } //window.onscroll function(){qv_on_scroll()}; } // column 내 whitespace가 들어가있는 항목 정리 $.each($(.column), function() { if($(this).html().trim() ) { $(this).html(); } });// $(.slider-frm).not(.fullpage).find(.carousel).carousel({ swipe: 200 });// $(.slider-frm).not(.fullpage).find(.carousel).carousel(0); $(.carousel).carousel({ swipe: 200 });// $(.carousel).carousel(0); var login_require ; if (login_require 1) { $(#LoginModal).modal(show); $(#LoginModal .modal-header).append($(div classmodal-header-title-sub> + lang.requires_login + /div>)); } /* 2020.01.15 재헌 페이지 최초 로드 시 QV_BASE_OBJ.sskey 에 값이 비어있음. 쿠키에서 정보를 가져와 채워주도록 함. */ if (!QV_BASE_OBJ.sskey || QV_BASE_OBJ.sskey ) { QV_BASE_OBJ.sskey getCookie(QVSSID); } removeSiteCopiedElement(); initMobileHeader(); // initSnsFeed(); Instagram api denied initPopup(); initFixedContents(); initMenu(); initTabFrame(); initSMS(); initSliderCallback(); initSlider(); initFullPageSlider(); initSnSIconImage(); initPolicyPrivacyModal(); initJoinModal(); initPageFadeEvent(); initCalendar(); initLnb(); initNonScaledImageBox(); initHeaderSideNav(); initMobileHeaderMenu(); initRss(); initMouseoverObjects(); initLanguageSelector(); initDownloadButton(); initInstagramFeed(); initDatabaseContents(); initGrid(); initVideo(); initFrameLink(); initDday(); initCountDown(); initNotionContents(); });$(window).bind(load, function (){ initIframe();});function initNotionContents() { $(.iframe-notion-guide).remove()}function initDday(target) { // 2021.12.17(금) (정빈) D-day 기능 const today new Date() const todayTimeStamp today.getTime() const ddayTarget target ? target : $(#main_container .ddayBox) ddayTarget.each(function () { const ddayBox $(this); const ddayArea ddayBox.find(.dday-area) const userDdayTimeStamp ddayArea.attr(data-dday) const ddayDistance userDdayTimeStamp - todayTimeStamp const getDday Math.floor(ddayDistance / (1000 * 60 * 60 * 24)) + 1 if (isNaN(getDday)) { ddayArea.find(.dday-area-variable).text(-Day) } else { const ddayView getDday > 0 ? -+ getDday : + + Math.abs(getDday) ddayArea.find(.dday-area-variable).text(ddayView) } })}function ddayGetDate(date) { const distance new Date(date).getTime() - new Date().getTime() let dateObj {} if (distance 0 || isNaN(distance)) { dateObj.setDays 00 dateObj.setHours 00 dateObj.setMinutes 00 dateObj.setSeconds 00 } else { const days Math.floor(distance / (1000 * 60 * 60 * 24)) const hours Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) - 9 const minutes Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)) const seconds Math.floor((distance % (1000 * 60)) / 1000) dateObj.setDays days > 9 ? days : 0 + days dateObj.setHours hours > 9 ? hours : 0 + hours dateObj.setMinutes minutes > 9 ? minutes : 0 + minutes dateObj.setSeconds seconds > 9 ? seconds : 0 + seconds } return dateObj}// 글로벌 setInterval 관리let countdownInterval nullfunction initCountDown() { let isCountDownExist false function ddayCountDown () { $(#main_container .ddayBox .view).each(function () { if ($(this).find(.dday-area-countdown).css(display) block) { const vBox $(this) const getDate Number(vBox.find(.dday-area).attr(data-dday)) const setDays ddayGetDate(getDate).setDays const setHours ddayGetDate(getDate).setHours const setMinutes ddayGetDate(getDate).setMinutes const setSeconds ddayGetDate(getDate).setSeconds vBox.find(.dday-area).find(.days-value).text(setDays) vBox.find(.dday-area).find(.hours-value).text(setHours) vBox.find(.dday-area).find(.minutes-value).text(setMinutes) vBox.find(.dday-area).find(.seconds-value).text(setSeconds) } }) } $(#main_container .ddayBox .view).each(function () { if($(this).find(.dday-area-countdown).css(display) block) { ddayCountDown() isCountDownExist true return false } }) if (isCountDownExist) { clearInterval(countdownInterval) countdownInterval setInterval(ddayCountDown,1000) }}function initFrameLink(target) { if (!target) { target $(.frm, .box); } target.each(function() { const area $(this); const href area.attr(href); if (href) { let targetAttr ; const target area.attr(target); if (target && target ! ) { targetAttr target + target + ; } area.append(a classlink-wrapper href + href + + targetAttr + >/a>) } });}function initHeaderSearch() { /* 2021.11.01 * 게시판 통합검색(헤더) */ /* Search button */ $(#main_container).delegate(.header-search-bar-button, click, function() { headerSearchAllBoard(); }); /* Search bar keyup */ $(#main_container).delegate(#header-search-bar, keyup, function(event) { if (event.keyCode 13) { headerSearchAllBoard(); } }); /* Search Icon */ $(#main_container).delegate(.header-search-icon-button, click, function() { $(#main_container).append( div classheader-search-dialog> + div classheader-search-dialog-close>/div> + div classheader-search-dialog-body> + div> + input typetext idheader-search-bar placeholder검색어를 입력해주세요./> + i classicon-magnifier header-search-bar-button>/i> + /div> + /div> + /div> ); }); $(#main_container).delegate(.header-search-dialog-close, click, function() { $(.header-search-dialog).remove(); })}function headerSearchAllBoard(page) { const targetPage page ? page : 1; const keyword $(#header-search-bar).val(); if (keyword) { window.location /module/board/search.html?keyword + keyword + &page + targetPage } else { alert(검색어를 입력해주세요.); }}function initVideo() { $(#main_container).delegate(.videoBoxdata-popup1, click, function() { let src $(this).find(iframe).attr(src); // src src.indexOf(&autoplay1) > 0 ? src : src + &autoplay1&mute1&muted1; $(#main_container).append( div classvideo-popup>div>iframe src + src + >/iframe>/div>/div> ); }); $(#main_container).delegate(.video-popup, click, function() { if ($(this).parent().attr(id) main_container) { $(this).remove(); } })}function initGrid(target) { const gridBoxes target ? target : $(.gridBox); if (gridBoxes.length > 0) { function setGridHeaderHeight(target, height) { const gridOption target.data(gridOption); if (gridOption) { gridOption.api.setHeaderHeight(parseInt(height)); } } function setGridRowHeight(target, height) { const gridOption target.data(gridOption); if (gridOption) { gridOption.api.forEachNode(function (rowNode) { rowNode.setRowHeight(parseInt(height)); }); gridOption.api.onRowHeightChanged(); } } $.getScript(/js/xlsx/ag-grid.js, function() { gridBoxes.each(function() { const gridBox $(this); const columnDefs gridBox.attr(columnDefs); const rowData gridBox.attr(rowData); if (columnDefs && rowData) { gridBox.find(.grid-area).children().remove(); const _columnDefs JSON.parse(columnDefs).map(function(r, i) { r.lockPosition true; delete r.rowDrag; return r; }); const _gridOption { columnDefs: _columnDefs, defaultColDef: { minWidth: 110, editable: false, resizable: false, }, domLayout: autoHeight, cellStyle: {white-space: normal}, rowData: JSON.parse(rowData), animateRows: true, scrollbarWidth: 4, }; const gridElement gridBox.find(.grid-area)0; new agGrid.Grid(gridElement, _gridOption); gridBox.data(gridOption, _gridOption); const gridHeightHeader gridBox.attr(headerHeight); if (gridHeightHeader) { setGridHeaderHeight(gridBox, gridHeightHeader); } const gridRowHeight gridBox.attr(rowHeight); if (gridRowHeight) { setGridRowHeight(gridBox, gridRowHeight); } gridBox.find(.grid-area).show(); } }) }) }}function initIframe(elements) { const iframes elements ? elements : $(.iframeBox) iframes.each(function() { // 탭에 속해있지만 활성화 되지 않은 상태이면 초기화 하지 않음 if ($(this).parents(.tab-frm).length > 0 && $(this).parents(.tab-pane.active).length 0) { return; } const target $(this).find(.iframe-area); const value target.attr(data-iframe-html); const height $(this).attr(data-hei); if (value) { const decodeValue decodeURIComponent(value); var regex /(?:iframe^>*)(?:(?:\/>)|(?:>.*?\/iframe>))/g; var divs $(decodeValue).filter(function(i, v) { return v.tagName div || v.tagName DIV }); /* TAG: Iframe */ if (regex.test(decodeValue) && divs.length 0) { // do nothing var iframe decodeValue.match(regex)0; target.html($(iframe)); } /* TAG: No Iframe */ else { setIframeBox(target, decodeValue, height) } // if (QV_BASE_OBJ.stid cxzvffdy1) { // alert(navigator.userAgent) // } } }); function setIframeBox(target, value, height) { // 기존 iframe 제거 target.find(iframe).remove(); target.removeAttr(data-iframe-html); const iframe document.createElement(iframe); iframe.className wrap-in-iframe; iframe.style height: + height + px; target.append($(iframe)); target.removeAttr(data-iframe-html); const context iframe.contentWindow.document; context.open(); context.write(value); context.close(); // iframe 추가 // if (typeof(qv_func.isInAppBrowser) ! undefined && qv_func.isInAppBrowser()) { // script 태그 내 document scope가 parent로 잡히는 문제 // const iframe document.createElement(iframe); // iframe.className wrap-in-iframe; // target.append($(iframe)); // target.removeAttr(data-iframe-html); // // // iframe html 세팅 // const context iframe.contentWindow.document; // const body $(body, context); // body.html(value); // } else { // in-app 브라우저에서 작동하지 않음 // var iframe document.createElement(iframe); // var html body> + value + /body>; // iframe.src data:text/html;charsetutf-8, + encodeURIComponent(html); // target.append($(iframe)); // } // iframe 높이 할당 // const interval setInterval(function() { // const h $(iframe).css(height); // if (h ! 100%) { // clearInterval(interval); // $(iframe).parents(.iframeBox).height(h); // } // },100); // var iframeBoxInterval window.setInterval(function() { // if (iframe.contentWindow.document.readyState complete) { // window.clearInterval(iframeBoxInterval); // // grab the content of the iframe here // console.log(iframebox loaded) // } // }, 100); } }//// function initFilter() {// if ($(.filter-area).length 0) return;//// $(body).delegate(.filter-item, click, function() {// $(this).toggleClass(active);//// if ($(.filter-item.active).length 0) {// $(.gallery-board-box).removeClass(disapear);//// }// else {// $.each($(.filter-item), function() {// var filter_code $(this).find(.filter-item-name).text();// if ($(this).hasClass(active)) {// $(.gallery-board-boxdata-filter-code + filter_code + ).removeClass(disapear);// }// else {// $(.gallery-board-boxdata-filter-code + filter_code + ).addClass(disapear);// }// });// }// });//// $(body).delegate(.filter-header, click, function() {// $(.filter-body).toggleClass(active);// if ($(.filter-body).hasClass(active)) {// $(this).parents(.box).css(border-bottom, 1px solid #eee);// }// else {// $(this).parents(.box).css(border-bottom, none);// }// });//// $.each($(.gallery-board-box), function() {// var filter_code $(this).find(.gallery-board-caption-title > span).text();// $(this).attr(data-filter-code, filter_code);// });// }//// function initColorChip() {// if ($(.color-chip-area).length 0) return;//// $(#main_container).delegate(.color-chip-item, click, function() {// var url $(this).attr(data-url);// var target $(this).parents(.color-chip-container).siblings(.color-chip-image);//// var temp_image new Image();// temp_image.src url;// $(temp_image).one(load,function() {// $(target).attr(src, url);// });//// $(this).siblings(.color-chip-item).removeClass(active);// $(this).addClass(active);// });//// $.each($(.color-chip-area), function() {// $(this).find(.color-chip-item).first().trigger(click);// });// }function initDatabaseContents() { if ($(.databaseContentsBox).length > 0) { let DATABASE_CONTENTS {}; $.each($(.databaseContentsBox), function () { const area $(this).find(.dbc-area); const id area.attr(data-id); const count area.attr(data-count); const paging area.attr(data-paging); const matrix area.children(.dbc-item:first-of-type).clone(); qvjax_direct( select_database_contents, /module/dbc/databaseContents.php, &cid + id, function (data) { if (data.length > 0) { // const column_defs JSON.parse(data0.column_defs); const row_data JSON.parse(data0.row_data.replace(/\n/g, \\n).replace(/\r/g, \\r).replace(/\t/g, \\t)); const size Math.ceil(row_data.length / count); DATABASE_CONTENTSid { data: row_data, size: size, }; // let pagingHtml div classdbc-paging>; for (let i 1; i size; i++) { // pagingHtml + span data-id + id + data-page + i + class + (i 1 ? active : ) + > + i + /span>; DATABASE_CONTENTSidi DATABASE_CONTENTSiddata.slice(count * (i-1), count * i); } // pagingHtml + /div>; if (paging 1) { // area.after(pagingHtml); area.after(div classpager>ol classpaging-btn-group>/ol>/div>); buildDatabaseContentsPagingHtml(DATABASE_CONTENTSid, area, 1); } pagingDatabaseContents(DATABASE_CONTENTSid1, matrix, area); } area.show(); }, function (xhr) {} ); }); $(.databaseContentsBox).delegate(.pager li, click, function() { const area $(this).parents(.databaseContentsBox).find(.dbc-area); const matrix area.children(.dbc-item:first-of-type).clone(); const id area.attr(data-id); const page $(this).attr(value); const databaseContents DATABASE_CONTENTSid; if (databaseContents) { buildDatabaseContentsPagingHtml(databaseContents, area, page); pagingDatabaseContents(databaseContentspage, matrix, area); if (isMobile()) { const scrollY area.offsetTop(); $(html, body).animate({scrollTop: scrollY - 50}, 500); } } }); function buildDatabaseContentsPagingHtml(databaseContents, area, page) { var page parseInt(page); var size databaseContents.size; var pagingStart; var pagingEnd; var html ; if (page - 2 0) { pagingStart 1; pagingEnd Math.ceil(size) > pagingStart + 4 ? 5 : Math.ceil(size); } else if (page + 2 > Math.ceil(size)) { pagingStart Math.ceil(size) - 4 0 ? 1 : Math.ceil(size) - 4; pagingEnd Math.ceil(size); } else { pagingStart page - 2; pagingEnd page + 2; } html + li classpaging-btn-group__item left value1>; html + i classi-chevron-left>/i>; html + /li>; for(var i pagingStart; i pagingEnd; i ++) { var buttonClassName i page ? btn btn--basic active : btn btn--basic; html + li classpaging-btn-group__item value + i + >; html + button class + buttonClassName + >span> + i; html + /span>/button>/li>; } html + li classpaging-btn-group__item right value + size + >; html + i classi-chevron-right>/i>; html + /li>; area.next(.pager).find(.paging-btn-group).children(.paging-btn-group__item).remove(); area.next(.pager).find(.paging-btn-group).append(html); } function pagingDatabaseContents(data, matrix, area) { const $frag $(document.createDocumentFragment()); area.children(.dbc-item).remove(); $.each(data, function() { const clone matrix.clone(); const rowData this; $.each(clone.find(.dbc-contents-item), function() { const connect $(this).attr(data-connect); const type $(this).attr(data-type); switch (type) { case 1: case 3: $(this).find(p:last-of-type).text(rowDataconnect); break; case 2: $(this).find(img).attr(src, rowDataconnect); break; } }); clone.find(style).remove(); clone.attr(data-id, this.id); $frag.append(clone); }); area.append($frag); } $(body).delegate(.databaseContentsBox .dbc-areadata-detail1 .dbc-item, click, function() { const page $(this).parents(.dbc-area).first().attr(data-id); const id $(this).attr(data-id); if (page && id) { location / + page + ?id + id; } else { alert(데이터 컨텐츠 설정 오류, page, id); } }); }}function initDownloadButton() { $(#main_container).delegate(.qv-file-download, click, function() { var url $(this).attr(data-download-url); if (!url || url ) return; var name $(this).attr(data-download-url).split(/).pop(); url url.split(/).reduce(function(p, c, idx) { var slash (c ) ? // : /; var add (idx url.split(/).length -1) ? encodeURIComponent(c) : c + slash; return p + add; }); if ((navigator.userAgent.toLowerCase().indexOf(safari) > -1 && navigator.userAgent.toLowerCase().indexOf(chrome) -1) || is_InternetExplorer()) { var a $(a>).attr(href, url).attr(download, name).appendTo(body); a0.click(); a.remove(); } else { post_redirect(/module/board/download.php, {url: url, name: name}, _top); } });}function initLanguageSelector() { if ($(.header .languageSelectorBox).length > 0) { var LANGUAGE_CODE {ko:한국어, en:English, zh-chs:中文(简体), zh-cht:中文(繁體), ja:日本語}; $(body).delegate(.language-selector.language-type-3, click, function() { if ($(this).find(.language-dropdown).length > 0) { $(this).find(.language-dropdown).remove(); } else { var html div classlanguage-dropdown>; $.each($(this).find(.language-selector-flag), function() { var lang $(this).attr(data-lang); var href $(this).children(a).attr(href); var target $(this).children(a).attr(target) ? $(this).children(a).attr(target) : _self; html + div classlanguage-dropdown-item>a href + href + target + target + > + LANGUAGE_CODElang + /a>/div>; }); html + /div>; } $(this).append(html); // 2020.12.04 높이 지정 불필요함 // var top $(this).position().top + 40; // $(.language-dropdown).css(top, top); }); }}function initMouseoverObjects() { // mouseover 객체 내에 애니메이션 컨텐츠가 있으면 hover 에서도 동작하도록 하는 코드. // 오동작이 있기 때문에 다시 구축해야 함 // $(#main_container).delegate(.mouseover-frm, mouseenter, function() { // console.log(enter); // $.each($(this).find(.mouseover-after), function() { // var elm this; // var newone elm.cloneNode(true); // elm.parentNode.replaceChild(newone, elm); // }); // }); // $(#main_container).delegate(.mouseover-frm, mouseleave, function() { // console.log(enter); // $.each($(this).find(.mouseover-before), function() { // var elm this; // var newone elm.cloneNode(true); // elm.parentNode.replaceChild(newone, elm); // }); // }); function resizeMouseoverFrame(mouseoverFrame) { var before mouseoverFrame.find(.mouseover-before).first(); var after mouseoverFrame.find(.mouseover-after).first(); var mouseover_height before.height() > after.height() ? before.height() : after.height(); if (mouseover_height 0) { var data_height mouseoverFrame.attr(data-hei) ? parseInt(mouseoverFrame.attr(data-hei)) : 0; data_height data_height 0 ? mouseoverFrame.find(.imgBox:first).height() : data_height; mouseover_height data_height; } if (mouseoverFrame.height() mouseover_height) { var tb mouseoverFrame.children(.view).children(.tb); // tb.height(mouseover_height); if (tb.length > 0) { tb.get(0).style.setProperty(height, mouseover_height + px, important); } } } $(window).bind(load,function() { // tb의 높이보다 하위 컨텐츠의 높이가 더 클 경우 tb의 높이를 맞춰준다. // mouseover 객체들이 absolute로 전환되기 때문에 높이를 수동으로 지정해주지 않으면 컨텐츠들이 겹치게 됨 $.each($(#main_container .mouseover-frm), function() { const mouseoverFrame $(this); mouseoverFrame.find(.box).each(function(i, val) { $(val).addClass(displayed); }); // mouseover frame 내 이미지를 모두 호출한 뒤 위치를 다시 잡아준다 let loadCompleteCount 0; const imageCore $(this).find(.img-core); const imageCount imageCore.length; if (imageCount 0) { resizeMouseoverFrame(mouseoverFrame); } else { imageCore.each(function() { const img new Image(); const bg $(this).css(background-image); if (bg.indexOf(url() 0) { img.src bg.replace(url(,).replace(),).replace(/\/gi, ); $(img).one(load,function(){ loadCompleteCount++; if (loadCompleteCount imageCount) { resizeMouseoverFrame(mouseoverFrame); } }) } else { loadCompleteCount++; if (loadCompleteCount imageCount) { resizeMouseoverFrame(mouseoverFrame); } } }) } }); // 이미지 박스 전용 mouseover // 향후 실제 사용여부는 확인필요 $.each($(#main_container .imgBox), function() { var mouseover_image $(this).find(.img-core).attr(data-mouseover-image); if (mouseover_image) { var image $(this).find(.img-core); var dummy $(this).find(.img-core-dummy); image.attr(data-default-image, image.css(background-image)); $(this).on(mouseenter, function () { console.log(imgBox mouse enter); image.css(background-image, image.attr(data-mouseover-image)); dummy.attr(src, image.attr(data-mouseover-image).replace(url(, ).replace(), ).replace(/\/gi, )) }); $(this).on(mouseleave, function () { console.log(imgBox mouse leave); image.css(background-image, image.attr(data-default-image)); dummy.attr(src, image.attr(data-default-image).replace(url(, ).replace(), ).replace(/\/gi, )) }); } }); });}function initMobileFooterFixedContents() { if (isMobile() && $(.footer-fixed-contents).length > 0) { $(window).bind(load,function() { // fixed 크기만큼 페이지 최하단에 공백넣음 var footer_fixed $(.footer-fixed-contents); var empty_div div styleheight: + footer_fixed.height() + px;>/div>; $(.footer-frame-mobile).after($(empty_div)); }); }}function initHeaderOverflowMenuResizeEvent() { var column; $.each($(#main_container .header .al-box), function() { if ($(this).children(ul.mn-ul).length > 0 && $(this).find(.mn-item).length > 0) { column $(this); } }); if (column) { headerOverflowMenuInit(column); } $(window).resize(function() { if(this.resizeTO) clearTimeout(this.resizeTO); this.resizeTO setTimeout(function() { $(this).trigger(resizeEnd); }, 100); }); $(window).bind(resizeEnd, function() { if (column) { headerOverflowMenuInit(column); } });}function headerOverflowMenuInit(column) { if (column.children(ul.mn-ul).length 0) { return; } var column_width 0; var box_width 0; var overflow_menu ; var container column.parents(#main_container); var menu column.children(ul.mn-ul); var header_contents column.parents(.header-contents).first(); var header header_contents.parent(); var header_width column.parent().css(width); if (header_width.indexOf(%) > -1) { // %로 리턴됨 -> px 값 계산해서 처리 (IE에서 가끔 %로 넘어옴) header_width $(window).width() * parseInt(header_width) / 100; } else { // px로 리턴 -> 그대로 처리 header_width parseInt(header_width); } $.each(column.children(div.box), function() { box_width + $(this).width(); box_width + parseInt($(this).css(padding-left)) box_width + parseInt($(this).css(padding-right)) }); column_width + box_width; container.find(.mn-item).removeClass(mn-item-overflow); $.each(menu.children(.mn-item).not(.mn-item-overflow-list), function() { column_width + $(this).width(); if (header_width column_width + 110) { $(this).addClass(mn-item-overflow); overflow_menu.push($(this)); } }); if (overflow_menu.length > 0) { if (menu.find(headerstart).length 0) { menu.prepend(headerstart>/headerstart>); } if (menu.find(headerend).length 0) { menu.append(headerend>/headerend>); } if (menu.find(.mn-item-overflow-list).length 0) { var html li classmn-item mn-item-overflow-list> a classmn-link>i classicon-options aria-hiddentrue>/i>/a> div classheader-overflow-pop>ul>/ul>/div>/li>; menu.find(headerend).before($(html)); } container.find(.header-overflow-pop ul li).remove(); $.each(overflow_menu, function() { var clone $(this).clone(); menu.find(.header-overflow-pop ul).append(clone); }); } else { container.find(.mn-item-overflow-list).remove(); }}function initMobileHeaderMenu() { if ((isMobile() && window.innerWidth 767) && $(.header).length > 0) { // menu touch if ($(.header-mobile .column > ul.mn-ul).length > 0) { // 현재 활성화된 페이지의 메뉴 위치 잡기 $(window).bind(load,function() { // 서브메뉴 추가 if ($(.header-mobile .column > ul.mn-ul).data(sub)) { if ($(.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item > ul.sub-mn > li.mn-item).length > 0) { // 메인 메뉴 중에 cur-mn-item이 존재할 경우 var sub_mn $(.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item > ul.sub-mn); } else if ($(.header-mobile .column > ul.mn-ul .mn-item > ul.sub-mn > li.mn-item.cur-mn-item).length > 0) { // 서브 메뉴 중에 cur-mn-item이 존재할 경우 var sub_mn $(.header-mobile .column > ul.mn-ul .mn-item > ul.sub-mn > li.mn-item.cur-mn-item).parent(); } if (sub_mn) { var header_contents sub_mn.parents(.header-contents); var sub_html div classcol-xs-12 header-mobile-sub-menu style + padding: 0 10px; + margin-top: + header_contents.css(border-bottom-width) + ; + border-bottom: + header_contents.css(border-bottom) + ; + > + div classal-box column al-l> + ul classmn-ul tc box hsync styledisplay: table-cell; transform: translate3d(0px, 0px, 0px); height: + $(header_contents).height() + px;> + div classpreview>/div> + headerstart>/headerstart> + sub_mn.html() + headerend>/headerend> + /ul> + /div> + /div>; sub_html $(sub_html).css(background, header_contents.css(background)); sub_html $(sub_html).css(border-bottom, header_contents.css(border-bottom)); header_contents.append($(sub_html)); var header_cur header_contents.parent(); var header_next header_cur.next(div); $.each(header_next, function () { var top 0; $.each($(this).prev(div), function () { top + $(this).find(.header-contents).height(); top + $(this).find(.header-contents > div:last-child).height(); }); $(this).attr(data-top, top); $(this).css(top, top); }); } } if ($(.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item).length > 0) { var cur $(.header-mobile .column > ul.mn-ul .mn-item.cur-mn-item).last(); var ul cur.parents(ul.mn-ul).first(); var pos cur0.offsetLeft * -1; var width ul.parents(.column).parent().width(); var max (ul.width() - width) * -1; pos pos 0 ? pos : 0; max max 0 ? max : 0; pos pos max ? max : pos; ul.css(transform, translate3d( + pos + px, 0, 0)); ul.data(pos, pos); } var startPoint; $(#main_container).delegate(.header-mobile .column > ul.mn-ul, touchstart, function (e) { startPoint e.originalEvent.touches0.screenX; var pos parseInt($(this).data(pos)); if (!pos) { $(this).data(pos, 0); } }); $(#main_container).delegate(.header-mobile .column > ul.mn-ul, touchmove, function (e) { var event e.originalEvent; var x event.touches0.screenX; var diff x - startPoint; var width $(e.currentTarget).parents(.column).parent().width(); var max ($(this).width() - width) * -1; var pos parseInt($(this).data(pos)); pos + diff; pos pos 0 ? pos : 0; max max 0 ? max : 0; pos pos max ? max : pos; $(this).css(transform, translate3d( + pos + px, 0, 0)); }); $(#main_container).delegate(.header-mobile .column > ul.mn-ul, touchend, function () { if ($(this).css(transform).indexOf(matrix) > -1) { $(this).data(pos, $(this).css(transform).split(,)4.trim()); } }); }); // 카테고리 항목 클릭 시 하위 페이지가 있으면 // 해당 페이지 목록(header-mobile-sub-menu)을 동적으로 만들어준다 $(#main_container).delegate(.header-mobile .al-box > .mn-ul > .mn-item > .mn-link:not(href), click, function() { if ($(.header-mobile .column > ul.mn-ul).data(sub)) { var sub_mn $(this).siblings(ul.sub-mn); if (sub_mn) { $(.header-mobile-sub-menu).remove(); var header_contents sub_mn.parents(.header-contents); var sub_html div classcol-xs-12 header-mobile-sub-menu style + padding: 0 10px; + margin-top: + header_contents.css(border-bottom-width) + ; + border-bottom: + header_contents.css(border-bottom) + ; + > + div classal-box column al-l> + ul classmn-ul tc box hsync styledisplay: table-cell; transform: translate3d(0px, 0px, 0px); height: + $(header_contents).height() + px;> + div classpreview>/div> + headerstart>/headerstart> + sub_mn.html() + headerend>/headerend> + /ul> + /div> + /div>; sub_html $(sub_html).css(background, header_contents.css(background)); sub_html $(sub_html).css(border-bottom, header_contents.css(border-bottom)); header_contents.append($(sub_html)); var header_cur header_contents.parent(); var header_next header_cur.next(div); $.each(header_next, function () { var top 0; $.each($(this).prev(div), function () { top + $(this).find(.header-contents).height(); top + $(this).find(.header-contents > div:last-child).height(); }); $(this).attr(data-top, top); $(this).css(top, top); }); } } }); } // section merge // var section_merge $(.header-mobile > .header1).data(section-merge); // if (section_merge false || location.pathname.indexOf(/module/board) > -1) { // merge false 거나 게시글 쓰기/읽기 에서는 헤더영역 확보 // var height 0; // $.each($(.header-mobile > div), function() { // height + parseInt($(this).attr(data-hei)); // }); // $(#main_container > .body)0.style.setProperty(margin-top, height + px, important); // } // else if (section_merge true) { // $(#main_container > .body)0.style.setProperty(margin-top, 0, important); // $(#main_container > .body > .frm)0.style.setProperty(margin-top, 0, important); // } // $(window).bind(load,function() {}); // section merge ver.2 if ($(#main_container .body > mobile-header-section-merge).length > 0) { $(#main_container > .header-mobile).addClass(mobileHeaderSectionMerge); $(#main_container > .body)0.style.setProperty(margin-top, 0, important); $(#main_container > .body > .frm)0.style.setProperty(margin-top, 0, important); } else { $(#main_container > .header-mobile).removeClass(mobileHeaderSectionMerge); var height 0; $.each($(.header-mobile > div), function () { height + parseInt($(this).attr(data-hei)); }); /* 2020.05.21 재헌 * 서브메뉴가 존재할 때 해당 높이도 더해서 body에 margin-top을 부여 */ if ($(.header-mobile-sub-menu).length > 0) { height + $(.header-mobile-sub-menu).height(); } $(#main_container > .body)0.style.setProperty(margin-top, height + px, important); } }}function initHeaderSideNav() { $(#main_container).delegate(.header-side-nav-button, click, function() { $(.header-side-nav).toggleClass(active); if ($(this).parents(.header-mobile).length > 0) { $(this).parents(.header1, .header2, .header3, .header9).addClass(z-index-9999); } // header-side-nav 영역만큼 밀어내기 // $(.body).css(width, calc(100% - 500px)); }); $(#main_container).delegate(.header-side-nav-close, click, function() { $(.header-side-nav).removeClass(active); if ($(this).parents(.header-mobile).length > 0) { setTimeout(function() { // 사이드 네비 닫히는 시간 0.3ms, z-index 빠지는 시간 0.5ms $(this).parents(.header1, .header2, .header3, .header9).removeClass(z-index-9999); }, 500) } // header-side-nav 영역만큼 밀어내기 // $(.body).removeAttr(style); }); /* 2020.03.16 재헌 * language selector, header side nav 같은 별도의 창을 띄우는 헤더 요소가 * header1, header2의 z-index 영향을 받아 위로 겹치거나 의도대로 동작하지 않는 문제를 수정 */ $(#main_container).delegate(.header > div, mouseenter, function() { if ($(.language-dropdown).length > 0 || $(.header-side-nav.active).length > 0) return; $(this).css(z-index, 2); }); $(#main_container).delegate(.header > div, mouseleave, function() { if ($(.language-dropdown).length > 0 || $(.header-side-nav.active).length > 0) return; $(this).css(z-index, 1); });}// 이미지 중 모바일 높이가 지정되지 않은 항목들 및 부모 프레임 크기 지정function initNonScaledImageBox() { if (!isMobile()) return; var image_count 0; var target_count 0; $.each($(.body .imgBox), function() { 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; 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; if ($(this).find(.mobile-box).length > 0) return; if ($(this).parents(.popup-container).length > 0) return; if ($(this).parents(.fixed-contents-layer).length > 0) return; if ($(this).parents(.tab-frm, .slider-frm).length > 0) return; var bg_size $(this).find(.img-core).css(background-size); if (bg_size contain) { image_count++; } }); $.each($(.body .imgBox), function() { 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; 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; if ($(this).find(.mobile-box).length > 0) return; if ($(this).parents(.popup-container).length > 0) return; if ($(this).parents(.fixed-contents-layer).length > 0) return; if ($(this).parents(.tab-frm, .slider-frm).length > 0) return; var img_box $(this); var bg_size $(this).find(.img-core).css(background-size); var bg_image $(this).find(.img-core).css(background-image); if (bg_image) { bg_image bg_image.replace(url(, ).replace(), ).replace(/\/gi, ); } if (bg_size contain) { var tmpImg new Image(); tmpImg.src bg_image; $(tmpImg).one(load,function(){ var ratio tmpImg.width / tmpImg.height; var height_origin img_box.height(); var width_resize window.innerWidth; // img_box.width()는 퍼센트로 출력되기때문에 window width로 대체 var height_resize width_resize/ratio; var diff height_origin - height_resize; // 모바일 스크린보다 작은 이미지, 가로가 더 긴 이미지 등은 패스한다 if (ratio > 1 || height_resize window.innerHeight || height_origin * ratio window.innerHeight) { return; } img_box.height(height_resize); img_box.find(.img-core).height(height_resize); img_box.attr(data-m-hei, height_resize + px); img_box.data(diff, diff); target_count++; if (target_count image_count) { resizeNonScaledImageBoxUpperFrame(); } }); } });}function resizeNonScaledImageBoxUpperFrame() { $.each($(.body > .frm), function() { var re 0; var image_count 0; $.each($(this).find(.box.imgBox), function() { re + parseInt($(this).data(diff)); image_count++; }); if (image_count > 0 && !isNaN(re)) { $.each($(this).find(.frm).andSelf(), function () { if ($(this).height() - re 0) return; resetMobileFrameStyle($(this)); }); } });}function resetMobileFrameStyle($frm) { $frm.children(.view).children(.tb).css(height, auto);}function initRss() { if ($(.rssBox).length > 0) { $(.rssBox .rss-area > ul).remove(); $(.rssBox .view).append($(div classqv-loader qv-loader-black styledisplay: block;>/div>)); $(window).bind(load,function() { // jquery.rss.js 동적 호출 $.getScript( /js/jquery.rss.js, function( data, textStatus, jqxhr ) { $.each($(.rssBox), function() { var box $(this); var target box.find(.rss-area); var rss_url target.attr(data-rss-url); var limit target.attr(data-contents-limit); jQuery(function($) { target.rss(rss_url, { limit: limit, dateFormat: YYYY-MM-DD kk:mm, entryTemplate: li>a href{url} target_blank>span classrss-title>{title}/span>span classrss-date>{nicetime}/span>span classrss-body>{bodyPlain}../span>/a>/li>, tokens: { nicetime: function(entry, tokens) { var createDateTime new Date(tokens.date).getTime(); var currentDateTime new Date(); var compareDateTime currentDateTime.setDate(currentDateTime.getDate() - 1); if (createDateTime > compareDateTime) { return getNiceTime(createDateTime, new Date(), 1, true); } else { return tokens.date; } }, }, success: function(data){ box.find(.qv-loader).remove(); }, error: function(xhr){ box.find(.qv-loader).remove(); }, }) }) }); }); }); }}function initLnb() { if ($(.lnbBox).length > 0) { var path QV_BASE_OBJ.spid; $(.lnb-area .lnb-itemdata-spid + path + ).addClass(active); }}// 모바일 터치 참고 https://fullcalendar.io/docs/longPressDelayfunction initCalendar(elements) { if ($(.calendarBox).length > 0) { // calendar script 동적 호출 $.getScript( /js/fullcalendar/moment.min.js, function( data, textStatus, jqxhr ) { $.getScript( /js/fullcalendar/fullcalendar.min.js, function( data, textStatus, jqxhr ) { $.getScript( /module/calendar/calendar.js, function( data, textStatus, jqxhr ) { if (elements) { buildCalendar(elements); } else { $.each($(.calendarBox), function() { buildCalendar(this); }); } }); }); }); }}function initPageFadeEvent() { var page_effect 0; if (page_effect 1) { $(body).addClass(body-fade); $(.body-fade).delegate(a, click, function(e) { var target $(this); var targetUrl document.activeElement.href; if (target.attr(class).indexOf(cke) > -1) return; else if (target.attr(target) _blank) return; else if (target.attr(href) undefined) return; else if (target.attr(href).indexOf(#sld) > -1) return; else if (target.attr(href).indexOf(#tab) > -1) return; else if (targetUrl javascript:void(0)) return; else if (targetUrl undefined) return; else if (targetUrl.substr(targetUrl.length - 1) #) return; else if (targetUrl ! undefined && targetUrl ! ) { e.preventDefault(); $(body).fadeOut( fast, function() { location.href targetUrl; }); } }); }}function initJoinModal() { $(#main_container).delegate(ahref/join, click, function() { if (NAVER_CLIENT_ID && KAKAO_CLIENT_ID && GOOGLE_CLIENT_ID ) { location.href /join; return; } else { $(#JoinModal).modal(show); return false; } });}function initPolicyPrivacyModal() { $(#main_container).delegate(ahref/policy_privacy, click, function() { if ($(#PolicyPrivacyModal).data(policy)) { $(#PolicyPrivacyModal).modal(show); } else { qvjax_direct( select_terms, /module/member/member.php, , function (data) { if (data.length > 0) { var m privacy; var text $.grep(data, function (e) { return e.stms_type m; })0.stms_txt; $(#policy-privacy-textarea).val(text); $(#PolicyPrivacyModal).modal(show); $(#PolicyPrivacyModal).data(policy, data); } }, function (xhr) { } ); } return false; });}function removeSiteCopiedElement() { // 복제된 게시판, 폼 삭제처리 $(#main_container .SiteCopiedElement).remove();}function initSnSIconImage() { $.each($(.sns-icon-image), function() { if ($(this).width() 40) { var bg $(this).css(background-image); if (bg.toLowerCase().indexOf(color-30) > 0 || bg.toLowerCase().indexOf(color-30) > 0) { return; } if (bg.indexOf(-30) > -1) return; var convertSmall bg.replace(Color, Color-30).replace(Black, Black-30); $(this).css(background-image, convertSmall); } });}function initSliderCallback() { $.each($(.slider-frm .carousel.slide), function() { $(this).bind(slide.bs.carousel, function (e) { //$(this).find(.qv-ani-ele).toggleClass(qv-ani-ele qv-ani); $(e.relatedTarget).find(.qv-ani).toggleClass(qv-ani qv-ani-ele); $.each($(e.relatedTarget).find(.video-iframe), function() { var src; if ($(this).attr(src)) { src $(this).attr(src).split(×tamp)0; } else if ($(this).attr(data-src)) { src $(this).attr(data-src).split(×tamp)0; } if (src) { $(this).attr(src, src + ×tamp + new Date().getTime()); } }); }); });}function initSlider(element) { /* 2020.03.12 재헌 * 슬라이드 배경 이미지는 초기화 시 미리 불러온다 * 미리 불러오지 않으면 슬라이드 넘길 때 마다 흰 화면이 나타남 */ const target element ? element : $(.slider-frm) $.each(target.find(.carousel-inner > .item > .frm), function() { var url $(this).css(background-image); if (url none || url.indexOf(url) -1) return; else { var img new Image(); img.src url.match(/url\(?(^*)?\)/)1; } }); // carousel 스윕 $.each(target.not(.fullpage).find(.carousel), function() { $.each($(this).find(.item), function(i) { var active i 0 ? active : ; $(this).attr(class, item + active); }); $(this).find(.carousel-indicators > li).removeClass(active); $(this).find(.carousel-indicators > li).first().addClass(active); $(this).carousel({ swipe: 200 }); $(this).carousel(0); /* 2020.02.25 재헌 * 자동 넘기기 시간 간격 조정 */ if($(this).attr(data-slider-interval)) { var slider $(this); var interval parseInt($(this).attr(data-slider-interval)); interval interval > 1000 ? interval : 5000; var sliderInterval setInterval(function() { slider.carousel(next); }, interval); } });}function initFullPageSlider() { if ($(#main_container > .body > .fullpage).length 0) return; $.each($(.slider-frm.fullpage), function() { $(this).find(.carousel.slide).carousel(0); $(this).find(.item).each(function(i, val) { if (i 0) { $(val).addClass(active).removeAttr(style); } else { $(val).removeClass(active).attr(style, transform: translate3d(0px, 100%, 0px);); } }) }); var isMobile /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; if(!isMobile) { $(#main_container).delegate(.slider-frm.fullpage, mousewheel, function (e, delta) { //$(.slider-frm.fullpage).on(mousewheel, function (e, delta) { if (delta undefined) { // 2019.01.02 delta 값이 undefined로 넘어와서 아래와 같이 처리 if (e.originalEvent.wheelDelta > 0) delta 1; else delta -1; } var is_fullpage_scrolling $(this).attr(data-scrolling) true ? true : false; if (is_fullpage_scrolling) { e.preventDefault(); return false; } $(this).attr(data-scrolling, true); var index $(this).find(.carousel.slide .carousel-inner > .item.active).index() + 1; var total $(this).find(.carousel.slide .carousel-inner > .item).length; var active_item $(this).find(.carousel.slide .carousel-inner > .item.active); if (delta 1) { if (index 1) { $(this).attr(data-scrolling, false); return; } $(this).find(.carousel.slide).carousel(prev); var scrollY parseInt(this.offsetTop); $(html, body).animate({scrollTop: scrollY}, 300); // 2019-05-13 재헌 // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함 active_item.prev().removeAttr(style); active_item.css(transform, translate3d(0, 100%, 0)); } else { if (index total) { $(this).attr(data-scrolling, false); return; } $(this).find(.carousel.slide).carousel(next); var scrollY parseInt(this.offsetTop); $(html, body).animate({scrollTop: scrollY}, 300); // 2019-05-13 재헌 // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함 active_item.next().removeAttr(style); active_item.css(transform, translate3d(0, -100%, 0)); } return false; }); } else { // touchmove 이벤트 제거. 일부 브라우저에서 스크롤 오동작함 (safari) $(.slider-frm.fullpage).bind(touchmove, function(e){e.preventDefault()}); $(.slider-frm.fullpage).on(swipedown swipeup, function (e) { var is_fullpage_scrolling $(this).attr(data-scrolling) true ? true : false; if (is_fullpage_scrolling) { // e.preventDefault(); return false; } $(this).attr(data-scrolling, true); var index $(this).find(.carousel.slide .carousel-inner > .item.active).index() + 1; var total $(this).find(.carousel.slide .carousel-inner > .item).length; var active_item $(this).find(.carousel.slide .carousel-inner > .item.active); if (e.type swipedown) { if (index 1) { if ($(this).prev(.frm).length > 0) { // var scrollY parseInt($(this).prev(.frm).offset().top); $(html, body).animate({scrollTop: scrollY}, 200); } else { $(html, body).animate({scrollTop: 0}, 200); } $(this).attr(data-scrolling, false); return; } $(this).find(.carousel.slide).carousel(prev); var scrollY parseInt(this.offsetTop); $(html, body).animate({scrollTop: scrollY}, 300); // 2019-05-13 재헌 // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함 active_item.prev().removeAttr(style); active_item.css(transform, translate3d(0, 100%, 0)); } else { if (index total) { var scrollY parseInt(this.offsetTop + $(this).height()); $(html, body).animate({scrollTop: scrollY}, 200); $(this).attr(data-scrolling, false); return; } $(this).find(.carousel.slide).carousel(next); var scrollY parseInt(this.offsetTop); $(html, body).animate({scrollTop: scrollY}, 300); // 2019-05-13 재헌 // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함 active_item.next().removeAttr(style); active_item.css(transform, translate3d(0, -100%, 0)); } return false; }); } // 2019-05-13 재헌 // fullpage 위/아래 슬라이드 시 가끔씩 오동작 하는 부분이 있어서 스크립트로 제어함 $(#main_container).on(click, .fullpage .carousel-indicators > li, function () { var fullpage $(this).parents(.fullpage).first(); fullpage.find(.carousel-inner > .item).removeAttr(style); var selected_item_num $(this).attr(data-slide-to); var selected_item $(fullpage.find(.carousel-inner > .item).get(selected_item_num)); selected_item.prev(.item).css(transform, translate3d(0, -100%, 0)); selected_item.next(.item).css(transform, translate3d(0, 100%, 0)); }); // transition init (ie : left, others : transition) $.each($(.fullpage .carousel-inner .item), function() { $.each($(this).children(.frm), function(i) { if (is_InternetExplorer()) { $(this).css(transform, none); $(this).css(left, parseInt(i * 100) + vw); } else { $(this).css(transform, translate3d( + parseInt(i * 100) + vw,0,0)); } $(this).removeClass(active); }); }); $(#main_container).on(click, .fullpage-slide-control, function () { var item $(this).parent(); var frames $(item).children(.frm); var total_length frames.length; var active_frm frames.filter(function () { return $(this).hasClass(active); }); if (active_frm.length 0) { active_frm frames.first(); } var index active_frm.index(); if ($(this).hasClass(left)) { if (index 0) { frames.removeClass(active); frames.last().addClass(active); $.each(frames, function (i) { var idx total_length - i - 1; if (is_InternetExplorer()) { $(this).css(left, - + parseInt(idx * 100) + vw); } else { $(this).css(transform, translate3d(- + parseInt(idx * 100) + vw,0,0)); } }); } else { $.each(frames, function (i) { var left (i - index + 1) * 100; if (is_InternetExplorer()) { $(this).css(left, left + vw); } else { $(this).css(transform, translate3d( + left + vw,0,0)); } $(this).removeClass(active); if (i index-1) { $(this).addClass(active); } }); } } else if ($(this).hasClass(right)) { if (index total_length - 1) { frames.removeClass(active); frames.first().addClass(active); $.each(frames, function (i) { if (is_InternetExplorer()) { $(this).css(left, parseInt(i * 100) + vw); } else { $(this).css(transform, translate3d( + parseInt(i * 100) + vw,0,0)); } }); } else { $.each(frames, function (i) { var left (i - index - 1) * 100; if (is_InternetExplorer()) { $(this).css(left, left + vw); } else { $(this).css(transform, translate3d( + left + vw,0,0)); } $(this).removeClass(active); if (i index + 1) { $(this).addClass(active); } }); } } }); $(.fullpage).find(.carousel.slide).on(slid.bs.carousel, function () { var slider $(this).parents(.fullpage); setTimeout(function () { $(slider).attr(data-scrolling, false); }, 550); }); jQuery.fn.carousel.Constructor.TRANSITION_DURATION 1000 // 2 seconds}function is_InternetExplorer() { var agent navigator.userAgent.toLowerCase(); return (navigator.appName Netscape && agent.indexOf(trident) ! -1) || (agent.indexOf(msie) ! -1);}function initSMS() { qvjax_direct( select_sms_info, // + QV_BASE_OBJ.dev + g + QV_BASE_OBJ.svid + m.quv.kr + /qws/aligo.php, , function (data) { $.each(data, function() { if (this.smi_state 1) { var hide_icon ; var hide_window ; var isMobile /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; if(isMobile) { hide_window sms-hide; } else { if (this.smi_init_show 1) { hide_icon sms-hide; } else { hide_window sms-hide; } } var html div idfixed-contents-sms classfixed-contents-layer fixed-contents-show-all stylebottom: 40px; right: 40px; top: auto; left: auto; data-axisse> div classbox smsBox> div classpreview>/div>div classview> div> div classsms-icon + hide_icon + > div> i classicon-bubbles aria-hiddentrue>/i> /div>/div>div classsms sms-1 + hide_window + > div classsms-header>span>SMS 문자보내기/span> div classsms-close>×/div>/div>div classsms-body> div classsms-message> div classsms-title>메세지/div>textarea>/textarea> /div>div classsms-contact> div classsms-title>연락처/div>input typetext> div classsms-agree>input typecheckbox>a href/policy_privacy>개인정보 수집 및 이용/a>에 동의합니다/div>/div>/div>div classsms-footer> 보내기 /div>/div>/div>span classconfiguration fixed-contents-config-btn styletop: -18px; bottom: auto;>a classlabel> i classicon-arrow-down>/i>/a>/span> div classfixed-contents-close>i classicon-close>/i>/div>/div>/div>/div>; $(.body).append($(html)); $(.sms-header > span).text(this.smi_title); $(.sms-message > textarea).attr(placeholder, this.smi_placeholder); var start parseInt(this.smi_start_time); var end parseInt(this.smi_end_time); end end 0 ? 2400 : end; var current_hours new Date().getHours(); var current_minutes new Date().getMinutes(); var current_time parseInt(current_hours.toString() + current_minutes.toString()); if (start current_time && current_time end) { $(.smsBox).show(); } else { $(.smsBox).hide(); return; } // sms $(.sms-icon).on(click, function() { var sms $(this).parents(.smsBox).first(); sms.find(.sms-icon).addClass(sms-hide); sms.find(.sms).removeClass(sms-hide); }); $(.sms-close).on(click, function() { var sms $(this).parents(.smsBox).first(); sms.find(.sms).addClass(sms-hide); sms.find(.sms-icon).removeClass(sms-hide); }); $(.sms-contact input).on(change keydown paste input, function() { var number $(this).val(); if (number.length > 20) { $(this).val($(this).val().slice(0,20)); return false; } this.value this.value.replace(/^0-9\./g,); }); $(.sms-footer).on(click, function() { var sms $(this).parents(.smsBox).first(); var phone sms.find(.sms-contact input).val(); var message sms.find(.sms-message textarea).val(); var agree sms.find(.sms-agree input).prop(checked); if (!isValidMobileNumber(phone)) { alert(lang.failure_send_sms_invalid_number); return; } if (!agree) { alert(lang.agree_privacy_info); return; } qvjax_direct( send, // + QV_BASE_OBJ.dev + g + QV_BASE_OBJ.svid + m.quv.kr + /qws/aligo.php, msg + message + &sender + phone, function (data) { if (data.result_code 1 && data.message success) { smsSendComplete(data.sshid, data.msg_id, data.msg_type, function() { sms.find(.sms-contact input).val(); sms.find(.sms-message textarea).val(); sms.find(.sms-agree input).prop(checked, false); alert(lang.success_send_sms); qv_func.conversion(sms, function() {}) }); } else if (data.result_code 0) { switch(data.message) { case frequently_called: alert(lang.failure_send_sms_frequently_called); break; case too_long_message: alert(lang.failure_send_sms_too_long_message); break; case low_balance: alert(lang.failure_send_sms_low_balance); break; case invalid_number: alert(lang.failure_send_sms_invalid_number); break; default: alert(lang.failure_send_sms_default); break; } } else if (data.result_code -101) { smsSendFailure(data.sshid, data.result_code, data.message, function() { alert(lang.failure_send_sms_default); }); } }, function (xhr) { } ); }); } }); }, function (xhr) { } ); function smsSendComplete(sshid, msg_id, msg_type, callback) { var type msg_type.toLowerCase() sms ? sms : lms; qvjax_direct( complete, // + QV_BASE_OBJ.dev + g + QV_BASE_OBJ.svid + m.quv.kr + /qws/aligo.php, sshid + sshid + &msg_id + msg_id + &msg_type + type, function (data) { callback(); }, function (xhr) { } ) } function smsSendFailure(sshid, res_code, res_error_msg, callback) { qvjax_direct( failure, // + QV_BASE_OBJ.dev + g + QV_BASE_OBJ.svid + m.quv.kr + /qws/aligo.php, sshid + sshid + &res_code + res_code + &res_error_msg + res_error_msg, function (data) { callback(); }, function (xhr) { } ) } function isValidMobileNumber(num) { //if(!num.match(/^\d+$/)) { valid false; } 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, 020, 021, 022, 023, 024, 025, 026, 027, 028, 029; var head num.slice(0, 3); return $.inArray(head, arr_head) > -1 ? true : false; }}function byteCheck(string){ var utf8length 0; for (var n 0; n string.length; n++) { var c string.charCodeAt(n); if (c 128) { utf8length++; } else if((c > 127) && (c 2048)) { utf8length utf8length+2; } else { utf8length utf8length+3; } } return utf8length;}function initTabFrame() { // 2019.01.31 $.each($(.tab-frm), function() { $(this).find(.tab-frame-nav > ul > li).removeClass(active); //$(this).find(.tab-frame-nav > ul > li:first-child).addClass(active); $(this).find(.tab-frame-nav > ul > li:first-child > a).trigger(click); }); // 2018.09.04 재헌 // URL에 #tab- 형식의 값이 있으면 해당 탭을 활성화한다. var hash location.hash; if (hash ! undefined && hash ! ) { if (hash.indexOf(tab-) 0) { return; } if ($(hash).length 0) { return; } var tab $(ahref + hash + ); var nav tab.closest(.tab-frame-nav); $.each(nav.find(li), function() { $(this).children(a).attr(aria-expanded, false); $(this).removeClass(active); }); tab.attr(aria-expanded, true); tab.parent().addClass(active); /* 2021.08.02 * PC, 모바일 따로 구성하여 같은 id가 두 개 이상 있을 때 * 둘 다 active 클래스 영향을 받도록 함 */ $(divid + hash.replace(/#/g, ) + ).each(function() { $(this).siblings().removeClass(active); $(this).addClass(active); }); // $(hash).siblings().removeClass(active); // $(hash).addClass(active); setTimeout(function(){ $(window).scrollTop(nav.offset().top - $(.header).height());// $(html, body).animate({// scrollTop: nav.offset().top - 200// }, 500); },500); /* 2020.03.19 재헌 * 탭을 mobile_ele로 복사하여 넣은 경우 헤더의 탭 앵커가 동작하지 않기 때문에(id가 달라서) * 이름으로 찾아 활성화한다 */ if (isMobile()) { var tab_name tab.first().text(); $.each($(.mobile_ele .tab-frame-nav a), function() { if ($(this).text() tab_name) { var id $(this).attr(href); $(this).parent().siblings().removeClass(active); $(this).parent().addClass(active); $(.mobile_ele + id).siblings().removeClass(active); $(.mobile_ele + id).addClass(active); } }); } } // 탭 내에 지도가 있으면 렌더링이 정상적으로 안되는 증상이 있음 // 탭 클릭시 지도를 새로 렌더링 하도록 함 $(#main_container).delegate(.tab-frm .tab-frame-nav li > a, click, function(e) { var frm $(this).parents(.tab-frm).first(); $.each(frm.find(.mapBox), function() { var map $(this); map.removeClass(map-rendering-complete); map.find(.qv-map).children().remove(); setTimeout(function() { renderMapBox(map); }, 100); }); $.each(frm.find(.mapListBox), function() { var map $(this); map.removeClass(map-list-rendering-complete); map.find(.qv-map-list).children().remove(); setTimeout(function() { renderMapListBox(map); }, 100); }); // 동일 페이지에 같은 아이디의 텝이 두개 이상 존재할 때 var tab_id $(this).attr(href).replace(/#/g, ); if ($(.tab-paneid + tab_id + ).length > 0) { e.preventDefault(); //frm.find(.tab-pane.active).removeClass(active); frm.find(.tab-content).first().children(.tab-pane.active).removeClass(active); frm.find(.tab-paneid + tab_id + ).addClass(active); } // 탭 클릭 시 마우스오버 컨텐츠 Initialize $.each(frm.find(.mouseover-frm), function() { var before $(this).find(.mouseover-before).first(); var after $(this).find(.mouseover-after).first(); var mouseover_height before.height() > after.height() ? before.height() : after.height(); if ($(this).height() mouseover_height) { var tb $(this).children(.view).children(.tb); tb.height(mouseover_height); } }); initIframe(frm.find(.iframeBox)); });}$(window).on(hashchange, function(e) { var hash window.location.hash; var oldUrl e.originalEvent.oldURL; var newUrl e.originalEvent.newURL; var oldUrl_noHash oldUrl.indexOf(#) 0 ? oldUrl : oldUrl.split(#)0; var newUrl_noHash newUrl.indexOf(#) 0 ? newUrl : newUrl.split(#)0; if (hash.indexOf(#tab) > -1 && (oldUrl_noHash newUrl_noHash)) { window.location.href newUrl; window.location.reload(); }});// 픽스드 컨텐츠 초기화function initFixedContents() { var isMobile /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; if(isMobile) { var fixed $(body).find(.fixed-contents-layer.fixed-contents-show-mobile); $.each(fixed, function() { var top this.style.top; var left this.style.left; var bottom this.style.bottom; var right this.style.right; var ratio 3; if (top ! auto) { $(this).css(top, parseFloat(top) / ratio + px); } if (left ! auto) { $(this).css(left, parseFloat(left) / ratio + px); } if (bottom ! auto) { $(this).css(bottom, parseFloat(bottom) / ratio + px); } if (right ! auto) { $(this).css(right, parseFloat(right) / ratio + px); } }); } //Click event to scroll to top & bottom var didScroll false; $(body).delegate(.scrollToTop, click, function(e) { if (!didScroll) { didScroll true; $(html, body).stop().animate({scrollTop: 0}, 500, swing, function() {didScroll false;}); return false; } }); $(body).delegate(.scrollToBottom, click, function(e) { if (!didScroll) { didScroll true; $(html, body).stop().animate({scrollTop: $(.body).height()}, 500, swing, function() {didScroll false;}); return false; } });}// 픽스트 컨텐츠 초기화 끝// Youtube 자동 재생 시작/* * mute 속성 안주면 자동재생 안됨. 현재 iframe src에 mute1 속성 부여 * https://stackoverflow.com/questions/40685142/youtube-autoplay-not-working */$(window).load(function() { // if ($(.video-iframe).length > 0) { /* * Youtube API 로드 * 2019.03.18 재헌 주석처리 * Youtube API 미사용중. 아래 스크립트 때문에 반복재생이 안되는 문제 발생 */ var tag document.createElement(script); tag.src https://www.youtube.com/iframe_api; var firstScriptTag document.getElementsByTagName(script)0; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); // }});// iframe 제거하고 새로운 iframe 생성// iframe이 속한 videoBox를 찾아서, 그 안에 집어넣어주기// 해당위치에 div를 새롭게 생성하고 원래 있던 내용 집어넣기// this.id, height 100%, width 100%, class -> video-iframe, data-srcfunction mobileAutoPlayIframe () { $(.videoBox).each(function(){ // vimeo는 해당 로직 필요 없음 if($(this).find(.video-iframe)0.getAttribute(data-src).indexOf(vimeo) > -1) return; var vBox $(this).find(.view)0 var iframe $(this).find(.video-iframe)0 var newIframe document.createElement(div) if (!iframe.id) return; else { newIframe.id iframe.id; newIframe.className video-iframe; newIframe.setAttribute(data-src, iframe.getAttribute(data-src)); iframe.remove(); vBox.append(newIframe); }; })}mobileAutoPlayIframe()var player_list ;function onYouTubeIframeAPIReady() { $(.videoBox).each(function() { // vimeo는 해당 로직 필요 없음 if($(this).find(.video-iframe)0.getAttribute(data-src).indexOf(vimeo) > -1) return; var player; var targetId $(this).find(.video-iframe)0.id // 기존 아이디 없는 동영상들 놔두기 if(!targetId) return; var videoId $(this).find(.video-iframe)0.getAttribute(data-src).split(embed/)1.split(?)0 var src $(this).find(.video-iframe)0.getAttribute(data-src) var isAutoPlay src.indexOf(autoplay1) var isMute src.indexOf(mute1) var isLoop src.indexOf(loop1) player new YT.Player(targetId, { height: 100%, width: 100%, videoId: videoId, events: { onReady: onPlayerReady, onStateChange:onPlayerStateChange }, }); // 모바일 자동재생 하기 위해서 src에 autoplay 추가 if(isAutoPlay > 0) { var afterSrc $(#+targetId)0.getAttribute(src) + &autoplay1&mute1; $(#+targetId)0.setAttribute(src,afterSrc); } // 동영상 로드되면 autoplay 실행 function onPlayerReady(event) { if(isAutoPlay > 0) player.playVideo(); } // 재생 끝난 동영상 roop 값 확인하고 다시 재생 function onPlayerStateChange (event) { if(event.data YT.PlayerState.ENDED && isLoop > 0) player.playVideo(); } })}// Youtube 자동 재생 끝// SNS 초기화 시작function initSnsFeed() { //var sns_feed $(#main_container divname*feed); var sns_feed $(#main_container div.sns-feed); $.each(sns_feed, function(i, val) { var target $(val).parents(.box).first(); var feed_token target.data(feed_token); var feed_count target.data(feed_count); var feed_style target.data(feed_style); var feed_column target.data(feed_column); var feed_column_m target.data(feed_column_m); var feed_height_m target.data(feed_height_m) undefined ? $(val).find(.sns-feed-image-layer).height() : target.data(feed_height_m); var feed_type target.data(feed_type); var vBox $(val).parents(.view).first(); if (feed_type ! undefined && feed_token ! undefined) { switch(feed_type) { case twitter: renderTwitterFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox); break; case instagram: renderInstagramFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox); break; } target.removeAttr(data-feed_token); } });}function initInstagramFeed() { var instagram_feed $(#main_container div.instagramFeedBox); $.each(instagram_feed, function(i, val) { var target $(this); var feed_token target.data(access-token); var feed_count target.data(feed-count); var feed_count_m target.data(feed-count-m); var feed_column target.data(feed-column); var feed_column_m target.data(feed-column-m); var feed_height target.data(feed-height); var feed_height_m target.data(feed-height-m) undefined ? $(val).find(.sns-feed-image-layer).height() : target.data(feed-height-m); var feed_margin target.data(feed-margin); var vBox $(val).children(.view).first(); renderInstagramGraphFeed(feed_token, feed_count, feed_column, feed_count_m, feed_column_m, feed_height, feed_height_m, feed_margin, vBox) target.removeAttr(data-access-token); });}//(function(d, s, id) {// var js, fjs d.getElementsByTagName(s)0;// if (d.getElementById(id)) return;// js d.createElement(s); js.id id;// js.src https://connect.facebook.net/ko_KR/sdk.js#xfbml1&versionv3.1&appId786526475012875&autoLogAppEvents1;// fjs.parentNode.insertBefore(js, fjs);//}(document, script, facebook-jssdk));function initFacebookSDK(d, s, id, c) { var js, fjs d.getElementsByTagName(s)0; if (d.getElementById(id)) return; js d.createElement(s); js.id id; js.src https://connect.facebook.net/ko_KR/sdk.js#xfbml1&versionv3.1&appId786526475012875&autoLogAppEvents1; if (c) { fjs.addEventListener(load, function(e) { c(null, e); }, false); } fjs.parentNode.insertBefore(js, fjs);}function refreshInstagramAccessToken(access_token, callback) { qvjax_direct( refresh_instagram_access_token, /module/sns/instagram.php, &access_token + access_token, function(data) { /* result 0 : 토큰 갱신 필요 * result 1 : 정상 */ if (data.result 0) { $.ajax({ type: GET, url: https://graph.instagram.com/refresh_access_token?grant_typeig_refresh_token&access_token + access_token, success: function (response) { console.log(response, response); callback(); }, error: function (xhr) { console.log(Instagram\n토큰 갱신에 실패했습니다.\n관리자에게 문의해주세요., xhr); // if (xhr.responseJSON.error.code 190) {} } }); } else if (data.result 1) { callback(); } }, function (xhr) { console.log(xhr, xhr.responseText); callback(); } )}function renderInstagramGraphFeed(feed_token, feed_count, feed_column, feed_count_m, feed_column_m, feed_height, feed_height_m, feed_margin, vBox) { if (!feed_token) return; refreshInstagramAccessToken(feed_token, function() { $.ajax({ type: GET, url: https://graph.instagram.com/me/media?fieldsid,caption,media_type,media_url,thumbnail_url,timestamp,permalink&access_token + feed_token, success: function (response) { if (!response.data) return else if (response.data.length > 0) { $(vBox.children(div)0).empty(); var count isMobile() ? feed_count_m : feed_count; for (var i 0; i count; i++) { var media response.datai; if (!media) return; var thumbnail media.media_type VIDEO ? media.thumbnail_url : media.media_url; var feed div classsns-feed-box grid- + feed_column + grid-m- + feed_column_m + >; feed + a target_blank href + media.permalink + >; feed + div classsns-feed-image-layer m-h- + feed_height_m + styleheight: + feed_height + px; margin: + feed_margin + px;>; feed + div classsns-feed-image stylebackground-image: url( + thumbnail + );>/div>; feed + div classsns-feed-caption-layer qv-font>; if (media.caption ! undefined) { if (media.caption.length > 0) { var text media.caption; var length 100; var trimmedString text.length > length ? text.substring(0, length - 3) + ... : text; feed + p classsns-feed-caption-contents> + trimmedString + /p> } } feed + span classsns-feed-caption-info>; feed + div classsns-feed-caption-time>; feed + i classfa fa-calendar-o>/i>; feed + getNiceTime(new Date(media.timestamp).getTime(), new Date(), 1, true); feed + /div>; feed + /span>; feed + /div>; feed + /div>; feed + /a>; feed + /div>; $(vBox.children(div)0).append(feed); $(vBox).find(.sns-feed).show() } } }, error: function(xhr) { console.log(Instagram\n잘못된 계정이거나 존재하지 않는 계정입니다.\n\n계정정보나 비밀번호가 변경되었다면 다시 한 번 연동해주시기 바랍니다.); console.log(Instagram ERROR, JSON.parse(xhr.responseText).error); $(vBox).find(.sns-feed).show(); } }); });}function renderInstagramFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox) { $.ajax({ type: GET, dataType: jsonp, cache: false, url: https://api.instagram.com/v1/users/self/media/recent/?access_token + feed_token + &count + feed_count, success: function (response) { if (!response.data) return; else if (response.data.length > 0) { $(vBox.children(div)0).empty(); for (var i 0; i response.data.length; i++) { var feed div classsns-feed-box grid- + feed_column + grid-m- + feed_column_m + >; feed + a target_blank href + response.datai.link + >; feed + div classsns-feed-image-layer m-h- + feed_height_m + style + feed_style + >; feed + div classsns-feed-image stylebackground-image: url( + response.datai.images.standard_resolution.url + );>/div> feed + /div>; feed + div classsns-feed-caption-layer qv-font>; if (response.datai.caption ! null) { if (response.datai.caption.text.length > 0) { var text response.datai.caption.text; var length 100; var trimmedString text.length > length ? text.substring(0, length - 3) + ... : text; feed + p classsns-feed-caption-contents> + trimmedString + /p> } } feed + span classsns-feed-caption-info>; feed + div classsns-feed-caption-time>; feed + i classfa fa-calendar-o>/i>; feed + getNiceTime(parseInt(response.datai.created_time) * 1000, new Date(), 1, true); feed + /div>; feed + div classsns-feed-caption-likes>; feed + i classfa fa-heart>/i>; feed + response.datai.likes.count; feed + i classfa fa-comment>/i>; feed + response.datai.comments.count; feed + /div>; feed + /span>; feed + /div>; feed + /a>; feed + /div>; $(vBox.children(div)0).append(feed); } } if (response.data.length feed_count && response.pagination) { if (!response.pagination.next_url) return; else { renderInstagramFeedMore( response.pagination.next_url, feed_count - response.data.length, feed_column, feed_column_m, feed_height_m, feed_style, vBox); } } } });}// 특정 이유로 인스타그램 피드를 원하는 개수만큼 불러오지 못했을 때 추가로 API를 호출한다// 저작권이 있는 BGM이 들어간 영상, 재생시간이 1분 이상인 영상 등// https://smashballoon.com/video-posts-are-missing-or-only-show-thumbnail/function renderInstagramFeedMore(feed_url, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox) { $.ajax({ type: GET, dataType: jsonp, cache: false, url: feed_url, success: function (response) { if (!response.data) return else if (response.data.length > 0) { for (var i 0; i feed_count; i++) { var feed div classsns-feed-box grid- + feed_column + grid-m- + feed_column_m + >; feed + a target_blank href + response.datai.link + >; feed + div classsns-feed-image-layer m-h- + feed_height_m + style + feed_style + >; feed + div classsns-feed-image stylebackground-image: url( + response.datai.images.standard_resolution.url + );>/div> feed + /div>; feed + div classsns-feed-caption-layer qv-font>; if (response.datai.caption ! null) { if (response.datai.caption.text.length > 0) { var text response.datai.caption.text; var length 100; var trimmedString text.length > length ? text.substring(0, length - 3) + ... : text; feed + p classsns-feed-caption-contents> + trimmedString + /p> } } feed + span classsns-feed-caption-info>; feed + div classsns-feed-caption-time>; feed + i classfa fa-calendar-o>/i>; feed + getNiceTime(parseInt(response.datai.created_time) * 1000, new Date(), 1, true); feed + /div>; feed + div classsns-feed-caption-likes>; feed + i classfa fa-heart>/i>; feed + response.datai.likes.count; feed + i classfa fa-comment>/i>; feed + response.datai.comments.count; feed + /div>; feed + /span>; feed + /div>; feed + /a>; feed + /div>; $(vBox.children(div)0).append(feed); } } } });}function renderTwitterFeed(feed_token, feed_count, feed_column, feed_column_m, feed_height_m, feed_style, vBox) { $.ajax({ type: GET, dataType: jsonp, cache: false, url: location.protocol + //quv.kr + /auth/twitter/tweets_json.php?count + feed_count + &callbacklistTweets&screen_name + feed_token, success: function(response) { if (response.length > 0) { $(vBox.children(div)0).empty(); for (var i 0; i response.length; i++) { if (typeof responsei.entities.media ! undefined && responsei.entities.media.length > 0) { var imageUrl responsei.entities.media0.media_url_https; var link responsei.entities.media0.url; var feedImageHtml div classsns-feed-image stylebackground-image: url( + imageUrl + );>/div>; } else { var link http://twitter.com/ + responsei.user.screen_name + /status/ + responsei.id_str; var feedImageHtml div classsns-feed-image>div>i classfa fa-twitter>/i>/div>/div>; } var feed div classsns-feed-box grid- + feed_column + grid-m- + feed_column_m + >; feed + a target_blank href + link + >; feed + div classsns-feed-image-layer m-h- + feed_height_m + style + feed_style + >; feed + feedImageHtml feed + /div>; if (typeof responsei.entities.media ! undefined && responsei.entities.media.length > 0) { feed + div classsns-feed-caption-layer>; } else { feed + div classsns-feed-caption-layer-display>; } if (responsei.text.length > 0) { var text responsei.text; var length 100; var trimmedString text.length > length ? text.substring(0, length - 3) + ... : text; feed + p classsns-feed-caption-contents> + trimmedString + /p> } feed + span classsns-feed-caption-info>; feed + div classsns-feed-caption-time>; feed + i classfa fa-calendar-o>/i>; feed + getNiceTime(new Date(Date.parse(responsei.created_at.replace(/( \+)/, UTC$1))), new Date(), 1, true); feed + /div>; feed + div classsns-feed-caption-likes>; feed + i classfa fa-heart>/i>; feed + responsei.favorite_count; feed + i classfa fa-retweet>/i>; feed + responsei.retweet_count; feed + /div>; feed + /span>; feed + /div>; feed + /a>; feed + /div>; $(vBox.children(div)0).append(feed); } } } });}// SNS 초기화 끝// 모바일용 헤더 초기화function initMobileHeader() { $(.header-mobile-nav-btn).on(click, function() { $(.header-mobile).addClass(active-side-nav); }); $(.header-mobile-side-nav-close).on(click, function() { $(.header-mobile).removeClass(active-side-nav); }); $(#main_container).delegate(.active-side-nav, click, function(e) { if ($(e.target).hasClass(header-mobile)) { $(.header-mobile).removeClass(active-side-nav); } }); $(.header-mobile-side-nav, .header-side-nav).delegate(.mn-dropdown, click, function(e) { var parent $(this).parent(); if (parent.find(ul.sub-mn).length > 0 && !parent.hasClass(active)) { parent.addClass(active); } else { parent.removeClass(active); } }); // 모바일에서 스크롤 할 때 헤더에 scroll클래스 추가 $(window).on(scroll, function(e) { if ($(this).scrollTop() > 50) { $(.header-mobile).addClass(scroll); } else { $(.header-mobile).removeClass(scroll); } var scrollTop $(this).scrollTop(); var mobile_header $(#main_container > .header-mobile > div); var mobile_header_fixed $(#main_container > .header-mobile > divdata-scroll-fixtrue); if (mobile_header.length ! mobile_header_fixed.length) { $.each($(#main_container > .header-mobile > divdata-scroll-fixtrue), function () { var min 0; var max parseInt($(this).data(top)); var top max - scrollTop; top top min ? min : top; $(this).css(top, top + px); }); } // 서브메뉴가 존재할 때 header merge 상태이면 // 스크롤 시 header-mobile-sub-menu 배경 색상을 투명에서 기존 색상으로 변경해주는 작업 $.each($(#main_container > .header-mobile .header-mobile-sub-menu), function() { $(this).css(background, $(this).parent().css(background)); }); });}// 모바일용 헤드 초기화 끝// 스크롤var isScrolling false;function onScrollBefore() { if (isScrolling) { isScrolling false; scrollChangeHeaderLogoImage(before); }}function onScrollAfter() { if (!isScrolling) { isScrolling true; scrollChangeHeaderLogoImage(after); }}function scrollChangeHeaderLogoImage(e) { const logo $(.header .logoBox .logo-img-core.scroll-change); if (logo && logo.length > 0) { const before logo.attr(data-before); const after logo.attr(data-after); const src (e before) ? before : after; if (before && after && src && (logo.attr(src) ! src)) { logo.attr(src, src); } }}function qv_on_scroll(t) { if(window.pageYOffset109){height_sync(.header .header1,109);$(body).addClass(scrollBefore); $(body).removeClass(scrollAfter);if (typeof onScrollBefore function) { onScrollBefore(); }}if(window.pageYOffset>109){height_sync(.header .header1,80);$(body).removeClass(scrollBefore); $(body).addClass(scrollAfter);if (typeof onScrollAfter function) { onScrollAfter(); }}}function qv_on_scroll_ie(t) { if($(body).scrollTop()109){height_sync(.header .header1,109);$(body).addClass(scrollBefore); $(body).removeClass(scrollAfter);}if($(body).scrollTop()>109){height_sync(.header .header1,80);$(body).removeClass(scrollBefore); $(body).addClass(scrollAfter);}}function height_sync(e,hei){ //fixed_scroll_js에서 사용 // 2018.10.12 재헌 // IE 에서 속도 이슈가 발생해 아래와 같이 조건 추가 // hei 값이 변해야 style 수정하도록 함 // if($(e).length>0) { if($(e).length>0 && $(e).height() ! hei) { $(e).height(hei); //hide의 경우에도 애니메이팅 효과를 위해, height를 0으로 설정 $.each($(e).find(.hsync), function() { if ($(this).parents(.header-side-nav).length > 0) { return; } // header-side-nav 하위 ul은 높이 수정하지 않아야 함 $(this).height(hei); $(this).css(line-height, hei + px); }); $(e).find(.hsync-nlh).height(hei); $(e).find(.header-contents).height(hei); $(e).find(.img-view).height(hei); $(e).find(.img-core).css(max-height,hei+px); $(e).find(.img-op).css(max-height,hei+px); $(e).find(.logoBox .logo-img-core).css(max-height,hei+px); if(hei1){ $(e).find(.header-contents).hide(); }else{ $(e).find(.header-contents).show(); } }}function get_hd_obj(){ var obj_hd {}; $(.header class^header).each(function(){ var header_class$(this).attr(class); var cm; if(_cmheader_class.match(/(header)(\d+)(\s+)?$/)) { var hdnparseInt(_cm2); obj_hdhdn$(this).data(hei)+,+$(this).data(scr-hei); } }); return obj_hd;}function showPopup(popup_id) { qvjax_direct( get_popup_only_json, /module/site/site.php, stid + QV_BASE_OBJ.stid, function (data) { if (data.length > 0) { var popup_obj $.grep(data, function(e) { return e.key popup_id }); if (popup_obj.length > 0) { $(.dynamic-popup-container).remove(); $(#main_container).append(div classdynamic-popup-container>/div>); var popup $(popup_obj0.contents).clone(); popup.attr(id, popup_id); $(popup).removeClass(body); $(popup).removeClass(popup-editor); $(popup).addClass(popup); $(#main_container .dynamic-popup-container).append($(popup)); } $(.popup-frame-header-close).click(function() { var popup $(this).parents(.popup); popup.remove(); if ($(.dynamic-popup-container).children().length 0) { $(.dynamic-popup-container).remove(); } }); $(.popup-frame-footer-todayclose).click(function() { var popup $(this).parents(.popup); popup.remove(); if ($(.dynamic-popup-container).children().length 0) { $(.dynamic-popup-container).remove(); } setCookie(popup.attr(id), 1, 1); }); $.each($(#main_container .dynamic-popup-container .video-iframe, #main_container .popup-container .video-iframe), function() { var url $(this).attr(data-src); $(this).attr(src, url); }); if ($(popup).find(.formBox).length > 0) { form_initialize(); } if ($(popup).find(.mapBox).length > 0) { initMapBox($(popup).find(.mapBox)); } if ($(popup).find(.gridBox).length > 0) { initGrid($(popup).find(.gridBox)); } if ($(popup).find(.ddayBox).length > 0) { initDday($(popup).find(.ddayBox)) let isCountdown false $(popup).find(.dday-area-countdown).each(function () { if ($(this).css(display) block) { isCountdown true return false } }) if (isCountdown) initCountDown() } if ($(popup).find(.calendarBox).length > 0) { initCalendar($(popup).find(.calendarBox)); } if ($(popup).find(.frmhref, .boxhref)) { initFrameLink($(popup).find(.frmhref, .boxhref)); } if ($(popup).find(.slider-frm).length > 0) { initSlider($(popup).find(.slider-frm)); } } }, function (xhr) {} );}function initPopup() { // 페이지에서만 띄움.header1 // if (location.pathname.length > 1) { return; } // 게시판 읽기/쓰기 때는 안띄움 if (location.pathname.indexOf(/module/board/) > -1) return; qvjax_direct( get_menu_json, /module/site/site.php, stid + QV_BASE_OBJ.stid, function (data) { if (data.length > 0) { var isMobile /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; var popup_grep $.grep(data, function(e) { return e.key QV_BASE_OBJ.spid }); if (popup_grep.length 0) return; var popup_list popup_grep0.popup; var popup_array popup_list.split(,); $(#main_container).append(div classpopup-container>/div>); $.each(popup_array, function() { var popup_spid this; var popup_obj $.grep(data, function(e) { return e.key popup_spid && e.type popup; }); if (popup_obj.length > 0) { var popup $(popup_obj0.contents).clone(); popup.attr(id, popup_spid); if (getCookie(popup.attr(id)) 1) { return true; } var start popup.data(start); var end popup.data(end); if (start > 0 && end > 0) { if (start > $.now()) return; if (end $.now()) return; } $(popup).removeClass(body); $(popup).removeClass(popup-editor); $(popup).addClass(popup); if (isMobile && $(popup).hasClass(popup-display-pc) || !isMobile && $(popup).hasClass(popup-display-mobile)) return; // popup 다국어처리 if (LANG && LANG ! ko) { var close $(popup).find(.popup-frame-header-close); if (close.text().indexOf(닫기) > -1) { close.html(lang.close + i classmaterial-icons stylefont-size: 13px;>clear/i>); } var todayclose $(popup).find(.popup-frame-footer-todayclose); todayclose.text(lang.today_close); } $(#main_container .popup-container).append($(popup)); if ($(popup).find(.mapBox).length > 0) { initMapBox($(popup).find(.mapBox)); } if ($(popup).find(.ddayBox).length > 0) { initDday($(popup).find(.ddayBox)) let isCountdown false $(popup).find(.dday-area-countdown).each(function () { if ($(this).css(display) block) { isCountdown true return false } }) if (isCountdown) initCountDown() } if ($(popup).find(.calendarBox).length > 0) { initCalendar($(popup).find(.calendarBox)); } if ($(popup).find(.frmhref, .boxhref)) { initFrameLink($(popup).find(.frmhref, .boxhref)); } if ($(popup).find(.slider-frm).length > 0) { initSlider($(popup).find(.slider-frm)); } } }); $.each($(#main_container .dynamic-popup-container .video-iframe, #main_container .popup-container .video-iframe), function() { var url $(this).attr(data-src); $(this).attr(src, url); }); if(isMobile) { } else { // 드래그는 pc에서만 되도록 함 $(.popup).draggable({ handle: .popup-frame-header, .popup-frame-footer, start: function( event, ui ) { // 새로 리뉴얼된(margin x) 팝업에만 적용 if (parseInt(ui.helper.css(margin-left)) 0) { // 드래그할 때 bottom이 0이면 비정상적으로 동작하여 auto로 지정 ui.helper.css({right: auto, bottom: auto}); } } }); } $(.popup-frame-header-close).click(function() { var popup $(this).parents(.popup); popup.remove(); if ($(.popup-container).children().length 0) { $(.popup-container).remove(); } }); $(.popup-frame-footer-todayclose).click(function() { var popup $(this).parents(.popup); popup.remove(); if ($(.popup-container).children().length 0) { $(.popup-container).remove(); } setCookie(popup.attr(id), 1, 1); }); } if ($(.popup-container).children().length 0) { $(.popup-container).remove(); } }, function (xhr) { } );}function initHeader9(){ if (getCookie(header9_closed) 1) { $(.header .header9).hide(); //hide banner $(body.live).addClass(header9_closed); } var $top_frm$(#main_container .body > .frm:not(.mobile_ele)).first(); if($top_frm.hasClass(headerSectionMerge)){ $(body).addClass(headerSectionMerge); $(body).addClass(scrollBefore); } if($(body .header).hasClass(useFixed) && !$top_frm.hasClass(headerSectionMerge)){ var body_mg_t$(.body).css(margin-top)?$(.body).css(margin-top).replace(px,):0; if(body_mg_t>0){ var top_frm_mg_t$top_frm.css(margin-top)?$top_frm.css(margin-top).replace(px,):0; if(top_frm_mg_t>0){ var cal_top_frm_mg_tparseInt(body_mg_t)+parseInt(top_frm_mg_t); $top_frm.css(margin-top,cal_top_frm_mg_t+px); // console.log(top_frm mg-t:+cal_top_frm_mg_t); } } }}function realignHeader9(){ var $top_frm$(#main_container .body > .frm:not(.mobile_ele)).first(); if($(body .header).hasClass(useFixed) && !$top_frm.hasClass(headerSectionMerge)){ var body_mg_t$(.body).css(margin-top)?$(.body).css(margin-top).replace(px,):0; if(body_mg_t>0){ $top_frm.css(margin-top,$(body .header).height()+px); } }}function initMenu(){ var query qv_func.getUrlParams(); if (location.pathname.indexOf(/module/board/read_form) > -1 && query.pn) { $(.header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link).each(function(i,t){ if($(t).attr(href)/ + query.pn){ $(t).parent().addClass(cur-mn-item); } }); } else { $(.header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link).each(function(i,t){ if($(t).attr(href)/home){ $(t).parent().addClass(cur-mn-item); } }); } //$(.header ul.mn-ul .mn-link, .header-mobile ul.mn-ul .mn-link).each(function(i,t){ // if($(t).attr(href)///){ // $(t).parent().addClass(cur-mn-item); // } //});}// 쿠키 생성function setCookie(cName, cValue, cDay){ var expire new Date(); expire.setDate(expire.getDate() + cDay); cookies cName + + escape(cValue) + ; path/ ; // 한글 깨짐을 막기위해 escape(cValue)를 합니다. if(typeof cDay ! undefined) cookies + ;expires + expire.toGMTString() + ;; document.cookie cookies;}// 쿠키 가져오기function getCookie(cName) { cName cName + ; var cookieData document.cookie; var start cookieData.indexOf(cName); var cValue ; if(start ! -1){ start + cName.length; var end cookieData.indexOf(;, start); if(end -1)end cookieData.length; cValue cookieData.substring(start, end); } return unescape(cValue);}$(.body).delegate(.fixed-contents-close, click, function(e) { $(this).parents(.fixed-contents-layer).first().remove();});//10.8 MAP 임시 패치/script>script typetext/javascript src/js/animate.js?v230725>/script>script typetext/javascript src/module/member/member.js?v230725>/script>script typetext/javascript src/module/board/board_read_form.js?v230725>/script>script typetext/javascript src/module/map/map.js?v230725>/script> script typetext/javascript src/module/form/form.js?v230725>/script> script typetext/javascript src/module/board/board_write_form.js?v230725>/script> script typetext/javascript src/module/board/board.js?v230725>/script>div idyoutube-autoplay styledisplay:none; onclickplayVideo()>/div>!-- 게시판 패스워드 확인 모달 -->div classmodal in-editor-modal fade idReadPasswordCheckModal tabindex-1 roledialog> div classmodal-dialog modal-bx> div classmodal-content> div classmodal-body> div classmodal-body-title> 비밀번호 확인 /div> div classmodal-body-contents> input typepassword idReadPasswordCheck placeholder autocompleteoff>button typebutton classbtn btn-default idReadPasswordCheckModalBtnSave auto>확인/button> /div> /div> /div> /div>/div>!-- 개인정보처리방침 모달 -->div classmodal in-editor-modal fade idPolicyPrivacyModal tabindex-1 roledialog> div classmodal-dialog modal-bx> div classmodal-content> div classmodal-body> div typebutton classclose data-dismissmodal>/div> div classmodal-body-title> 개인정보처리방침(Privacy Policy) /div> div classmodal-body-contents> textarea idpolicy-privacy-textarea readonly>/textarea> /div> /div> /div> /div>/div>!-- 갤러리 이미지 모달 -->div idgallery_board_image_modal classgallery-board-image-modal> img classgallery-board-modal-content idgallery-board-img01> div classgallery-board-modal-overlay>/div> span idgallery_board_cancel classclose>×/span> div classgallery-board-magnifier> div classgallery-board-magnifier-add> i classicon-magnifier-add>/i> /div> div classgallery-board-magnifier-remove> i classicon-magnifier-remove>/i> /div> div classgallery-board-magnifier-original-size> i classfa fa-clone>/i> div>원본크기/div> /div> /div> div classgallery-board-modal-right> i classfa fa-chevron-right>/i> /div> div classgallery-board-modal-left> i classfa fa-chevron-left>/i> /div> div classgallery-board-modal-download>i classicon-paper-clip aria-hiddentrue>/i>/div>/div>div classmodal in-editor-modal fade idCalendarScheduleViewModal tabindex-1 roledialog> div classmodal-dialog modal-bx> div classmodal-content> div classmodal-body> div typebutton classclose data-dismissmodal>span>×/span>/div> div classmodal-body-title> i classicon-calendar aria-hiddentrue>/i> span>TEST TITLE/span> /div> div classmodal-body-contents> div> div classcalendar-schedule-view-category> div classcalendar-schedule-view-category-color>/div> div classcalendar-schedule-view-category-name>/div> /div> div classcalendar-schedule-view-start-datetime>2019.01.10 14:00/div> div classcalendar-schedule-view-end-datetime>2019.01.30 15:00/div> /div> div> div classcalendar-schedule-view-content> 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. /div> /div> /div> div classmodal-body-option> div classmodal-body-option-update>수정하기/div> div classmodal-body-option-delete>삭제하기/div> /div> /div> /div> /div>/div>!-- 캘린더 모달 -->div classmodal in-editor-modal fade idCalendarScheduleModal tabindex-1 roledialog> div classmodal-dialog modal-bx> div classmodal-content> div classmodal-body> div idhdCalendarBxData>/div> div typebutton classclose data-dismissmodal>span>×/span>/div> div classmodal-body-title> i classicon-calendar aria-hiddentrue>/i> 일정 추가하기 /div> div classmodal-body-contents> table classcalendar-schedule-datetime> thead> tr> th>시작일/th> th>종료일/th> /tr> /thead> tbody> tr> td> input typetext classcalendar-schedule-start-date calendar-datepicker namecalendar-schedule-start-date> input typetext classcalendar-schedule-start-time calendar-timepicker namecalendar-schedule-start-time> /td> td> input typetext classcalendar-schedule-end-date calendar-datepicker namecalendar-schedule-end-date> input typetext classcalendar-schedule-end-time calendar-timepicker namecalendar-schedule-end-time> /td> /tr> /tbody> /table> div classcalendar-schedule-datetime-everytime-check> label classcheckbox-inline> input typecheckbox classcalendar-schedule-datetime-everytime name idcalendar-schedule-datetime-everytime value1 checked>종일 /label> /div> div> input typetext classcalendar-schedule-subject placeholder제목> /div> div> textarea classcalendar-schedule-content placeholder내용>/textarea> /div> /div> div classcalendar-schedule-confirm>일정 추가하기/div> /div> /div> div classcalendar-schedule-category>/div> div classcalendar-schedule-category-list> ul> /ul> /div> /div>/div>script typetext/javascript> $(#gallery_board_cancel).click(function () { $(#gallery_board_image_modal).hide(); $(body).removeClass(modal-open); }); var viewGalleryBoardImage; function viewGalleryBoardImageFullSize(obj) { var isMobile /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; if ($(obj).find(div.gallery-board-image).length > 0) { var link $(obj).parent().data(link); var target $(obj).parent().data(target); } else { var link $(obj).data(link); var target $(obj).data(target); } if (link undefined || link ) { // gallery-board-box data에 link값이 없으면 full size modal을 띄움 $(body).addClass(modal-open); $(#gallery-board-img01).fadeOut(0, linear); var modal document.getElementById(gallery_board_image_modal); var modalImg document.getElementById(gallery-board-img01); $(.gallery-board-modal-right).show(); $(.gallery-board-modal-left).show(); if ($(obj).find(.gallery-board-image)0.tagName IMG) { var bg $(obj).find(.gallery-board-image)0.src; } else { var bg $(obj).find(.gallery-board-image).css(background-image); bg bg.replace(url(, ).replace(), ).replace(/\/gi, ); } bg bg.replace(/_800/g, _1920); modalImg.src bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); initGalleryBoardImageModal(modalImg); }; viewGalleryBoardImage ; $(obj).parents(.gallery-board).first().find(.gallery-board-image).each(function (i, val) { if ($(val)0.tagName IMG) { var bg $(val)0.src } else { var bg $(val).css(background-image); bg bg.replace(url(, ).replace(), ).replace(/\/gi, ); } bg bg.replace(/_800/g, _1920); viewGalleryBoardImage.push({index:i, bg:bg}); if ($(val).is($(obj).find(.gallery-board-image))) { $(#gallery_board_image_modal).data(index, i); } }); var allowDownload $(obj).parents(.galleryBox).first().attr(data-allow-download); var downloadClip $(#gallery_board_image_modal .gallery-board-modal-download); if (allowDownload false) { downloadClip.hide(); } else { downloadClip0.style.removeProperty(display); } modal.style.display flex; $(modalImg).removeClass(function (index, className) { return (className.match (/(^|\s)size-x-\S+/g) || ).join( ); }); } else if (link none) { // none이면 아무 행동도 하지않음 return; } else { // gallery-board-box data에 link값이 존재하면 해당 link로 이동 if (!isMobile && (link.indexOf(tel:) > -1 || link.indexOf(sms:) > -1)) { return; // tel, sms 링크는 모바일에서만 } //if (link.indexOf(link:) > -1 || link.indexOf(sms:) > -1) { return; } if (target blank) { window.open(link); } else { if ($(obj).hasClass(scrollToTop) || $(obj).hasClass(scrollToBottom)) { } else { location.href link; } } return false; } } function viewImageFullSize(obj) { $(body).addClass(modal-open); $(#gallery-board-img01).fadeOut(0, linear); var modal document.getElementById(gallery_board_image_modal); var modalImg document.getElementById(gallery-board-img01); $(.gallery-board-modal-right).hide(); $(.gallery-board-modal-left).hide(); var bg $(obj).find(.img-core).css(background-image); bg bg.replace(url(, ).replace(), ).replace(/\/gi, ); bg bg.replace(/_800/g, _1920); modalImg.src bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); }; modal.style.display flex; } function initGalleryBoardImageModal(img) { if ($(.gallery-board-modal-content).hasClass(size-original)) { $(img).css(top, 0); $(img).css(bottom, auto); $(img).css(left, auto); } if ((isMobile() && window.innerWidth / img.naturalWidth * img.naturalHeight > window.innerHeight) || // 모바일에서는 비율로 확인한다 (!isMobile() && img.naturalHeight > window.innerHeight)) { $(.gallery-board-magnifier-original-size).show(); } else { $(.gallery-board-magnifier-original-size).hide(); $(.gallery-board-modal-content).removeClass(size-original); $(img).css(left, auto); } } $(#gallery_board_image_modal).delegate(.gallery-board-modal-right, click, function (e) { if (viewGalleryBoardImage ! undefined) { $(#gallery-board-img01).fadeOut(150, linear, function() { var index parseInt($(#gallery_board_image_modal).data(index)) + 1; var modalImg document.getElementById(gallery-board-img01); if (index viewGalleryBoardImage.length) { var val $.grep(viewGalleryBoardImage, function(e) { return e.index 0 })0; modalImg.src val.bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); initGalleryBoardImageModal(modalImg); }; $(#gallery_board_image_modal).data(index, 0); } else { var val $.grep(viewGalleryBoardImage, function(e) { return e.index index })0; modalImg.src val.bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); initGalleryBoardImageModal(modalImg); }; $(#gallery_board_image_modal).data(index, index); } }); } }); $(#gallery_board_image_modal).delegate(.gallery-board-modal-left, click, function (e) { if (viewGalleryBoardImage ! undefined) { $(#gallery-board-img01).fadeOut(150, linear, function() { var index parseInt($(#gallery_board_image_modal).data(index)) - 1; var modalImg document.getElementById(gallery-board-img01); if (index -1) { var val $.grep(viewGalleryBoardImage, function (e) { return e.index viewGalleryBoardImage.length - 1 })0; modalImg.src val.bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); initGalleryBoardImageModal(modalImg); }; $(#gallery_board_image_modal).data(index, viewGalleryBoardImage.length - 1); } else { var val $.grep(viewGalleryBoardImage, function (e) { return e.index index})0; modalImg.src val.bg; modalImg.onload function() { $(#gallery-board-img01).fadeIn(120, linear); initGalleryBoardImageModal(modalImg); }; $(#gallery_board_image_modal).data(index, index); } }); } }); $(#gallery_board_image_modal).delegate(.gallery-board-modal-overlay, dblclick, function() { var image $(this).siblings(.gallery-board-modal-content); if (image.attr(class).indexOf(size-x-) > 0) { image.removeClass(function (index, className) { return (className.match (/(^|\s)size-x-\S+/g) || ).join( ); }); } else { image.addClass(size-x-2); image.css(right, auto); image.css(bottom, auto); image.data(size, 2); } }); $(#gallery_board_image_modal).delegate(.gallery-board-modal-right, .gallery-board-modal-left, click, function () { var image $(this).siblings(.gallery-board-modal-content); if (image.attr(class).indexOf(size-x-) > 0) { image.removeClass(function (index, className) { return (className.match (/(^|\s)size-x-\S+/g) || ).join( ); }); } }); $(#gallery_board_image_modal).delegate(.gallery-board-magnifier-add, .gallery-board-magnifier-remove, click touch, function() { var image $(#gallery_board_image_modal).find(.gallery-board-modal-content); var prefix size-x-; if (image.attr(class).indexOf(size-x-) > 0) { if ($(this).hasClass(gallery-board-magnifier-add)) { var size parseInt(image.data(size)) + 1; if (size > 5) return; if (size 2) { image.css(top, 0); image.css(right, auto); image.css(bottom, auto); } } else if ($(this).hasClass(gallery-board-magnifier-remove)) { var size parseInt(image.data(size)) - 1; if (size 1) return; if (size 1) { image.css(top, 0); image.css(right, auto); image.css(bottom, auto); } } else { return; } image.data(size, size); image.removeClass(function (index, className) { return (className.match (/(^|\s)size-x-\S+/g) || ).join( ); }); image.addClass(prefix + size); } else { if ($(this).hasClass(gallery-board-magnifier-remove)) { return; } image.addClass(size-x-2); image.css(top, 0); image.css(right, auto); image.css(bottom, auto); image.data(size, 2); } }); $(#gallery_board_image_modal).delegate(.gallery-board-magnifier-original-size, click touch, function() { var image $(#gallery_board_image_modal).find(.gallery-board-modal-content); image.removeClass(function (index, className) { return (className.match (/(^|\s)size-x-\S+/g) || ).join( ); }); if (image.hasClass(size-original)) { image.css(left, auto); image.removeClass(size-original); } else { image.css(top, 0); image.css(bottom, auto); image.css(left, calc(50% - + (document.getElementById(gallery-board-img01).naturalWidth / 2) + px)); image.addClass(size-original); } }); /* 2020.03.03 재헌 * 갤러리 이미지 모달에서 이미지 다운로드가 가능하도록 버튼 추가 */ $(#gallery_board_image_modal).delegate(.gallery-board-modal-download, click touch, function() { var url $(#gallery-board-img01).attr(src); var name url.split(/).pop(); if (!url || !name) return; if (navigator.userAgent.toLowerCase().indexOf(safari) > -1 && navigator.userAgent.toLowerCase().indexOf(chrome) -1) { var a $(a>).attr(href, url).attr(download, name).appendTo(body); a0.click(); a.remove(); } else { post_redirect(/module/board/download.php, {url: url, name: name}, _top); } }); $(function() { var curDown false, curYPos 0, curXPos 0, curTop 0, curBottom 0, curRight 0; $(.gallery-board-modal-overlay).on(mousemove touchmove, function(e){ e.preventDefault(); if(curDown true){ var moveYPos e.originalEvent.touches ? e.originalEvent.touches0.pageY : e.pageY; var moveXPos e.originalEvent.touches ? e.originalEvent.touches0.pageX : e.pageX; // bottom 기준 // $(#gallery-board-img01).css(top, auto); // $(#gallery-board-img01).css(bottom,(curBottom + ((curYPos - moveYPos)))); // top 기준 $(#gallery-board-img01).css(top, (curTop + (moveYPos - curYPos))); $(#gallery-board-img01).css(bottom, auto); // $(#gallery-board-img01).css(right,(curRight + ((curXPos - moveXPos)))); } }); $(.gallery-board-modal-overlay).on(mousedown touchstart, function(e){ e.preventDefault(); curDown true; curYPos e.originalEvent.touches ? e.originalEvent.touches0.pageY : e.pageY; curXPos e.originalEvent.touches ? e.originalEvent.touches0.pageX : e.pageX; curTop parseInt($(#gallery-board-img01).css(top)); curBottom parseInt($(#gallery-board-img01).css(bottom)); curRight parseInt($(#gallery-board-img01).css(right)); }); $(.gallery-board-modal-overlay).on(mouseup touchend, function(){ curDown false; }); $(.gallery-board-modal-overlay).on(mousewheel, function(e) { e.preventDefault(); if ($(#gallery_board_image_modal).css(display) ! none) { // bottom 기준 // if ($(#gallery-board-img01).css(bottom) auto) { // curBottom (document.getElementById(gallery-board-img01).naturalHeight - window.innerHeight) * -1; // } // else { // curBottom parseInt($(#gallery-board-img01).css(bottom)); // } // // var moveYPos (curBottom + (e.originalEvent.wheelDelta * -1)); // var realHeight $(#gallery-board-img01)0.getBoundingClientRect().height; // scale 조정 후의 높이값을 가져옴 // var topLimit parseInt(realHeight * -1) + parseInt(window.innerHeight); // if (moveYPos > 0) { moveYPos 0; } // if (moveYPos topLimit) { moveYPos topLimit } // // $(#gallery-board-img01).css(top, auto); // $(#gallery-board-img01).css(bottom, moveYPos + px); // top 기준 var currentTop $(#gallery-board-img01).css(top); currentTop currentTop auto ? 0 : parseInt(currentTop); var moveYPos currentTop + e.originalEvent.wheelDelta; var realHeight $(#gallery-board-img01)0.getBoundingClientRect().height; // scale 조정 후의 높이값을 가져옴 var topLimit parseInt(realHeight * -1) + parseInt(window.innerHeight); if (moveYPos > 0) { moveYPos 0; } if (moveYPos topLimit) { moveYPos topLimit; } $(#gallery-board-img01).css(top, moveYPos + px); $(#gallery-board-img01).css(bottom, auto); } }); }); function headerSubMenuPop() { $(#main_container).delegate(.header .mn-item, .header .mn-item-overflow-list, mouseenter, function () { if ($(this).parents(.header-side-nav).length > 0) return; var main_header $(this).parents(.header-contents).first().parent(); var main_menu $(this).parents(ul.mn-ul).first(); /* 2020.02.12 재헌 * 헤더 서브메뉴 가로로 정렬 ( sub-mn-horizontal ) * sub-mn-type-2 일 때 sub-mn 각각의 top을 지정해준다. */ // if (main_header.hasClass(sub-mn-type-2) && main_header.hasClass(sub-mn-align-horizontal)) { // var all_height 0; // $.each(main_header.find(.sub-mn, .header-overflow-pop > ul), function(i, val) { // var target $(this); // var parentMenu $(this).parent(); // if (parentMenu.hasClass(mn-item-overflow)) return; // // var is_overflow_list $(this).parents(.mn-item-overflow-list).length > 0 ? true : false; // if (is_overflow_list) { // target $(this).parents(.header-overflow-pop).first(); // parentMenu $(this).parents(li.mn-item); // } // // parentMenu.addClass(mn-item-hover); // // var top parentMenu.height() + all_height - $(window).scrollTop(); // if (!is_InternetExplorer()) { // top + parentMenu.offset().top; // } // // target.css(top, top); // all_height + target.height(); // }); // // var max_height 0; // $.each(main_header.find(ul), function() { // max_height max_height > $(this).height() ? max_height : $(this).height(); // }); // } // else if (main_header.hasClass(sub-mn-type-2)) { $.each(main_menu.find(.mn-item), function() { $(this).addClass(mn-item-hover); //var top this.offsetTop + $(this).height() - $(window).scrollTop(); // 2019.04.29 원본 //var top $(this).offset().top + $(this).height() - $(window).scrollTop(); // 수정본. ie에서 header가 2단이상이면 위치가 정상적으로 잡히지 않는 문제때문에 추가 var top $(this).height() - $(window).scrollTop(); if (!is_InternetExplorer()) { top + $(this).offset().top; } else if (is_InternetExplorer() && main_header.hasClass(sub-mn-align-horizontal)) { top + $(this).offset().top; } $(this).find(.sub-mn).css(top, top); $(this).find(.sub-mn > .mn-item).css(width, $(this).width()); $(this).find(.header-overflow-pop).css(top, top); $(this).find(.header-overflow-pop).width($(this).width()); }); var max_height 0; $.each(main_header.find(ul.sub-mn), function() { max_height max_height > $(this).height() ? max_height : $(this).height(); }); // header overflow pop이 존재하면 해당 항목의 높이와 비교 if ($(.header-overflow-pop).length > 0) { var overflow_pop_height $(.header-overflow-pop).height(); max_height max_height > overflow_pop_height ? max_height : overflow_pop_height; } if (max_height > 0) { var overlay div classsub-mn-overlay styleheight: + parseInt(max_height) + px;>/div>; main_header.find(.sub-mn-overlay).remove(); main_menu.find(ul.sub-mn, .header-overflow-pop > ul).first().prepend(overlay); } } // else if (main_header.hasClass(sub-mn-type-1)) { else { $(this).find(.sub-mn-overlay).remove(); $(this).addClass(mn-item-hover); // 2019.04.29 원본 //var top $(this).offset().top + $(this).height() - $(window).scrollTop(); var top $(this).height() - $(window).scrollTop(); if (!is_InternetExplorer()) { top + $(this).offset().top; } else if (is_InternetExplorer() && main_header.hasClass(sub-mn-align-horizontal)) { top + $(this).offset().top; } if ($(this).hasClass(mn-item-overflow-list)) { $(this).find(.header-overflow-pop).css(top, top); $(this).find(.header-overflow-pop).width(auto); } else if ($(this).hasClass(mn-item)) { $(this).find(.sub-mn).css(top, top); } } }); //$(#main_container).delegate(.header .mn-item, .header .mn-item-overflow-list, mouseleave, function () { $(#main_container).delegate(.header .mn-item, mouseleave, function (e) { var main_header $(this).parents(.header-contents).first().parent(); if (main_header.hasClass(sub-mn-type-2)) { main_header.find(.mn-item).removeClass(mn-item-hover); main_header.children(.header-op).css(height, auto); main_header.find(.sub-mn-overlay).remove(); } // else if (main_header.hasClass(sub-mn-type-1)) { else { $(this).removeClass(mn-item-hover); $(this).removeClass(mn-item-overflow-list-hover); } }); $(window).on(scroll.headerSubMenuPop, function() { /* 2020.02.12 재헌 * 헤더 서브메뉴 가로로 정렬 ( sub-mn-horizontal ) * sub-mn-type-2 일 때 sub-mn 각각의 top을 지정해준다. */ // var main_header $(.header .mn-item-hover).parents(.header-contents).parent(); // if (main_header.hasClass(sub-mn-type-2) && main_header.hasClass(sub-mn-align-horizontal)) { // var all_height 0; // $.each(main_header.find(.sub-mn), function(i, val) { // var parentMenu $(this).parents(.mn-item).first(); // parentMenu.addClass(mn-item-hover); // // var top parentMenu.height() + all_height - $(window).scrollTop(); // if (!is_InternetExplorer()) { top + parentMenu.offset().top; } // // $(this).css(top, top); // all_height + $(this).height(); // }); // } // else if ($(.header .mn-item-hover).length > 0) { // 원본 //var top $(.header .mn-item-hover).offset().top + $(.header .mn-item-hover).height() - $(window).scrollTop(); // 수정본. ie에서 header가 2단이상이면 위치가 정상적으로 잡히지 않는 문제때문에 추가 var top $(.header .mn-item-hover).height() - $(window).scrollTop(); if (!is_InternetExplorer()) { top + $(.header .mn-item-hover).offset().top; } // $(.header .mn-item-hover).find(.sub-mn).css(top, top); } if ($(.header .mn-item-overflow-list).length > 0) { // 원본 //var top $(.header .mn-item-overflow-list).offset().top + $(.header .mn-item-overflow-list).height() - $(window).scrollTop(); var top $(.header .mn-item-overflow-list).height() - $(window).scrollTop(); if (!is_InternetExplorer()) { top + $(.header .mn-item-overflow-list).offset().top; } // $(.header .mn-item-overflow-list).find(.header-overflow-pop).css(top, top); } }); } headerSubMenuPop(); function isMobile() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; } // string format if (!String.prototype.format) { String.prototype.format function() { var args arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof argsnumber ! undefined ? argsnumber : match ; }); }; } /* 데이터 컨텐츠 페이지 */ /script>!-- Log -->script languagejavascript typetext/javascript> if(typeof qva ! undefined) { qva.DataSet(account, swe9htxrh); qva.start(); } function custom_trigger_call(type,id){ }/script>script> $(document).ready(function() { if (!$(body).hasClass(body-fade)) { $(body).show(); } }); $(window).bind(load,function(){ initContentsLazyLoad(); if ($(body).hasClass(body-fade)) { $(body).fadeIn(300, linear); } initAnchor(document.location.pathname + document.location.search); if (!is_InternetExplorer()) { initAnimation(); } setTimeout(function() { initHeaderOverflowMenuResizeEvent(); }, 500); // 템플릿에서 버튼 클릭되지 않도록 -> iframe 내부에서 호출되면 form, board 작성 불가, 주소 tpl 포함인 페이지에만 적용 if (self ! top) { // in iframe (template) if (location.host.indexOf(tpl) 0) { $(.form-contents-button, .board-write).css(pointer-events, none); } // in iframe (others) else { } } // initMaintainRatioImage(); initMaintainRatioSlider(); initBackgroundFullSizeVideo(); if ($(window).width() 767) { initImageBoxAutoResize(); } }); // 2022.01.21 주석처리 // 항상 원본비율 유지 옵션 추가로 인해 필요성 x function initMaintainRatioImage() { if (isMobile() && $(window).width() 767) return; var notAllowed .mobile_ele, .boxing, .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, ; $.each($(#main_container .body .imgBox), function() { if ($(this).parents(notAllowed.join(,)).length > 0) return; var imgcore $(this).find(.img-core); var backgroundSize imgcore.css(background-size); var backgroundPosition imgcore.css(background-position); if (backgroundSize contain && backgroundPosition 50% 50%) { var url $(this).find(.img-core).css(background-image).replace(url(, ).replace(), ).replace(/\/gi, ); // var height $(this).attr(data-hei).replace(/px/g, ); var height $(this).find(.img-core).height(); $(this).height(auto); imgcore.hide(); // max-height 지정에서 height 지정으로 변경됨 // 이미지를 확대해서 저장했을 때 에디터화면과 다른 문제 (라이브에서는 원본크기 이상으로 늘어나지 않음) imgcore.after(img classimg-core-dummy src + url + stylemax-width: 100%; max-height: + height + px;>) } }); } function resizeMaintainRatioImage() { if (isMobile()) return; // var interval setInterval(function() { // if ($(#main_container).width() 0) { return; } // else { // clearInterval(interval); // } // }, 100); $.each($(#main_container .imgBox), function() { var imgbox $(this); var imgcore $(this).find(.img-core); var ratio imgcore.attr(data-ratio); var w $(this).width(); var w_data $(this).attr(data-width); var background_size imgcore.css(background-size); if (!$(this).hasClass(displayed) || (background_size ! contain) || (w w_data) || (!ratio)) { console.log(this.id, returned); return; } ratio parseFloat(ratio); var ratio_box imgcore.height() / imgcore.width(); if (ratio_box > ratio) { imgcore.height(imgcore.width() * parseFloat(ratio)); imgbox.height(auto); console.log(1, ratio_box, ratio); } else { imgcore.height(imgbox.attr(data-hei)); console.log(2, ratio_box, ratio); } // $(this).attr(data-width, w); // $(this).height(auto); // imgcore.height(imgcore.width() * parseFloat(ratio)); }); } function resizeMaintainRatioSlider() { /* 2020.03.18 재헌 * IE, FF 에서 해당함수 호출 시 렌더링이 완료되지 않은 상태면 ratio 값을 잘못 측정하는 문제 * 렌더링 완료 기준은 main_container의 width 값이 0인지 아닌지로 확인 * 렌더링이 완료되지 않은 상태에서 호출되었다면 100ms 간격을 두고 함수 재호출 */ var w $(#main_container).width(); if (w 0) { setTimeout(function() { resizeMaintainRatioSlider(); }, 100); return; } $.each($(#main_container .slider-frm.maintain-ratio .frm, #main_container .slider-frm.maintain-ratio .box), function() { var screenWidth window.screen.width; // col-sm 비율까지 고려하려면 아래 코드 사용, 일단 main_container 하위 슬라이드만 적용할 것이라 사용하지 않음 //var sliderFrame $(this).parents(.slider-frm).first(); // var column sliderFrame.parent()0.className.split( ).filter(v > v.indexOf(col-sm) > -1); // if (column.length > 0) { // col-sm-4.. // var column_num column0.replace(/col-sm-/g, ); // var column_ratio 12 / column_num; // screenWidth screenWidth / column_ratio; // } var ratio $(this).parents(.slider-frm).first().width() / screenWidth; // 상위에 프레임이 하나 더 있는 경우 width가 0으로 잡힌다 ratio ratio ! 0 ? ratio : $(this).parents(.slider-frm).parent().width() / screenWidth; if(ratio > 0.1) { //IE11,FF load()전 width()값 못가져오는 case 예외처리 var origin_height parseInt($(this).data(origin-height)); var height Math.floor(origin_height * ratio); if ($(this).hasClass(frm)) { if ($(this).parent().hasClass(item)) { if (window.innerWidth 767) { ratio 1; height $(this).data(origin-height); $(this).children(.view).css(transform-origin, 50% 50%); $(this).css(background-position-y, 50%); // frame 백그라운드 이미지 원복 } $(this).parents(.carousel-inner).height(height); $(this).children(.view).children(.tb).height(height); $(this).children(.view).css(transform, scale( + ratio + )); // column이 여러개인 경우 item의 높이가 column의 수 만큼 크게나와서 아래와 같이 보정 var itemHeight $(this).parent(.item).height(); if (!$(this).parent(.item).hasClass(active)) { itemHeight itemHeight / $(this).children(.view).children(.tb).children(.row).children(.column).length; } // if (itemHeight > height) { var diff parseFloat(itemHeight - height); var rate itemHeight / 2; var column_height 0; $.each($(this).children(.view).children(.tb).children(.row).children(.column), function () { var total 0; $.each($(this).children(.frm, .box), function () { total + parseInt($(this).data(origin-height)); }); column_height column_height total ? total : column_height; }); column_height column_height * ratio; column_height height - column_height; rate rate - column_height; // most 3 // var diff parseFloat(itemHeight - height); // var column_height 0; // $.each($(this).children(.view).children(.tb).children(.row).children(.column), function() { // var total 0; // $.each($(this).children(.frm, .box), function() { // total + parseInt($(this).data(origin-height)); // }); // column_height column_height total ? total : column_height; // }); // var rate (itemHeight + height - (column_height * ratio * 2)) / 2; // most 2 // var diff parseFloat(itemHeight - height); // var rate diff + diff * Math.sqrt((ratio - 0.5)); // most 1 // var diff itemHeight - height; // var rate diff * (1 + Math.pow(ratio, 2) + (ratizo - 0.5)); if (window.innerWidth > 767) { $(this).children(.view).css(transform-origin, 50% calc(50% - + Math.ceil(rate) + px)); $(this).css(background-position-y, calc(50% - + parseFloat(diff / 2) + px)); // frame 백그라운드 이미지 보정 } } } } else { // $(this).height(height); // if ($(this).hasClass(imgBox)) { // $(this).find(.img-core).height(height); // } } } }); } function initMaintainRatioSlider() { if ($(#main_container .slider-frm.maintain-ratio).length > 0) { // ratio slider는 displayed 클래스를 붙여준다. $.each($(#main_container .slider-frm.maintain-ratio), function() { var target $(this).parents(.frm); $.merge(target, $(this)); $.merge(target, $(this).find(.frm, .box)); $.each(target, function() { $(this).addClass(displayed); }); }); // $.each($(#main_container .slider-frm.maintain-ratio .carousel-inner), function() { // $(this).css(height, auto); // }); $.each($(#main_container .slider-frm.maintain-ratio .item > .frm > .view > .tb > .row > .column), function() { $(this).css(height, auto); // $(this).css(min-height, auto); }); $.each($(#main_container .slider-frm.maintain-ratio .column), function() { $(this).css(min-height, auto); }); $.each($(#main_container .slider-frm.maintain-ratio .frm, #main_container .slider-frm.maintain-ratio .box), function() { var h $(this).hasClass(frm) ? $(this).children(.view).children(.tb).height() : $(this).height(); h $(this).parent().hasClass(item) ? $(this).parents(.carousel-inner).height() : h; $(this).data(origin-height, h); }); // 브라우저가 resize 될 때 마다 slider 크기를 조절한다 $(window).resize(function(){ resizeMaintainRatioSlider(); }); resizeMaintainRatioSlider(); } } /* 2020.02.27 재헌 * fixed - relative 기반 */ function initAffixedFrame() { var affixedFrame $(.body .frmdata-fixedtrue); if (affixedFrame.length 0) return; //data-fixed가 존재하는 frame에 z-index 할당 //var zIndex $(.body > .frm .frmdata-fixedtrue).length + 10; var zIndex $(.body .frm).length + 10; $.each($(.body .frm), function() { $(this).css(z-index, zIndex--); }); // 고정 컨텐츠의 초기값 지정 및 affixed 클래스 부여, 더미 생성 $.each(affixedFrame, function() { // displayed 되지 않은 항목은 width, offsetTop 값을 가져오지 못하기 때문에 // 자신과 부모 프레임에 displayed 클래스를 추가한다 $.each($(this).parents(.frm).andSelf(), function() { $(this).addClass(displayed); }); var offsetTop $(this).offsetTop(); var maxHeight $(.header.useFixed).length > 0 ? calc(100vh - + offsetTop + px) : 100vh; // $(this).css(width, $(this).width() + px); $(this).css(max-height, maxHeight); if (!$(this).is(.qv-ani, .qv-ani-ele)) { $(this).attr(data-origin-offset-top, offsetTop); } $(this).addClass(affixed); var height $(this).height() + parseInt($(this).css(margin-top)) + parseInt($(this).css(margin-bottom)) + parseInt($(this).css(padding-top)) + parseInt($(this).css(padding-bottom)); $(this).after(div classaffixed-dummy iddummy- + this.id + styleheight: + height + px;>/div>); // $(this).parents(.frm).last().css(z-index, zIndex--); // $.each($(#fGYLWT).parents(.frm).andSelf(), function() { // $(this).css(z-index, 15); // }); }); var scrollTarget is_InternetExplorer() ? $(body) : $(document); scrollTarget.on(scroll, function() { var currentScrollTop $(this).scrollTop(); var topWithWindowHeight $(this).scrollTop() + $(window).height(); console.log(currentScrollTop); // 모바일 호환 var header (isMobile() && $(.header-mobile).length > 0) ? $(.header-mobile) : $(.header:not(.useFixed)); var footer (isMobile() && $(.footer-frame-mobile).length > 0) ? $(.footer-frame-mobile) : $(.footer-frame); $.each(affixedFrame, function() { /* 2020.02.28 재헌 * data-origin-offset-top 값이 없거나(qv-ani, qv-ani-ele), currentScrollTop이 0이면 재할당하여 수시로 값을 보정한다 */ if (!$(this).attr(data-origin-offset-top) || currentScrollTop 0) { var offsetTop $(this).offsetTop() - currentScrollTop; $(this).attr(data-origin-offset-top, offsetTop); } // 최상위 프레임 if ($(this).parent().is(.body)) { if (header.length > 0 && header.height() > currentScrollTop) { if (!$(this).is(.affixed-top)) { $(this).removeClass (function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed-top); $(.affixed-dummy#dummy- + this.id).hide(); console.log(scroll - header); } } // 스크롤 중 footer에 도달했을 때 (relative) else if (footer.length > 0 && footer.offsetTop() topWithWindowHeight) { if (!$(this).is(.affixed-bottom)) { var relativePosition $(window).height(); var offsetTop footer.offsetTop() - relativePosition; offsetTop header.length > 0 ? offsetTop - header.height() : offsetTop; $(this).css(top, offsetTop + px); $(this).removeClass (function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed-bottom); $(.affixed-dummy#dummy- + this.id).hide(); console.log(scroll - footer); } } // header, footer와 접하지 않을 때 (fixed) else { var offsetTop $(this).attr(data-origin-offset-top); offsetTop header.length > 0 ? offsetTop - header.height() : offsetTop; // offsetTop offsetTop 0 ? 0 : offsetTop; $(this).css(top, offsetTop + px); $(this).css(width, $(this).width() + px); $(this).removeClass(function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed); $(.affixed-dummy#dummy- + this.id).show(); console.log(scroll - main); } } // 하위 프레임 else { var parentFrame $(this).parents(.frm).last(); // 스크롤 중 부모프레임 최상부에 도달했을 때 var _offsetTop parseInt($(this).attr(data-origin-offset-top)); if (_offsetTop > currentScrollTop) { if (!$(this).is(.affixed-top)) { $(this).removeClass (function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed-top); $(.affixed-dummy#dummy- + this.id).hide(); } // offset top 갱신 (chrome, ie 에서 offsetTop 값이 다르게나오는 문제) var offsetTop $(this).offsetTop(); if (_offsetTop ! offsetTop) { $(this).attr(data-origin-offset-top, offsetTop); } } // 스크롤 중 부모프레임 최하부에 도달했을 때 else if (parentFrame.offsetTop() + parentFrame.height() topWithWindowHeight) { if (!$(this).is(.affixed-bottom) && !$(this).is(.affixed-top)) { // affixed-top 에서 바로 affixed-bottom 되는 케이스 없도록 함 var offsetTop parentFrame.offsetTop() + parentFrame.height() - $(window).height() - parseInt($(this).attr(data-origin-offset-top)); $(this).css(top, offsetTop + px); $(this).removeClass (function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed-bottom); $(.affixed-dummy#dummy- + this.id).hide(); } } // 부모프레임 최상부,최하부에 접하지 않을 때 else { if (!$(this).is(.affixed)) { $(this).css(top, 0px); $(this).css(width, $(this).width() + px); $(this).removeClass(function (index, className) { return (className.match(/(^|\s)affix\S+/g) || ).join( ); }); $(this).addClass(affixed); $(.affixed-dummy#dummy- + this.id).show(); } } } }); }); window.scrollTo(window.scrollX, window.scrollY - 1); } function initContentsLazyLoad() { if (is_InternetExplorer() || $.browser.mozilla) { $(.body).removeClass(pl-h).addClass(pl-n); initMapListBox(); initMapBox(); return; } var correctionValue isMobile() ? 500 : 300; var contents $(#main_container .body > .frm); var scrollTarget is_InternetExplorer() ? $(body) : $(document); if (contents.length 0) return; else { $.each(contents, function () { var offsetTop $(this).offsetTop(); var currentScrollTop scrollTarget.scrollTop(); if (offsetTop $(window).height() + correctionValue + currentScrollTop) { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); if ($(this).find(.mapListBox).length > 0) { $.each($(this).find(.mapListBox), function() { initMapListBox($(this)); }); } if ($(this).find(.mapBox).length > 0) { $.each($(this).find(.mapBox), function() { initMapBox($(this)); }); } } }); } var lastScrollTop 0; scrollTarget.on(scroll, function() { var currentScrollTop window.scrollY; // var currentScrollTop $(this).scrollTop();// var screenHeight $(window).height(); var screenHeight window.innerHeight; var t currentScrollTop; var b currentScrollTop + screenHeight + correctionValue; if (currentScrollTop > lastScrollTop){ // scroll down $.each($(#main_container .body > .frm), function() { var height $(this).height() + parseInt($(this).css(padding-top)) + parseInt($(this).css(padding-bottom)); var offsetTop $(this).offsetTop(); if (offsetTop + height t) { } else if (offsetTop b) { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); if ($(this).find(.mapListBox).length > 0) { $.each($(this).find(.mapListBox), function() { initMapListBox($(this)); }); } if ($(this).find(.mapBox).length > 0) { $.each($(this).find(.mapBox), function() { initMapBox($(this)); }); } } }); } else { // scroll up $.each($(#main_container .body > .frm), function() { var height $(this).height() + parseInt($(this).css(padding-top)) + parseInt($(this).css(padding-bottom)); var offsetTop $(this).offsetTop(); if (offsetTop > b) { } else if (offsetTop + height > t) { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); if ($(this).find(.mapListBox).length > 0) { $.each($(this).find(.mapListBox), function() { initMapListBox($(this)); }); } if ($(this).find(.mapBox).length > 0) { $.each($(this).find(.mapBox), function() { initMapBox($(this)); }); } } }); } lastScrollTop currentScrollTop; }); } /* 2020.02.21 재헌 * an-once 추가 * 해당 클래스가 있으면 애니메이션이 단 한번만 실행된다. * (기존엔 스크롤했다가 다시 올라오면 애니메이션이 다시 실행 됨) */ function initAnimation() { var scrollTarget is_InternetExplorer() ? $(body) : $(document); var ani $(#main_container .qv-ani-ele, #main_container .qv-ani); if (ani.length 0) return; else { $.each(ani, function () { var offsetTop $(this).offsetTop(); var offsetBottom offsetTop + $(this).height(); var currentScrollTop getScrollY(); var currentScrollBottom currentScrollTop + $(window).height() ; // 부등호 에서 로 모두 변경 if ((offsetTop currentScrollTop && currentScrollTop offsetBottom) || (offsetTop currentScrollBottom && currentScrollBottom offsetBottom) || (currentScrollTop offsetTop && offsetBottom currentScrollBottom) || (offsetTop currentScrollTop && currentScrollBottom offsetBottom)) { return; } else if ($(this).hasClass(qv-ani-ele)) { $(this).toggleClass(qv-ani-ele qv-ani); }// if (offsetTop > $(window).height() &&// $(this).hasClass(qv-ani-ele)) {// $(this).toggleClass(qv-ani-ele qv-ani);// } }); } var lastScrollTop 0; scrollTarget.on(scroll, function() { var currentScrollTop getScrollY(); // var currentScrollTop $(this).scrollTop();// var screenHeight $(window).height(); var screenHeight window.innerHeight; var t currentScrollTop; var b currentScrollTop + screenHeight; if (currentScrollTop > lastScrollTop) { // scroll down $.each($(#main_container .qv-ani-ele, #main_container .qv-ani), function() { var height $(this).height() + parseInt($(this).css(padding-top)) + parseInt($(this).css(padding-bottom)); var offsetTop $(this).offsetTop(); if (offsetTop + height t) { if ($(this).is(.qv-ani-ele.an-once)) { $(this).removeClass(qv-ani).addClass(qv-ani-ele); } else if ($(this).hasClass(qv-ani-ele)) { $(this).toggleClass(qv-ani-ele qv-ani); //console.log(1); } } else if (offsetTop b) { if ($(this).is(.qv-ani-ele.an-once)) { $(this).removeClass(qv-ani).addClass(qv-ani-ele); } else if ($(this).hasClass(qv-ani)) { $(this).toggleClass(qv-ani qv-ani-ele); //console.log(2); } } }); } else { // scroll up $.each($(#main_container .qv-ani-ele, #main_container .qv-ani), function() { var height $(this).height() + parseInt($(this).css(padding-top)) + parseInt($(this).css(padding-bottom)); var offsetTop $(this).offsetTop(); if (offsetTop > b) { if ($(this).is(.qv-ani-ele.an-once)) { $(this).removeClass(qv-ani).addClass(qv-ani-ele); } else if ($(this).hasClass(qv-ani-ele)) { $(this).toggleClass(qv-ani-ele qv-ani); //console.log(3); } } else if (offsetTop + height > t) { if ($(this).is(.qv-ani-ele.an-once)) { $(this).removeClass(qv-ani).addClass(qv-ani-ele); } else if ($(this).hasClass(qv-ani)) { $(this).toggleClass(qv-ani qv-ani-ele); //console.log(4); } } }); } lastScrollTop currentScrollTop; }); } $(.quv-made .logo, .quv-made .txt).on(click, function() { window.open(https://qshop.ai?utm_sourceowned&utm_mediumdisplay&utm_campaignquv,_blank); }); $(.quv-made .logo, .quv-made .btn-quv-start).on(click, function() { window.open(https://qshop.ai?utm_sourceowned&utm_mediumdisplay&utm_campaignquv,_blank); }); function moveArticle(href) { var page href.slice(1, href.indexOf(?)); var query qv_func.getUrlParams(); var bid query.bid; var aid query.aid; var table $(tabledata-bid + bid + ); if (table.length 0) return; if (bid && aid && (QV_BASE_OBJ.spid page || SITE_URL page)) { // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여 $.each($(.body > .frm), function() { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); }); var type default; var _pn page; var pn &pn + _pn; __BID bid; __AID aid; __PN QV_BASE_OBJ.spid; $(# + bid).attr(data-type, default); checkAuth(bid, aid, function(obj) { initialize_currentLocation(bid, aid, obj, table); }, function(obj) { qvjax_direct( check_board_auth, /module/board/board.php, bid + bid + &aid + aid + &auth_actionread, function (data) { if (data) { if ((obj.is_secret 1 && obj.writer_account null) || (obj.is_secret 1 && $(tr# + obj.parent).attr(data-type) nm)) { $(.read-body).data(article, obj); $(#ReadPasswordCheckModal).modal(show); $(#ReadPasswordCheckModal).data(article, obj); $(#ReadPasswordCheckModal).data(type, check_password); $(#ReadPasswordCheckModal).data(aid, __AID); $(#ReadPasswordCheckModal).data(init-type, type); $(#ReadPasswordCheckModal).data(table, table); } else if (obj.is_secret 1) { alert(lang.no_permission); // window.top.close(); } else { initialize_currentLocation(bid, aid, obj, table); } } else { alert(lang.no_permission); } }, function (xhr) { alert(lang.no_permission); } ); }, function(obj) { //if (obj.is_secret 1 || obj.writer_account null) { //if (obj.writer_account null) { if (obj.is_secret 1 && obj.writer_account null) { $(#ReadPasswordCheckModal).modal(show); $(#ReadPasswordCheckModal).data(article, obj); $(#ReadPasswordCheckModal).data(type, check_password); $(#ReadPasswordCheckModal).data(aid, __AID); $(#ReadPasswordCheckModal).data(init-type, type); $(#ReadPasswordCheckModal).data(table, table); } else if (obj.is_secret 1) { alert(lang.no_permission); return; // window.top.close(); } else { initialize_currentLocation(bid, aid, obj, table); } } ); } } function initAnchor(href) { var page href.slice(1, href.indexOf(?)); var query qv_func.getUrlParams(); var anchor ; var anchor_mobile ; if (isMobile() && anchor_mobile) { anchor anchor_mobile; } if ($(# + anchor).length 0) return; if (anchor && (QV_BASE_OBJ.spid page || SITE_URL page)) { // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여 $.each($(.body > .frm), function() { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); }); if (is_InternetExplorer() && $(# + anchor).offsetTop() 0) { // ie에서 page load 시 offset 값을 가져오지 못하기 때문에 가져올때까지 setInterval 돌림 var interval null; interval setInterval(function() { moveAnchor(anchor); clearInterval(interval); }, 100); } else { setTimeout(function() { moveAnchor(anchor); }, 100) } } } function moveAnchor(anchor) { var scrolltop 0; var header_height_pc 0; $.each($(.header > divclass*header), function() { if ($(this).attr(data-scr-hei)) { header_height_pc + parseInt($(this).attr(data-scr-hei)); } }); header_height_pc header_height_pc 0 ? $(.header).height() : header_height_pc; var header_height isMobile() ? $(.header-mobile).height() : header_height_pc; /* 2021.09.28 * 동일 아이디를 가진 anchor 객체가 존재하는 경우가 있음 (PC/Mobile) * 구분하여 각 환경에 맞게 앵커객체 할당 */ let anchorTarget $(divid + anchor + ).filter(function(i, a) { const mobileParents $(a).parents(.mobile_ele); return isMobile() ? mobileParents.length > 0 : mobileParents.length 0; }); anchorTarget anchorTarget.length > 0 ? anchorTarget : $(# + anchor); if (anchorTarget.parents(.slider-frm).length > 0) { scrolltop anchorTarget.parents(.slider-frm).offsetTop() - header_height; scrolltop is_InternetExplorer() ? scrolltop + $(body).scrollTop() : scrolltop; var slider_index anchorTarget.parents(.item).index(); anchorTarget.parents(.carousel.slide).carousel(slider_index); anchorTarget.parents(.item).first().css(transform, translate3d(0, 0, 0)); if (anchorTarget.parents(.fullpage ).length > 0) { if (anchorTarget.parents(.item).prev(.item).length > 0 ) { anchorTarget.parents(.item).prev(.item).css(transform, translate3d(0, -100%, 0)); } if (anchorTarget.parents(.item).next(.item).length > 0 ) { anchorTarget.parents(.item).next(.item).css(transform, translate3d(0, 100%, 0)); } } } else if (anchorTarget.parents(.tab-frm).length > 0) { scrolltop anchorTarget.parents(.tab-frm).offsetTop() - header_height; scrolltop is_InternetExplorer() ? scrolltop + $(body).scrollTop() : scrolltop; if (anchor.indexOf(tab-) > -1) { var tab_id anchor; } else { var tab_id anchorTarget.parent()0.id; } anchorTarget.parents(.tab-frm).find(ahref*# + tab_id + ).trigger(click); /* 2020.03.19 재헌 * 탭을 mobile_ele로 복사하여 넣은 경우 헤더의 탭 앵커가 동작하지 않기 때문에(id가 달라서) * 이름으로 찾아 활성화한다 */ if (isMobile()) { var tab anchorTarget.parents(.tab-frm); var target_tab tab.find(ahref*# + tab_id + ); var tab_name target_tab.text(); $.each($(.mobile_ele .tab-frame-nav a), function() { if ($(this).text() tab_name) { $(this).trigger(click); } }); } } else { scrolltop $(# + anchor).offsetTop() - header_height; scrolltop is_InternetExplorer() ? scrolltop + $(body).scrollTop() : scrolltop; } $(html, body).animate({ scrollTop: scrolltop }, 700); // mn-link 클릭하면 header-side-nav 닫음 if (isMobile() && $(.header-side-nav).hasClass(active)) { $(.header-side-nav).removeClass(active); if ($(this).parents(.header-mobile).length > 0) { $(this).parents(.header1, .header2, .header3, .header9).removeClass(z-index-9999); } } } //$(.mn-link).on(click, function() { $(ahref*qvac).on(click, function() { var href $(this).attr(href); if (href ! undefined && href ! ) { var page href.slice(1, href.indexOf(?)); var params qv_func.getUrlParams(? + href.split(?)1); var anchor params.qvac; var anchor_mobile params.qvmac; if (isMobile() && anchor_mobile) { anchor anchor_mobile; } if ($(# + anchor).length 0) return; //side menu close if($(this).parents(.header-mobile-side-nav).length > 0){ $(.header-mobile).removeClass(active-side-nav); } if (anchor && (QV_BASE_OBJ.spid page || SITE_URL page)) { // 앵커 동작 시 lazyload를 무시하고 displayed 클래스 부여 $.each($(.body > .frm), function() { $(this).find(.frm:not(.dp-none-important), .box:not(.dp-none-important)).addClass(displayed); }); if (is_InternetExplorer() && $(# + anchor).offsetTop() 0) { // ie에서 page load 시 offset 값을 가져오지 못하기 때문에 가져올때까지 setInterval 돌림 var interval null; interval setInterval(function() { moveAnchor(anchor); clearInterval(interval); }, 100); } else { setTimeout(function() { moveAnchor(anchor); }, 100) } return false; } } }); $(a.mn-linkhref*tab).on(click, function(e) { var href $(this).attr(href); if (href ! undefined && href ! ) { var page href.slice(1, href.indexOf(#)); var anchor href.split(#)1; if ($(# + anchor).length 0) return; else { if (anchor && (QV_BASE_OBJ.spid page || SITE_URL page)) { e.preventDefault(); moveAnchor(anchor); } } } }); function isMobile() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; } //원래 initHeaderOverflowMenuResizeEvent 위치 //var resize_frames ; function imageBoxAutoResize() { $.each($(#main_container .imgBox), function() { var img_box $(this); var bg_size $(this).find(.img-core).css(background-size); var bg_image $(this).find(.img-core).css(background-image); if (bg_image) { bg_image bg_image.replace(url(, ).replace(), ).replace(/\/gi, ); } // displayed 클래스가 없으면 리사이징 하지않는다. if (!img_box.hasClass(displayed)) return; // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다. if (isMobile() || window.innerWidth 767) { 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; } else { 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; } // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다. if (img_box.parents(.tab-frm, .slider-frm).length > 0) return; if (bg_size contain) { var tmpImg new Image(); tmpImg.src bg_image; $(tmpImg).one(load,function(){ var ratio tmpImg.width / tmpImg.height; var height_origin parseInt(getDataHeight(img_box)); var width_resize img_box.width(); var height_resize width_resize / ratio; height_resize height_resize > height_origin ? height_origin : height_resize; var diff height_origin - height_resize; //console.log(diff); if (height_origin 0) return; else if (!isMobile() && window.innerWidth > 767) { img_box.height(height_origin - diff); img_box.find(.img-core).height(height_origin - diff); } else { /* * 모바일에서는 에디터 width 375px 기준으로 비율을 맞춰서 크기를 조정한다 * 모바일객체는 height important가 적용되어있는 경우가 많아 height 조정 시 important를 붙여줘야 함 */ var mobile_width 375 - (parseInt(img_box.parents(.frm).last().css(padding-left)) * 2); // 에디터(375px) 기준 var mobile_ratio mobile_width / height_origin; img_box0.style.setProperty(height, (width_resize / mobile_ratio) + px, important); img_box.find(.img-core)0.style.setProperty(height, (width_resize / mobile_ratio) + px, important); } }); } }); $.each($(.body > .frm), function() { // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다. if (isMobile() || window.innerWidth 767) { 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; 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; } else { 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; 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; } // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다. if ($(this).parents(.tab-frm, .slider-frm).length > 0) return; if ($(this).hasClass(tab-frm) || $(this).hasClass(slider-frm)) return; var re 0; var image_count 0; $.each($(this).find(.box.imgBox), function() { // displayed 클래스가 없으면 리사이징 하지않는다. if (!$(this).hasClass(displayed)) return; // 컬럼 2개 이상 존재하는 프레임에 속해있으면 리사이징 하지않는다. if (isMobile() || window.innerWidth 767) { 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; } else { 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; } // 탭, 슬라이드 내의 이미지는 리사이징 하지않는다. if ($(this).parents(.tab-frm, .slider-frm).length > 0) return; re + getDataHeight($(this)) - $(this).height(); image_count++; }); if (image_count > 0) { $.each($(this).find(.frm).andSelf(), function () { var h getDataHeight($(this)); if (h auto || h 0 || re > h) return; if ($(this).is($(.body > .frm).first()) && $(.header).length > 0) { $.each($(.header > div), function() { // 헤더 크기가 가변적이기 때문에 data-hei 값을 가져다쓴다 var header_height $(this).attr(data-hei); if (header_height || header_height undefined) { return; } h + parseInt(header_height); }); //h + $(.header).height(); } // 최상단 프레임은 헤더 높이 추가 h - re; //$(this).children(.view).children(.tb).height(h); if (isMobile() || window.innerWidth 767) { $(this).css(height, auto); } else { $(this).height(h); } }); } image_count 0; });// $.each(resize_frames, function() {// var frame $(# + this.id);// var height_data frame.attr(data-hei);// if ((height_data || height_data undefined || height_data null)) return;// if (this.diff 0) return;// var height_origin_frm parseInt(height_data);// frame.height(height_origin_frm - this.diff);// console.log(id : + this.id + / diff : + (height_origin_frm - this.diff).toString());//// this.diff 0; // 프레임 높이 조정 후 diff:0 으로 할당// }); } function getDataHeight($obj) { var retval; if (window.innerWidth 767 || isMobile()) { retval $obj.attr(data-m-hei); } else { retval $obj.attr(data-hei); } if (retval || retval auto || retval undefined || retval null || retval NaNpx) { retval $obj.height(); } else { retval parseInt(retval); retval - parseInt($obj.css(margin-top)); retval - parseInt($obj.css(margin-bottom)); retval - parseInt($obj.css(padding-top)); retval - parseInt($obj.css(padding-bottom)); } return retval; } function initImageBoxAutoResize() { $.each($(#main_container .frm), function() { $(this).css(transition, 0.1s ease height); if ($(this).hasClass(tab-frm)) return; if ($(this).parents(.tab-frm).length > 0) return; if ($(this).hasClass(slider-frm)) return; if ($(this).parents(.slider-frm).length > 0) return; var hei $(this).attr(data-hei); if (hei || hei auto || hei undefined || hei null || hei NaNpx) { hei $(this).height(); hei + parseInt($(this).css(margin-top)); hei + parseInt($(this).css(margin-bottom)); hei + parseInt($(this).css(padding-top)); hei + parseInt($(this).css(padding-bottom)); $(this).attr(data-hei, hei); }// $(this).attr(data-hei, $(this).height()); }); $.each($(#main_container .imgBox), function() { var m_hei $(this).attr(data-m-hei); if (m_hei || m_hei auto || m_hei undefined || m_hei null || m_hei NaNpx) { m_hei $(this).height(); m_hei + parseInt($(this).css(margin-top)); m_hei + parseInt($(this).css(margin-bottom)); m_hei + parseInt($(this).css(padding-top)); m_hei + parseInt($(this).css(padding-bottom)); $(this).attr(data-m-hei, m_hei + px); } }); $.each($(#main_container .imgBox .img-core), function() { $(this).css(transition, none); }); // 0.2초 마다 갱신 setInterval(imageBoxAutoResize, 200);// window.onresize function(event) {// imageBoxAutoResize();// };// $(window).bind(resizeEnd, function() {// setTimeout(imageBoxAutoResize(), 50)// }); } /* 2020.03.10 재헌 * 백그라운드 비디오 크기 설정 (16:9) * frame/box의 크기를 확인 후 맞는 사이즈의 클래스를 부여함 */ function initBackgroundFullSizeVideo() { var backgroundVideo $(.box-background-video-fullwidth .video-iframe); if (backgroundVideo.length 0) { return; } else { var w $(#main_container).width(); if (w 0) { setTimeout(function() { initBackgroundFullSizeVideo(); }, 100); return; } else { resizeBackgroundFullSizeVideo(); $(window).resize(function () { resizeBackgroundFullSizeVideo(); }); } } } function resizeBackgroundFullSizeVideo() { $.each($(.box-background-video-fullwidth .video-iframe), function() { var $t $(this).parents(.frm, .box).first(); var w $t.width(); var h $t.height(); // 모바일에서 vimeo 배경설정 시 소리 켜기 버튼이 생기는 문제 때문에 전체 크기 상향 조정 // if (isMobile()) { // w + 100; // h + 100; // } if ($t.parents(.slider-frm).length > 0) { w $t.parents(.slider-frm).width(); h $t.parents(.slider-frm).height(); } else if ($t.parents(.tab-frm).length > 0) { w $t.parents(.tab-frm).width(); h $t.parents(.tab-frm).height(); } else if (w 0 || h 0) { $t.addClass(displayed); $t.parents(.frm).addClass(displayed); w $t.width(); h $t.height(); } h + parseInt($t.css(padding-top)); h + parseInt($t.css(padding-bottom)); h + parseInt($t.css(margin-top)); h + parseInt($t.css(margin-bottom)); var resolution resolution-1920x1080; // default; var resolution_array { w:320, h:180 }, { w:480, h:270 }, { w:640, h:360 }, { w:800, h:450 }, { w:864, h:486 }, { w:960, h:540 }, { w:1024, h:576 }, { w:1152, h:648 }, { w:1280, h:720 }, { w:1366, h:768 }, { w:1440, h:810 }, { w:1600, h:900 }, { w:1760, h:990 }, { w:1920, h:1080 }, { w:2048, h:1152 }, { w:2560, h:1440 }, { w:2880, h:1620 }, { w:3200, h:1800 }, { w:3840, h:2160 }, { w:4096, h:2304 }, { w:5120, h:2880 }, ; $.each(resolution_array.reverse(), function() { if (w > this.w || h > this.h) { return false; } else { resolution resolution- + this.w + x + this.h; } }); if ($(this).hasClass(resolution)) return; else { $(this).removeClass(function (index, className) { return (className.match(/(^|\s)resolution-\S+/g) || ).join( ); }); $(this).addClass(resolution); } }); } function is_InternetExplorer() { var agent navigator.userAgent.toLowerCase(); return (navigator.appName Netscape && agent.indexOf(trident) ! -1) || (agent.indexOf(msie) ! -1); } /* 2020.03.11 재헌 * IE, Chrome이 $t.offset().top 값을 다르게 출력하기 때문에 아래와 같이 처리 */ const _ZOOM Number(window.getComputedStyle(document.body).zoom) || 1; $.fn.offsetTop function() { if (_ZOOM 1) { var offsetTop $(this).offset().top - parseInt($(this).css(margin-top)); return is_InternetExplorer() ? offsetTop + $(body).scrollTop() : offsetTop; } else { return window.scrollY + (this0.getBoundingClientRect().y * _ZOOM); } }; function isIpadOS() { return navigator.maxTouchPoints && navigator.maxTouchPoints > 2 && /MacIntel/.test(navigator.platform); } function getScrollY() { if (isIpadOS()) { return window.scrollY / _ZOOM; } else { return window.scrollY; } }; /* 2020.05.18 재헌 * 동영상 컨텐츠 로딩 시 다른 컨텐츠의 로딩까지 느려지는 부분 개선 * 로딩 순서 (동영상 외) -> (동영상) */ $.each($(iframe.video-iframe), function() { var src $(this).attr(data-src); if (!src) return; var loadingMask div classproceeding> + div stylez-index: -1; classqv-loader qv-loader-black>/div> + /div>; $(this).before($(loadingMask)); }); $(window).bind(load,function() { $.each($(iframe.video-iframe), function() { var src $(this).attr(data-src); if (!src) return; $(this).on(load, function() { $(this).siblings(.proceeding).remove(); }); $(this).attr(src, src); }); }); $(document).ready(function() { if ($(.read-content-next)) { $(.read-content-next).text(이전글); $(.read-content-prev).text(다음글); } $(#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) { const customInterval setInterval(function() { if ($(.read-content-next)) { $(.read-content-next).text(이전글); $(.read-content-prev).text(다음글); clearInterval(customInterval); } }, 1000) }); });/script>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]