(function() { "use strict"; /** * 사이트 네임스페이스 초기화 */ var initNamespace = function() { if (typeof window.lddi === 'undefined') { window.lddi = { util: {} }; } }; var Channel = { getSelectedCstrInfo: function(){ var value = document.cookie.match('(^|;) ?cstrInfo=([^;]*)(;|$)') , cstrInfo = {}; if (value) { var cstrInfos = decodeURIComponent(value[2]).split('_'); if(cstrInfos && cstrInfos.length > 4){ cstrInfo.cstrCd = cstrInfos[0]; cstrInfo.cstrLrclsCd = cstrInfos[1]; cstrInfo.cstrMdclsCd = cstrInfos[2]; cstrInfo.cstrDspNm = cstrInfos[3]; cstrInfo.lrclsDtlCdNm = cstrInfos[4]; cstrInfo.mdclsDtlCdNm = cstrInfos[5]; } } else { //디폴트 지점 잠실점 0002_C00110_C00111_잠실점_백화점_서울점 cstrInfo.cstrCd = '0002'; cstrInfo.cstrLrclsCd = 'C00110'; cstrInfo.cstrMdclsCd = 'C00111'; cstrInfo.cstrDspNm = '잠실점'; cstrInfo.lrclsDtlCdNm = '백화점'; cstrInfo.mdclsDtlCdNm = '서울점'; } return cstrInfo; } }; var Layout = { fnBackBtn: function(){ if (history.length == '1') { window.close(); } else { history.back(); } }, goBack: function(){ Layout.fnBackBtn(); }, goMain: function(){ location.href = _CONTEXT_PATH_ + '/main'; }, doubleClickFlag: false, doubleClickCheck: function(){ if (this.doubleClickFlag) { return this.doubleClickFlag; } else { this.doubleClickFlag = true; return false; } } }; var YouTube = { urlArray: [], idArray: [], objArray: [], opVarsArray: [], changeVideoAndStart: function(){ $('.player').each(function(i){ $(this).attr('id', 'player'+i); var _url = $(this).data('url'); YouTube.urlArray.push(_url); var opVars = {'version':3, 'showinfo':0, 'rel':0, 'loop' :0, 'autoplay':0, 'wmode':'opaque', 'autohide':1, 'controls':0, 'disablekb':1, 'enablejsapi':1, 'modestbranding':1, 'vq':0, 'playsinline':1, 'playlist': ''}; if(_url.indexOf('watch?v=') > -1){ _url = _url.split('watch?v='); }else if(_url.indexOf('be/') > -1){ _url = _url.split('be/'); }else if(_url.indexOf('shorts/') > -1){ _url = _url.split('shorts/'); // 쇼츠용 opVars opVars = {'version':3, 'showinfo':0, 'rel':0, 'loop' :0, 'autoplay':0, 'wmode':'opaque', 'autohide':1, 'controls':0, 'disablekb':1, 'enablejsapi':1, 'modestbranding':1, 'vq':0, 'playsinline':1}; } YouTube.opVarsArray.push(opVars); YouTube.idArray.push(_url[1]); }); var length = YouTube.idArray.length; for(var i=0; i 0){ //player class 객체가 있을 경우만 var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); } } }; /** * 버튼링크 */ var ButtonLink = { SEARCH_SHOP_WEB_URL: '/store/search/result', SEARCH_TOTAL_WEB_URL: '/search/result', channalTypeLinkLocation: function(webUrl){ if (webUrl) { location.href = webUrl; } else { alert('모바일 APP에서 확인 가능합니다.'); } }, searchShop: function(searchText){ //매장검색 if (searchText) { ButtonLink.channalTypeLinkLocation(ButtonLink.SEARCH_SHOP_WEB_URL +'?searchTerm='+encodeURIComponent(searchText.replace('#', '')) ); } }, searchTotal: function(searchText){ //통합검색 if (searchText) { ButtonLink.channalTypeLinkLocation(ButtonLink.SEARCH_TOTAL_WEB_URL +'?searchTerm='+encodeURIComponent(searchText.replace('#', '')) ); } }, goLink: function(obj){ if (obj) { var data = $(obj).data(); if (data && (data.pcUrl || data.appUrl)) { if (data.pcUrl) { if(data.chcMtr === 'LON'){ location.href = encodeURI(decodeURIComponent(data.pcUrl)) } else { return window.open(data.pcUrl); } } else { alert('모바일 APP에서 참여 가능합니다.'); return false; } } } } }; var DetailUrl = { C00901: '/thku/thkuDetail?thkuNo=', //사은 C00902: '/cpn/cpnDetail?cpnInfoNo=', //쿠폰 C00903: '/shpgnews/shpgnewsDetail?shpgNewsNo=', //쇼핑뉴스 C00908: '/cuterent/cuterentDetail?entNo=', //이벤트 C00913: '/cscenter/faq?qnaTpCd=', //FAQ C00915: { main: '/gallery/galleryMain', // 갤러리 메인 saleArtPieceList: '/gallery/saleArtPieceList?tab=', //판매작품 목록 saleArtPieceDetail: '/gallery/saleArtPieceDetail?sleOutmNo=', //작품 상세 writerSaleArtPieceDetail: '/gallery/writerSaleArtPieceDetail?sleOutmNo=', // 작가 작품 상세 artMagazineList: '/gallery/artMagazineList', //컨텐츠 Art Magazine 목록 contentsDetail: '/gallery/galleryContentsDetail?gallyCntsNo=', //컨텐츠 상세 exhibitionList: '/gallery/exhibitionList?cstrCd=', // 전시회 목록 exhibitionDetail: '/gallery/exhibitionDetail?gallyNo=', //전시회 상세 search: '/gallery/gallerySearch?searchTerm=', // 갤러리검색 homeStyle: '/gallery/homeStyle', artGuide: '/gallery/artGuide', newAuthor: '/gallery/newAuthor' }, C09108: '/store/floor?cstrCd=', // 층별안내 C00927: '/shpgnews/shpgnewsDetail?shpgNewsNo=',//Place&Eat C00000: '/store/type?cstrCd=', // 유형별안내 C00602: '/store/dining?cstrCd=', // F&B (다이닝) C00603: '/store/convenience?cstrCd=', // 편의시설 getUrl: function(cntsTpCd, cntsNo, viewName){ if (cntsTpCd) { if (cntsTpCd == 'C00914') { //참여형 이벤트 예외처리 cntsTpCd = 'C00908'; } if (!cntsNo) { cntsNo = ''; } var domain = _PCW_DOMAIN_ + _CONTEXT_PATH_; if (cntsTpCd == 'C00915') { // 롯데 갤러리는 작품/컨텐츠/오프라인전시회 별 분기 추가 return domain + DetailUrl[cntsTpCd][viewName] + cntsNo; } else { return domain + DetailUrl[cntsTpCd] + cntsNo; } } }, goUrl: function(cntsTpCd, cntsNo, viewName){ location.href = DetailUrl.getUrl(cntsTpCd, cntsNo, viewName); }, }; /** * 우편번호 팝업 띄우기 * 미리 스크립트 파일이 로드되어 있어야함 * http://dmaps.daum.net/map_js_init/postcode.v2.js * @see http://postcode.map.daum.net/guide */ var ZipCode = { open: function(callback, options, openOptions) { var defaultWidth = 400; var defaultHeight = 600; daum.postcode.load(function() { new daum.Postcode($.extend(true, { popupName: 'lsZipcode', width: defaultWidth, height: defaultHeight, oncomplete: callback }, options)) .open($.extend(true, { left: (window.screen.width / 2) - (defaultWidth / 2), top: (window.screen.height / 2) - (defaultHeight / 2) }, openOptions)); }); }, openMobile: function(targetId, callback) { var element_wrap = document.getElementById(targetId); var currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop); daum.postcode.load(function() { // 현재 scroll 위치를 저장해놓는다. new daum.Postcode({ zonecodeOnly: true, oncomplete: function(data) { // 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분. // 각 주소의 노출 규칙에 따라 주소를 조합한다. // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다. var fullAddr = data.address; // 최종 주소 변수 var extraAddr = ''; // 조합형 주소 변수 // 기본 주소가 도로명 타입일때 조합한다. if(data.addressType === 'R'){ //법정동명이 있을 경우 추가한다. if(data.bname !== ''){ extraAddr += data.bname; } // 건물명이 있을 경우 추가한다. if(data.buildingName !== ''){ extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); } // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다. fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : ''); } // iframe을 넣은 element를 안보이게 한다. // (autoClose:false 기능을 이용한다면, 아래 코드를 제거해야 화면에서 사라지지 않는다.) element_wrap.style.display = 'none'; // 우편번호 찾기 화면이 보이기 이전으로 scroll 위치를 되돌린다. document.body.scrollTop = currentScroll; data.fullAddr = fullAddr; callback(data); }, // 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분. iframe을 넣은 element의 높이값을 조정한다. onresize : function(size) { element_wrap.style.height = size.height+'px'; }, width : '100%', height : '100%' }).embed(element_wrap); // iframe을 넣은 element를 보이게 한다. element_wrap.style.display = 'block'; }); }, closeMobile: function(targetId) { var element_wrap = document.getElementById(targetId); // iframe을 넣은 element를 안보이게 한다. element_wrap.style.display = 'none'; } }; var Iframe = { load: function(obj){ var frame = $(obj).get(0); var doc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document; $(obj).height(doc.body.scrollHeight + 17); $(obj).contents().find('body').addClass('useMOW'); } }; var ContentsBranchPopup = { /** * cntsType: DM/영통, 연동사은/미연동사은 구분용도 * title : 쿠폰명+혜택/사은명 */ open: function(cntsNo, cntsTpCd, cntsType){ $.ajax({ type : 'GET', url: _CONTEXT_PATH_ + '/contents/cstrInfoAjax', data: {'cntsNo': cntsNo, 'cntsTpCd': cntsTpCd, 'cntsTypCd' : cntsType}, dataType: 'json', }) .done(function(res){ if (res.resultCode =='0000') { ContentsBranchPopup.popupOpen(res.cstrInfo); } else { alert('지점정보가 존재하지 않습니다.'); } }) .fail(function(res){ alert(Msg.error); }); }, popupOpen: function(cstrInfoList){ if (cstrInfoList) { var cstrInfoHtml = '' , listSize = cstrInfoList.length; for (var i=0; i

' + cstrInfo.lrclsDtlCdNm +'

'; cstrInfoHtml += '' + '

' + cstrInfo.cstrDspNms + '

' + ''; } } var branchPopupId = '#branch-info-popup'; $(branchPopupId).find('.branch-list').html(cstrInfoHtml); window.__popupOpen(branchPopupId); } }; var Msg = { error: '통신 중 문제가 발생하였습니다.', forbiddenWord : { repl :"작성한 댓글에 부적절한 단어 \"{0}\"가 포함되어 있습니다. 수정하여 등록해주세요.", revw :"리뷰에 부적절한 단어 \"{0}\"가 포함되어 있습니다. 수정하여 등록해주세요.", }, converter : function(msg, wordArr) { if(msg) { var p = /\{\d}/g; wordArr.forEach(function(v, i) { msg = msg.replaceAll("{" + i + "}", v); }) } return msg; } }; var Cnts = { C00901: 'Promotion', // 사은 C00902: 'Coupon', // 쿠폰 C00903: 'Shopping News', // 행사 C00908: 'Culture&Event', // 문화이벤트 C00927: 'Place&Eat', // Place&Eat getCntsNm : function(cntsTpCd) { return Cnts[cntsTpCd]; } }; var PageScroll = function() { // 스크롤 페이징 $(window).bind("scroll", function() { var dH = $(document).height(); var wH = $(window).height(); var sT = $(window).scrollTop(); if(sT > ((dH - wH) * 0.5)) { if(typeof getMoreList == "function") { getMoreList(); } } }) }; /** * [PCW] 리뉴얼 - 페이징 모듈 (숫자 나열형, 1 2 3 ...) * @type {{paint: Paging.paint}} */ var Paging = { /** * 페이징 영역을 새롭게 그리는 함수 * * pagingWrapper : 페이징 모듈이 들어갈 영역 (jQuery객체) * currentPage : 현재 페이지 번호 * totalPage : 전체 페이지 수 * pageGroupCnt : 표시할 페이지 번호 개수 (5 -> 1 2 3 4 5) * callbackFunctionName : 페이징 이후 수행할 콜백함수 (기본값: pagingCallback) */ paint: function(pagingWrapper, currentPage, totalPage, pageGroupCnt, callbackFunctionName) { var start = 0; var end = 0; var pagingTemplate = []; currentPage = currentPage ? currentPage : 1; totalPage = totalPage ? totalPage : 0; pageGroupCnt = pageGroupCnt ? pageGroupCnt : 0; callbackFunctionName = callbackFunctionName ? callbackFunctionName : "pagingCallback"; if (pagingWrapper && totalPage > 0 && pageGroupCnt > 0) { start = (parseInt((currentPage - 1) / pageGroupCnt, 10) * pageGroupCnt) + 1; end = (start + pageGroupCnt > totalPage ? totalPage : start + pageGroupCnt); // 이전 버튼 생성 if (currentPage != 1) { var prevBtn = ''; pagingTemplate.push(prevBtn); } // 페이지 번호 리스트 ul 태그 생성 var paginationNumberListUl = ''); // paginationNumberListUl 닫음 // 다음 버튼 생성 if (currentPage != totalPage) { var nextBtn = ''; pagingTemplate.push(nextBtn); } pagingWrapper.empty(); pagingWrapper.html(pagingTemplate.join("")); } } }; /** * 다이렉트썸네일 */ var DrctThnl = { openLink : function(linkUrl, linkTpCd){ location.href = encodeURI(decodeURIComponent(linkUrl)) }, }; (function() { initNamespace(); lddi.Channel = Channel; lddi.Layout = Layout; lddi.YouTube = YouTube; lddi.ButtonLink = ButtonLink; lddi.DetailUrl = DetailUrl; lddi.ZipCode = ZipCode; lddi.Iframe = Iframe; lddi.ContentsBranchPopup = ContentsBranchPopup; lddi.Msg = Msg; lddi.Cnts = Cnts; lddi.PageScroll = PageScroll; lddi.Paging = Paging; lddi.DrctThnl = DrctThnl; })(); return lddi; })(); // 유투브에서 호출하는 함수 정의 function onYouTubeIframeAPIReady() { lddi.YouTube.changeVideoAndStart(); } // iframe message handling window.addEventListener("message", function(message) { if(message && message.data) { var fnNm = message.data.fnNm var param = message.data.param if(fnNm === "setIframeHeight") { // iframe 높이값 설정 if(param && param.height && param.id) { if(typeof iframeLoaded == "function") { iframeLoaded(param.height, param.id) } } } } }) // 24.08.09 iframe function iframeLoaded(height, id) { if(height && id) { const frame = document.getElementById(id); frame.style.height = height + "px"; } }