');
}
setMobileVideoRatio();
// 크리마 리뷰 사용 중일 시 위젯 호출
if(document.querySelector(".crema-product-reviews")){
if(typeof crema !== 'undefined'){
crema.run();
}
}
$prod_detail_content_mobile.toggleClass('product_detail_mobile', true);
$prod_detail_content_mobile.toggleClass('product_review_mobile', false);
$prod_detail_content_mobile.toggleClass('product_qna_mobile', false);
$prod_detail_content_mobile.toggleClass('product_return_mobile', false);
break;
}
case type === SHOP_CONST.TAB_TYPE.REVIEW: {
$.ajax({
type: review_paging ? 'POST' : 'GET',
data: { 'prod_idx': current_prod_idx, 'review_page': review_page, 'qna_page': qna_page, 'only_photo': only_photo, 'member_hash': MEMBER_HASH, 'is_mobile' : SHOP_CONST.IS_MOBILE, 'rating' : rating },
url: ('/shop/prod_review_mobile_html.cm'),
dataType: 'html',
async: false,
success: function (result) {
if ($('._external_widget_review_pc_position')) {
$('._external_widget_review_pc_position').remove();
}
if (!$review_summary_wrap_mobile.html()) {
getReviewSummary();
}
if (tab_type === 'Y') {
$('.categorize-mobile ._review_wrap').html(result);
}else{
$prod_detail_content_mobile.html(result);
}
$prod_detail_content_mobile.toggleClass('product_detail_mobile', false);
$prod_detail_content_mobile.toggleClass('product_review_mobile', true);
$prod_detail_content_mobile.toggleClass('product_qna_mobile', false);
$prod_detail_content_mobile.toggleClass('product_return_mobile', false);
}
});
break;
}
case type === SHOP_CONST.TAB_TYPE.QNA: {
$.ajax({
type: 'POST',
data: { 'prod_idx': current_prod_idx, 'review_page': review_page, 'qna_page': qna_page },
url: ('/shop/prod_qna_mobile_html.cm'),
dataType: 'html',
cache: false,
async: false,
success: function (result) {
if (options.shop_view_tab_display !== "Y"){
if($review_summary_wrap_mobile.html()){
$review_summary_wrap_mobile.empty();
$review_summary_wrap_mobile.hide();
}
}
if (tab_type === 'Y') {
$('.categorize-mobile ._qna_wrap').html(result);
} else {
$prod_detail_content_mobile.html(result).css({ 'width': '100%' });
}
$prod_detail_content_mobile.toggleClass('product_detail_mobile', false);
$prod_detail_content_mobile.toggleClass('product_review_mobile', false);
$prod_detail_content_mobile.toggleClass('product_qna_mobile', true);
$prod_detail_content_mobile.toggleClass('product_return_mobile', false);
}
});
break;
}
case type === SHOP_CONST.TAB_TYPE.RETURN: {
if (options.shop_view_tab_display !== "Y"){
if($review_summary_wrap_mobile.html()){
$review_summary_wrap_mobile.empty();
$review_summary_wrap_mobile.hide();
}
}
if (last_refund_data) {
const prod_detail_return_html = last_refund_data.use_shop_return ? IMWEB_TEMPLATE.loadSimple("prodReturnMobile", last_refund_data) : IMWEB_TEMPLATE.loadSimple("prodReturnDisable", null);
if (tab_type === 'Y') {
var $_target = $('.categorize-mobile ._return_wrap');
}else{
var $_target = $prod_detail_content_mobile;
}
$_target.empty();
$_target.html(prod_detail_return_html).css({ 'width': '100%' });
}
$prod_detail_content_mobile.toggleClass('product_detail_mobile', false);
$prod_detail_content_mobile.toggleClass('product_review_mobile', false);
$prod_detail_content_mobile.toggleClass('product_qna_mobile', false);
$prod_detail_content_mobile.toggleClass('product_return_mobile', true);
break;
}
}
}
let margin_top = 0;
let prod_tab_target;
if(options.shop_view_tab_display !== "Y"){
prod_tab_target = document.querySelector('#prod_tab_target_mobile');
if(options.shop_tab_fixed !== "Y"){
margin_top = -1 * getFixedHeaderHeight() + 'px';
}else if(review_paging){
margin_top = (-1 * document.querySelector('#fixed_tab_mobile ._prod_detail_tab_fixed').getBoundingClientRect().height) + 'px';
}
}else{
prod_tab_target = document.querySelector(`#prod_detail_${type}_target_mobile`);
margin_top = (-1 * document.querySelector('#fixed_tab_mobile ._prod_detail_tab_fixed').getBoundingClientRect().height) + 'px';
}
if(review_paging){
prod_tab_target = document.querySelector('.categorize-mobile ._prod_detail_review_board_target');
}
if(review_paging || qna_paging || is_init_detail){
if(prod_tab_target){
prod_tab_target.style.top = margin_top;
prod_tab_target.scrollIntoView();
}
if(is_init_detail){
setTabHistory(type);
setTimeout(() => {
checkSeemore(type);
}, 200);
}
}
};
var getFixedHeaderHeight = function(){
let margin_top = 0;
let $fixed_header_disable;
if(document.querySelector('#inline_header_fixed')){
if (!IS_MOBILE) {
$fixed_header_disable = $('#inline_header_fixed');
} else {
$fixed_header_disable = $('#inline_header_mobile').find('._fixed_header_section');
}
}else{
if (!IS_MOBILE) {
$fixed_header_disable = $('#inline_header_normal').find('._fixed_header_section');
} else {
$fixed_header_disable = $('#inline_header_mobile').find('._fixed_header_section');
}
}
for ( var i = 0; i < $fixed_header_disable.length; i++ ) {
var target = $fixed_header_disable[i].getBoundingClientRect();
margin_top += target.height;
}
return margin_top;
};
/**
* 상세정보 펼쳐보기 버튼 노출 처리
*/
let checkSeemore = function (type) {
const $seemore_wrap = $body.find('._seemore_wrap');
if($seemore_wrap.length === 0) return;
// 탭 노출 방식이 한 페이지 노출 방식이거나 탭 노출 방식이 아니면서 상세정보 탭일 때만 펼쳐보기 노출
if(options.shop_view_tab_display == "Y" || (options.shop_view_tab_display == "N" && type == SHOP_CONST.TAB_TYPE.DETAIL)) {
// template 이 변환되는 시점이 비동기가 되어 당장 사이즈를 알 수가 없다.
// if((!is_mobile_width && $prod_detail_content_pc.outerHeight() > SHOP_CONST.SEEMORE_HEIGHT.PC) || (is_mobile_width && $prod_detail_content_mobile.outerHeight() > SHOP_CONST.SEEMORE_HEIGHT.MOBILE)) {
$prod_detail_content_pc.toggleClass('hide_seemore', false);
$prod_detail_content_mobile.toggleClass('hide_seemore', false);
$seemore_wrap.show();
return;
// }
}
$prod_detail_content_pc.toggleClass('hide_seemore', true);
$prod_detail_content_mobile.toggleClass('hide_seemore', true);
$seemore_wrap.hide();
};
var setTabHistory = function (type) {
if (!$('body').hasClass('admin')) {
if (checkUseHistory()) {
var current_url = location.href.indexOf('#') === -1 ? location.href : location.href.substr(0, location.href.indexOf('#'));
switch (type) {
case SHOP_CONST.TAB_TYPE.DETAIL:
history.replaceState(null, null, current_url + "#prod_detail_detail");
break;
case SHOP_CONST.TAB_TYPE.REVIEW:
history.replaceState(null, null, current_url + "#prod_detail_review");
break;
case SHOP_CONST.TAB_TYPE.QNA:
history.replaceState(null, null, current_url + "#prod_detail_qna");
break;
case SHOP_CONST.TAB_TYPE.RETURN:
history.replaceState(null, null, current_url + "#prod_detail_return");
break;
default:
let target_tab = options.first_tab === "prod_detail" ? SHOP_CONST.TAB_TYPE.DETAIL : options.first_tab === "prod_review" ? SHOP_CONST.TAB_TYPE.REVIEW : options.first_tab === "prod_qna" ? SHOP_CONST.TAB_TYPE.QNA : options.first_tab === "prod_return" ? SHOP_CONST.TAB_TYPE.RETURN : "";
history.replaceState(null, null, current_url + `#prod_detail_${target_tab}`);
break;
}
} else {
switch (type) {
case SHOP_CONST.TAB_TYPE.DETAIL:
location.hash = "prod_detail_detail";
break;
case SHOP_CONST.TAB_TYPE.REVIEW:
location.hash = "prod_detail_review";
break;
case SHOP_CONST.TAB_TYPE.QNA:
location.hash = "prod_detail_qna";
break;
case SHOP_CONST.TAB_TYPE.RETURN:
location.hash = "prod_detail_return";
break;
default:
let target_tab = options.first_tab === "prod_detail" ? SHOP_CONST.TAB_TYPE.DETAIL : options.first_tab === "prod_review" ? SHOP_CONST.TAB_TYPE.REVIEW : options.first_tab === "prod_qna" ? SHOP_CONST.TAB_TYPE.QNA : options.first_tab === "prod_return" ? SHOP_CONST.TAB_TYPE.RETURN : "";
location.hash = `prod_detail_${target_tab}`;
break;
}
}
}
};
var setMobileVideoRatio = function () {
// 동영상 크기 값이 입력되어 있을 시 모바일에서도 입력된 크기 기준으로 비율 계산해서 반영
var $fr_video = $prod_detail_content_mobile.find('.fr-video.fr-dvb');
if ($fr_video.length > 0) {
$fr_video.each(function (k, v) {
var $fr_video_iframe = $(v).find('iframe');
if ($fr_video_iframe.length > 0) {
var origin_width = $fr_video_iframe[0].style.width;
var origin_height = $fr_video_iframe[0].style.height;
if (origin_width != '' && origin_height != '') {
// px 단위일 때만 비율 보정
var origin_width_split = origin_width.split('px');
var origin_height_split = origin_height.split('px');
if (origin_width_split.length === 2 && origin_height_split.length === 2) {
var video_ratio = (origin_height_split[0] / origin_width_split[0]) * 100;
$(v).css('padding-bottom', video_ratio + '%');
}
}
}
});
}
};
var hideAddCartAlarm = function () {
$add_cart_alarm.hide();
};
var moveCart = function () {
cart_type = $('input[name=add_cart_type]:checked').val();
if (cart_type == 'regularly') {
window.location.href = '/shop_cart?type=regularly';
} else {
window.location.href = '/shop_cart';
}
};
var changeInput = function () {
$(document).on('keypress', 'input._requireInputOption', function (e) {
if (e.which == 13) {
e.preventDefault();
var $next = $('[tabIndex=' + (+this.tabIndex + 1) + ']');
if ($next.length != 0) {
$next.focus().click();
} else {
e.target.blur();
}
}
});
};
var changeTab = function (type) {
$('._detail_detail_wrap').hide();
$('._detail_review_wrap').hide();
$('._detail_qna_wrap').hide();
$('._detail_' + type + '_wrap').show();
};
var countryCodeChange = function (country) {
$.ajax({
type: 'POST',
data: { 'country': country },
url: ('/shop/country_code_change.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg != "SUCCESS") {
alert(result.msg);
}
}
});
};
var DetailItemMake = function (idx, change_country, deliv_type, deliv_pay_type) {
var is_design_mode = (location.pathname.indexOf('/admin/design') != -1);
$deliv_country = change_country;
$deliv_pay_type = deliv_pay_type;
$.ajax({
type: 'GET',
data: { 'idx': idx, 'change_country': change_country, 'deliv_type': deliv_type, 'deliv_pay_type': deliv_pay_type, '__': MEMBER_HASH },
url: ('/shop/prod_detail_make.cm'),
dataType: 'json',
cache: !is_design_mode,
success: function (result) {
if (result.msg == 'SUCCESS') {
$prod_detail.find('._item_detail_wrap').html(result.html);
/* 환불 정보 입력 */
last_refund_data = result.refund;
setDetailReturnHtml();
if (typeof naver != typeof void 0 && !!naver.NaverPayButton) {
makeNaverPayBtn('naverPayWrap', change_country == 'KR' || change_country == 'none' || change_country == '');
}
if (typeof kakaoCheckout != 'undefined' && typeof makeTalkPayButton != 'undefined') {
makeTalkPayButton('create-kakao-checkout-button', (change_country == 'KR' || change_country == 'none' || change_country == ''));
}
}
}
});
};
function setDetailReturnHtml() {
if (!last_refund_data) return;
if (options.shop_view_tab_display == 'Y') {
let prod_detail_return_html = null;
prod_detail_return_html = last_refund_data.use_shop_return ? IMWEB_TEMPLATE.loadSimple("prodReturnPc", last_refund_data) : IMWEB_TEMPLATE.loadSimple("prodReturnDisable", null);
$prod_detail_return.html(prod_detail_return_html);
prod_detail_return_html = last_refund_data.use_shop_return ? IMWEB_TEMPLATE.loadSimple("prodReturnMobile", last_refund_data) : IMWEB_TEMPLATE.loadSimple("prodReturnDisable", null);
$prod_detail_return_mobile.html(prod_detail_return_html);
} else {
if (current_content_tab !== SHOP_CONST.TAB_TYPE.RETURN) return;
SITE_SHOP_DETAIL.changeContentPCTab(SHOP_CONST.TAB_TYPE.RETURN);
SITE_SHOP_DETAIL.changeContentTab(SHOP_CONST.TAB_TYPE.RETURN);
}
}
/**
* 모바일 옵션 input클릭시 입력키보드 때문에 css예외처리가 필요하여 클래스 추가.
*/
var addEventMobileOptionInput = function () {
$options.find('input.form-control').focus(function () {
if (!$('body').hasClass('mobile_focus_on')) {
$('body').addClass('mobile_focus_on');
}
});
$options.find('input').blur(function () {
if ($('body').hasClass('mobile_focus_on')) {
$('body').removeClass('mobile_focus_on');
}
});
};
/**
* 쇼핑 카테고리 목록에서 상품 상세페이지 레이어팝업 띄우는 함수
* @param idx
* @param back_url
* @param is_prod_detail_page: 상품상세페이지에서 레이어팝업 - 상품 상세 Dialog - 을 띄울 경우 'Y'
* @param is_mobile
* @param prod_idx_org
*/
var openProdDetailFromShoppingList = function (idx, back_url, is_prod_detail_page, is_mobile, prod_idx_org) {
$.ajax({
type: 'GET',
data: { 'idx': idx, 'is_prod_detail_page': is_prod_detail_page },
url: ('/shop/prod_detail_from_shopping_list.cm'),
dataType: 'html',
cache: true,
async: false,
success: function (result) {
$.cocoaDialog.open({ type: 'prod_detail_from_shopping_list', custom_popup: result, 'close_block': false });
const currentUrl = location.href;
history.replaceState(null, null, currentUrl + '?idx=' + idx);
$('.modal_prod_detail_from_shopping_list').addClass('custom_tooltip');
if (is_prod_detail_page == 'Y' && is_mobile) {
var $mobile_action_btn_wrap = $('._mobile_action_btn_wrap');
$mobile_action_btn_wrap.hide();
}
// 모달이 닫힐 때 실행되는 콜백 붙이는 부분
$('.modal_prod_detail_from_shopping_list').on('hidden.bs.modal', function (e) {
$('.modal_prod_detail_from_shopping_list').find('.modal-content').html(''); // close 해도 html 이 남아있어서 스크립트가 재실행이 안 되므로 html 을 삭제시킴
$('html').removeClass('mobile-shop-open');
history.replaceState(null, null, currentUrl);
if (is_prod_detail_page == 'Y') {
initDetail({
prod_idx: prod_idx_org,
prod_price: prod_price_org,
require_option_count: require_option_count_org,
use_image_optimizer_on_product_detail_markup: use_lazy_load_org,
shop_use_full_load: use_lazy_load_org,
shop_view_tab_display: tab_type_org,
is_site_page: is_site_page_org,
prod_type: prod_type_org,
is_prod_detail_page: false,
is_price_view_permission: is_view_price,
cm_style: options.cm_style,
section_code: section_code
});
if (is_mobile) $mobile_action_btn_wrap.show();
}
});
if (checkUseHistory()) { // 뒤로가기 누를 경우 모달만 꺼지고 현재 페이지에 남아있도록
history.pushState(null, null, location.href);
window.onpopstate = function () {
if ($('.modal_prod_detail_from_shopping_list').hasClass('in')) {
$.cocoaDialog.close();
}
};
}
}
});
};
var getReviewCountFromShoppingList = function (prod_code_list) {
$.ajax({
type: 'POST',
data: { 'prod_code_list': prod_code_list },
url: ('/shop/get_review_count_from_shopping_list.cm'),
dataType: 'json',
cache: false,
async: true,
success: function (res) {
// $('"#' + + '"').find("._review_count_text").text(res.review_count);
// $(prod_code).find("._wish_count_text").text(res.wish_count);
}
});
};
/**
* review, qna 권한이 buyer일때 체크 모달
* @param prod_code
* @param type
*/
var openBuyerReview = function (prod_code) {
$.ajax({
type: 'POST',
data: { 'prod_code': prod_code },
url: ('/shop/open_buyer_review.cm'),
dataType: 'json',
cache: false,
async: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
$.cocoaDialog.open({
type: 'eduModal', custom_popup: result.html, width: 800, hide_event: function () {
}
});
} else {
alert(result.msg);
}
}
});
};
var deleteReviewImage = function (obj) {
var box_obj = obj.parent().parent();
obj.parent().remove();
if (box_obj.find('.file-add').length == 0) box_obj.hide();
};
/**
* 상품상세 페이지에 뿌려지는 review, qna 의 카운트 가져오기.
* @param prod_code
*/
var getReviewQnaCount = function (prod_code) {
$.ajax({
type: 'POST',
data: { 'prod_code': prod_code },
url: ('/shop/get_review_qna_count.cm'),
dataType: 'json',
cache: false,
async: true,
success: function (res) {
setReviewQnaCountText($("._review_count_text"), res.review_count);
setReviewQnaCountText($("._qna_count_text"), res.qna_count);
}
});
};
var setReviewQnaCountText = function ($target, count) {
$target.text(count);
};
var getCurrentProdNo = function () {
return current_prod_idx;
};
var saveSelectedProd = function () {
if (typeof window.sessionStorage === "undefined") {
return false;
}
// 초기화
var session_storage_keys = Object.keys(sessionStorage);
session_storage_keys.forEach(function (_key) {
if (_key.indexOf('PROD_SELECTED_OPTION_') !== -1) {
sessionStorage.removeItem(_key);
}
});
// 마지막으로 본 것만 남도록 추가
sessionStorage.setItem("LAST_SELECTED_PROD", current_prod_idx);
sessionStorage.setItem(("PROD_SELECTED_OPTION_" + current_prod_idx), JSON.stringify({
'prodIdx': current_prod_idx,
'optDataList': selected_options,
'orderCount': order_count
}));
};
/**
* 로그인 이전에 선택한 옵션이 세션에 저장되어 있을 경우 로그인 후 해당 옵션을 다시 설정해줌
* @param is_set
* @returns {boolean}
*/
var setSelectedProd = function (is_set) {
if (typeof window.sessionStorage === "undefined") {
return false;
}
var selected_data = JSON.parse(sessionStorage.getItem("PROD_SELECTED_OPTION_" + current_prod_idx));
var last_prod_idx = sessionStorage.getItem("LAST_SELECTED_PROD");
// 초기화
var session_storage_keys = Object.keys(sessionStorage);
session_storage_keys.forEach(function (_key) {
if (_key.indexOf('PROD_SELECTED_OPTION_') !== -1) {
sessionStorage.removeItem(_key);
}
});
// 마지막으로 본 상품이랑 일치하지 않는경우 리셋하고 끝
if (last_prod_idx != current_prod_idx) return false;
if (typeof selected_data == "undefined") return false;
if (selected_data == null) return false;
if (Object.keys(selected_data).length <= 0) return false;
if (!is_set) return false;
for (var _key in selected_data) {
switch (_key) {
case "optDataList":
selected_options = selected_data[_key];
break;
case "orderCount":
order_count = selected_data[_key];
break;
}
}
updateSelectedOptions('prod');
if (IS_MOBILE) {
showMobileOptions(options.only_regularly ? 'regularly' : 'buy');
} else {
showPCOptions('order');
}
};
var openCouponDownload = function () {
$.ajax({
type: 'POST',
data: {},
url: ('/shop/open_coupon_download.cm'),
dataType: 'json',
cache: false,
async: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
$.cocoaDialog.open({ type: 'site_alert', custom_popup: result.html, width: 800 });
} else {
alert(result.msg);
}
}
});
};
var setReviewCarousel = function () {
var checkWidth = $(window).width();
var owl = $('._review_modal_body .owl-carousel');
if (checkWidth > 768) {
owl.owlCarousel({
'loop': owl.children().length > 1,
'margin': 0,
'nav': false,
'items': 1
});
}
};
var setReviewClass = function (idx) {
if (idx <= 0) {
$body.toggleClass('no-images', true);
$body.find('.modal_prod_detail.review .modal-content').toggleClass('clearfix', true);
} else {
$body.toggleClass('no-images', false);
$body.find('.modal_prod_detail.review .modal-content').toggleClass('clearfix', false);
}
};
var setReviewBtnAnimation = function () {
var $btn_nav = $body.find('._btn_nav');
setTimeout(function () {
$btn_nav.attr('aria-hidden', true);
}, 3000);
$body.find('.modal-left').off('touchstart').on('touchstart', function () {
$btn_nav.attr('aria-hidden', false);
setTimeout(function () {
$btn_nav.attr('aria-hidden', true);
}, 3000);
});
};
var setReviewSwipe = function (prev_idx, next_idx) {
$body.find('._review_modal_body').swipe({
swipe: function (event, direction, distance, duration, fingerCount, fingerData) {
if (direction == 'left') {
if (next_idx > 0) {
$('body').find('._btn_nav_wrap').remove();
changeReviewDetail(next_idx);
}
} else if (direction == 'right') {
if (prev_idx > 0) {
$('body').find('._btn_nav_wrap').remove();
changeReviewDetail(prev_idx);
}
}
},
threshold: 0,
allowPageScroll: 'vertical',
excludedElements: 'button, a, textarea, input'
});
};
var showSeeMoreButton = function () {
$prod_detail_content_pc.toggleClass('active', true);
$prod_detail_content_mobile.toggleClass('active', true);
};
var hideSeeMoreButton = function () {
$prod_detail_content_pc.toggleClass('active', false);
$prod_detail_content_mobile.toggleClass('active', false);
};
var openRequireSelect = function (option_code) {
var $form_select = $('._form_select_wrap_' + option_code);
var $goods_wrap = $body.find('#goods_wrap');
$form_select.addClass('open');
if ($('body').hasClass('mobile_focus_on')) {
$('body').removeClass('mobile_focus_on');
}
var top = Math.floor($form_select.offset().top); // 셀렉트 박스의 위치
var scroll_top = Math.floor($goods_wrap.scrollTop()); // 컨테이너의 스크롤 top 위치
var position_top = $('#option_' + option_code).position().top;
var height = Math.floor($('.opt-group').height()); // 스크롤 영역의 높이
var default_value = 180;
$form_select.parent('._form_parent').nextAll().toggleClass('disabled', true);
if (top - height >= default_value) {
$goods_wrap.animate({ scrollTop: position_top - 50 }, 0);
if (scroll_top >= default_value) {
$goods_wrap.animate({ scrollTop: position_top + $('.option_box_wrap').outerHeight() }, 0);
}
}
};
var addRegularlyCart = function () {
addCart(function () {
$add_cart_alarm.show();
});
};
var toggleWishButtons = function($wishButtons, wishCount, showWishCount, isActive) {
const handleRoot = ($root) => {
if (isActive) {
$root.addClass('active');
} else {
$root.removeClass('active');
}
}
const handleIcon = ($root) => {
const $icon = $($root).find('._wish_button_icon');
if (isActive) {
$icon.removeClass('im-ico-like');
$root.addClass('active');
$icon.addClass('im-ico-liked');
} else {
$icon.removeClass('im-ico-liked');
$root.removeClass('active');
$icon.addClass('im-ico-like');
}
}
const handleText = ($root) => {
const $label = $($root).find('._wish_button_count_label');
if (showWishCount) {
$label.text(wishCount);
} else {
$label.text('');
}
}
$wishButtons.each(($idx, root) => {
const $root = $(root);
handleRoot($root);
handleIcon($root);
handleText($root);
});
}
var moveOrder = function (type, backurl, params) {
USE_OMS ? OMS_addOrder(type, backurl, params) : addOrder(type, backurl, params);
};
var addAndMoveCart = function () {
addCart(function () {
moveCart();
});
};
var hideConfirmOrderWithCartItems = function () {
if($confirm_order_with_cart_alarm) $confirm_order_with_cart_alarm.hide();
}
/**
* 장바구니에 상품이 있는지 체크해서 있으면 장바구니 상품 구매유도 알럿을 띄우고 아니면 바로 주문으로 이동하는 메소드입니다.
*/
var confirmOrderWithCartItems = function (type, backurl, params) {
if (!options.is_price_view_permission &&
window.IS_GUEST &&
cm_data.use_login_popup === 'Y' &&
options.is_using_nomember_order_login_after
) {
// 구매 권한이 전체가 아닌 상품을 비회원이 구매 하려는 경우 사이트 공통 디자인이 로그인 모달을 사용중이라면 비회원 바로구매 기능이 켜져있는 경우 로그인 모달을 띄워준다.
// 비회원 바로 구매기능이 켜져있지 않다면, site_ui.cls 의 getAnchor 함수를 통해 로그인이 모달이 필요한 상황에 로그인 모달을 표시할 수 있지만,
// 비회원 바로 구매기능이 켜져있는 경우에는 로그인 모달을 보여주는 처리를 해주고 있지 않기 때문.
// site_ui.cls 의 getAnchor 함수에서 해당 로직을 처리하지 않는 이유는 getAnchor 함수는 $params 인자로 받는 도착지 url의 상품 또는 상품 카테고리에 대한 정보를 얻을 수 없기 때문
window.SITE_MEMBER.openLogin(
encodeURIComponent(base64Encode(window.location.href)),
'payment',
_confirmOrderWithCartItems,
'N',
'payment',
);
} else {
_confirmOrderWithCartItems()
}
function _confirmOrderWithCartItems () {
cart_type = $('input[name=add_cart_type]:checked').val() || 'normal';
params = params || {}; // 기본값 설정
var isOrderTypeRegularly = cart_type === 'regularly' ;
// 단일 상품 주문할 경우
var onMoveOrder = params.onMoveOrder || function () {
moveOrder(type, backurl, params);
hideConfirmOrderWithCartItems();
};
var onMoveCart = params.onMoveCart || function () {
addAndMoveCart();
hideConfirmOrderWithCartItems();
}
// 장바구니가 비어있는지 체크 api 호출
$.ajax({
type: 'POST',
url: '/shop/check_cart_empty.cm',
dataType: 'json',
data: {
'prodIdx': current_prod_idx,
'options': selected_options,
'orderCount': order_count,
'deliv_type': $deliv_type,
'deliv_pay_type': $deliv_pay_type,
'cart_type': cart_type
},
cache: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
// 카트에 상품이 있으며 정기결제 상품이 아닐 경우 장바구니 추가 구매유도 알럿을 띄움
if (result.cart_count > 0 && !isOrderTypeRegularly) {
if(result.isGuest) return moveOrder(type, backurl, params);
// 장바구니 추가 구매유도 다이얼로그 띄우기
$confirm_order_with_cart_alarm.show();
$confirm_order_with_cart_alarm.off('click').click(function (e) {
// 백그라운드 클릭시 다이얼로그 종료 dom에 직접 걸기에는 스타일링을 수정해야 해서 별도로 이벤트 걸어줌
if(this === e.target) hideConfirmOrderWithCartItems();
})
$confirm_order_with_cart_alarm.find('#move_to_cart').off('click').click(function () {
onMoveCart();
});
$confirm_order_with_cart_alarm.find('#buy_now').off('click').click(function () {
onMoveOrder();
});
} else {
if(params.onMoveOrder) onMoveOrder(type, backurl, params);
else moveOrder(type, backurl, params);
}
} else {
if(params.onMoveOrder) onMoveOrder(type, backurl, params);
else moveOrder(type, backurl, params);
}
},
error: function () {
moveOrder(type, backurl, params);
}
});
}
}
return {
addProdWish: function (prod_code, back_url) {
addProdWish(prod_code, back_url);
},
/** type (prod/cart) */
increaseOptionCount: function (optNo, type) {
increaseOptionCount(optNo, function () {
updateSelectedOptions(type);
});
},
/** type (prod/cart) */
decreaseOptionCount: function (optNo, type) {
decreaseOptionCount(optNo, function () {
updateSelectedOptions(type);
});
},
/** type (prod/cart) */
increaseProdAdditionalOptionCount: function (optNo) {
increaseProdAdditionalOptionCount(optNo, function () {
updateSelectedOptions('prod');
});
},
/** type (prod/cart) */
decreaseProdAdditionalOptionCount: function (optNo) {
decreaseProdAdditionalOptionCount(optNo, function () {
updateSelectedOptions('prod');
});
},
// initDetail : function(prodIdx, price, requireOptionCnt, use_np_mobile, use_lazyload, tab_type,is_site_page, prod_type, is_prod_detail_page, view_price, cm_data, section_code){
// initDetail(prodIdx, price, requireOptionCnt, use_np_mobile, use_lazyload, tab_type,is_site_page, prod_type, is_prod_detail_page, view_price, cm_data, section_code);
// },
initDetail: function (option) {
initDetail(option);
},
initProdStock: function (stock_use, stock, stock_un_limit) {
initProdStock(stock_use, stock, stock_un_limit);
},
initLocalize: function (code) {
initLocalize(code);
},
selectOption: function (prod_idx, optList, require, count, success, failed) {
selectOption(prod_idx, optList, require, count, function () {
success();
}, function (msg) {
failed(msg);
});
},
removeSelectedOption: function (optNo, type) {
removeSelectedOption(optNo, function () {
selected_require_options = []; // 선택된 필수 옵션 초기화
loadOption(type, current_prod_idx); // 옵션을 다시 로드함
updateSelectedOptions(type);
});
},
removeSelectedProdAdditional: function (prodIdx, type) {
removeSelectedProdAdditional(prodIdx, function () {
loadProdAdditional(current_prod_idx); // 옵션을 다시 로드함
updateSelectedOptions(type);
});
},
removeSelectedProdAdditionalOption: function (optNo, type) {
removeSelectedProdAdditionalOption(optNo, function () {
loadProdAdditional(current_prod_idx); // 옵션을 다시 로드함
updateSelectedOptions(type);
});
},
selectRequireOption: function (type, prod_idx, option_code, value_code, value_name, success) {
selectRequireOption(type, prod_idx, option_code, value_code, value_name, function () {
success();
});
},
selectProdAdditionalRequireOption: (prod_idx, option_code, value_code, value_name, success) => {
var data = { 'value_type': 'SELECT', 'option_code': option_code, 'value_code': value_code, 'value_name': value_name };
var no = findSelectedProdAdditionalRequireOption(option_code);
/* @TODO selected_require_options 세분화해야 함(아니면 option_code만으로 구분 가능하게 처리하거나 -> length 비교하므로 분리되어야 하는 게 맞음 */
if (no == -1) {
if (value_code == '') return;
/** 처음 선택된 옵션인 경우 새로 추가*/
selected_prod_additional_require_options.push(data);
} else {
if (value_code == '') {
/** 옵션 삭제 */
selected_prod_additional_require_options.splice(no, (selected_prod_additional_require_options.length - no));
} else {
selected_prod_additional_require_options[no] = data;
/** 이미 선택된 옵션인 경우 기존 값 교체 */
if (no < selected_prod_additional_require_options.length - 1) {
selected_prod_additional_require_options.splice(no + 1, (selected_prod_additional_require_options.length - (no + 1)));
}
}
}
if (selected_prod_additional_require_options.length == prod_additional_require_option_count[prod_idx]) {
/** 필수 옵션이 모두 선택되었을 경우*/
selectProdAdditionalOption(prod_idx, selected_prod_additional_require_options, true, 1, function () {
if(is_mobile_width){
imSheet.close('prod_additional_sheet');
}
current_select_additional_prod_idx = 0;
selected_prod_additional_require_options = [];
$prod_additional_options.html('');
$('#prod_additional_drop_menu_content').text(getLocalizeString('타이틀_추가상품', '', '추가 상품')); // PC
$('#btnProdAdditionalSelect').text(getLocalizeString('타이틀_추가상품', '', '추가 상품')); // 모바일
success();
}, function (msg) {
alert(msg);
});
} else {
/** 필수옵션 선택이 아직 끝나지 않았을 경우 옵션 재로드 */
loadProdAdditionalOptions(prod_idx);
}
},
selectAdditionalProduct: (product_idx, price, name, maximum_purchase_quantity, member_maximum_purchase_quantity, maximum_purchase_quantity_type, optional_limit, optional_limit_type, stock_use, stock, stock_unlimit, option_mix_type, prod_type, period_discount_flag, period_discount_data, period_discout_group_list, membership_discount) => {
// 수량을 조절할 수 없는 상품(디지털/이용권 상품인데 옵션이 없는 경우)이 이미 추가된 상태에서 다시 선택할 시 얼럿 노출
const prod_additional_found = selected_prod_additionals.find(v=>v.idx===product_idx);
if(prod_type !== SHOP_CONST.PROD_TYPE.NORMAL && prod_additional_found){
if(selected_prod_additional_options.filter((option) => option.prod_idx == product_idx).length === 0){
// 옵션이 있다면 기존에 추가 시에 옵션도 함께 등록되게 됨
alert(getLocalizeString("설명_이미선택된상품입니다", "", "이미 선택된 상품입니다."));
return false;
}
}
let unselected = [];
Object.keys(prod_additional_require_option_count).map((key) => {
if (prod_additional_require_option_count[key] > 0) {
if(selected_prod_additional_options.filter((option) => option.prod_idx == key)[0]?.options?.length < prod_additional_require_option_count[key]){
unselected.push(key);
}
}
}
);
if(unselected.length > 0){
Object.keys(unselected).map((key) => {
if (prod_additional_require_option_count[key] > 0) {
selected_prod_additionals = selected_prod_additionals.filter((prod_additional) => prod_additional.idx != key);
selected_prod_additional_options = selected_prod_additional_options.filter((option) => option.prod_idx != key);
delete prod_additional_require_option_count[key];
}
});
}
// @TODO 기존 추가 상품 옵션 초기화, 추가 상품 완료가 안되었다면 selected_prod_additionals에서도 빠져야 함
selected_prod_additional_require_options = [];
if(prod_additional_found) {
prod_additional_found.count++;
}else{
selected_prod_additionals.push({idx: product_idx, price, name, maximum_purchase_quantity, member_maximum_purchase_quantity, maximum_purchase_quantity_type, optional_limit, optional_limit_type, stock_use, stock, stock_unlimit, option_mix_type, prod_type, membership_discount, count: 1});
setProdAdditionalPeriodDiscountData(product_idx, period_discount_flag, period_discount_data, period_discout_group_list);
}
current_select_additional_prod_idx = product_idx;
if(is_mobile_width){
// 상품을 선택했을 때 1depth에는 옵션 목록을 띄우고 2depth에는 다음 옵션 시트를 띄움
// @TODO 1depth 모든 옵션 추가(선택 옵션 포함) > 열리지는 않게 처리하면 될 듯
loadOption('prod', current_prod_idx); // 옵션을 다시 로드함
loadProdAdditionalOptions(product_idx);
}else{
loadOption('prod', current_prod_idx); // 옵션을 다시 로드함
loadProdAdditionalOptions(product_idx);
}
},
selectOptionalOption: function (prod_idx, option_code, value_code, value_name, success) {
selectOption(prod_idx, [{
'value_type': 'SELECT',
'option_code': option_code,
'value_code': value_code,
'value_name': value_name
}], false, 1, function () {
success();
}, function (msg) {
alert(msg);
});
},
selectProdAdditionalOptionalOption: function (prod_idx, option_code, value_code, value_name, success) {
selectProdAdditionalOption(prod_idx, [{
'value_type': 'SELECT',
'option_code': option_code,
'value_code': value_code,
'value_name': value_name
}], false, 1, function () {
success();
if(is_mobile_width){
imSheet.close('prod_additional_sheet');
}
}, function (msg) {
alert(msg);
});
},
/** type (prod/cart) */
changeOptionCount: function (optNo, optCount, type) {
changeOptionCount(optNo, optCount, function () {
updateSelectedOptions(type);
});
},
"getCurrentProdNo": function () {
return getCurrentProdNo();
},
"saveSelectedProd": function () {
saveSelectedProd();
},
"setSelectedProd": function (is_set) {
setSelectedProd(is_set);
},
addOrder: function (type, backurl, params) {
addOrder(type, backurl, params);
},
addGiftOrder: function (type, backurl, params) {
// 선물하기 구매 플래그 활성화
is_gift_buy = true;
this.addOrder(type, backurl, params);
// 선물하기 구매 플래그 비활성화
is_gift_buy = false;
},
addCart: function () {
addCart(function () {
$add_cart_alarm.show();
});
},
addAndMoveCart: function () {
addAndMoveCart();
},
"digitalFileDownload": function (order_no) {
digitalFileDownload(order_no);
},
updateSelectedOptions: function (type) {
updateSelectedOptions(type);
},
checkOptionLength: function (target, limit) {
checkOptionLength(target, limit);
},
getSelectedOption: function () {
return selected_options;
},
changeOrderCount: function (type, count, success, is_alert) {
return changeOrderCount(type, count, success, is_alert);
},
changeProdAdditionalOrderCount: function (no, type, count, success, is_alert) {
return changeProdAdditionalOrderCount(no, type, count, success, is_alert);
},
selectCartType: function (type) {
return selectCartType(type);
},
checkProdStock: function (cnt) {
return checkProdStock(cnt);
},
increaseOrderCount: function (type, success) {
return increaseOrderCount(type, success);
},
decreaseOrderCount: function (type, success) {
return decreaseOrderCount(type, success);
},
increaseProdAdditionalOrderCount: function (no, type, success) {
return increaseProdAdditionalOrderCount(no, type, success);
},
decreaseProdAdditionalOrderCount: function (no, type, success) {
return decreaseProdAdditionalOrderCount(no, type, success);
},
showMobileOptions: function (type) {
return showMobileOptions(type);
},
changeValueChecked: function (type) {
return changeValueChecked(type);
},
showMobileFirstSelect: function () {
return showMobileFirstSelect();
},
hideMobileOptions: function () {
return hideMobileOptions();
},
showPCOptions: function (type, backurl) {
return showPCOptions(type, backurl, false);
},
hidePCOptions: function () {
return hidePCOptions();
},
socialBtnResize: function () {
return socialBtnResize();
},
externalwidgetWrapResize : function(target, pc_position, mo_position) {
return externalwidgetWrapResize(target, pc_position, mo_position);
},
changeContentTab: function (type, r_p, q_p, paging_on, only_photo, rating = 0) {
return changeContentTab(type, r_p, q_p, paging_on, only_photo, rating);
},
deleteReviewInTabDisplay: function (prod_code, only_photo) {
deleteReviewInTabDisplay(prod_code, only_photo);
},
changeContentPCTab: function (type, r_p, q_p, paging_on, only_photo, rating = 0 , shop_view_body_width) {
return changeContentPCTab(type, r_p, q_p, paging_on, only_photo, rating, shop_view_body_width);
},
removeReviewHash: function () {
return removeReviewHash();
},
removeQnawHash: function () {
return removeQnawHash();
},
getOnlyPhotoReview: function (only_photo_switch, is_mobile, is_one_page, rating) {
return getOnlyPhotoReview(only_photo_switch, is_mobile, is_one_page, rating);
},
getStarRatingReview: function (only_photo_switch, is_mobile, is_one_page, rating) {
return getStarRatingReview(only_photo_switch, is_mobile, is_one_page, rating);
},
getFirstPhotoReview: function (page) {
return getFirstPhotoReview(page);
},
viewPhotoReviewMore: function (is_mobile, is_one_page) {
return viewPhotoReviewMore(is_mobile, is_one_page);
},
getReviewSummary: function (target) {
return getReviewSummary(target);
},
changeReviewDetail: function (idx) {
return changeReviewDetail(idx);
},
viewReviewDetail: function (idx, r_p, only_photo, is_hash) {
return viewReviewDetail(idx, r_p, only_photo, is_hash);
},
"setMembershipSaleData": function (data, is_main_product_membership_discount) {
setMembershipSaleData(data, is_main_product_membership_discount);
},
"setPeriodDiscountData": function (flag, $data2, group_list) {
setPeriodDiscountData(flag, $data2, group_list);
},
"setProdAdditionalPeriodDiscountData": function (no, flag, $data2, group_list) {
setProdAdditionalPeriodDiscountData(no, flag, $data2, group_list);
},
viewQnaDetail: function (idx, q_p, is_hash) {
return viewQnaDetail(idx, q_p, is_hash);
},
changeProdImageRolling: function (no) {
return changeProdImageRolling(no);
},
startProdImageRolling: function (autoWidth) {
return startProdImageRolling(autoWidth);
},
setOrderCount: function (count) {
order_count = count;
},
getOrderCount: function () {
return order_count;
},
addNPayWish: function () {
return addNPayWish();
},
hideAddCartAlarm: function () {
hideAddCartAlarm();
},
moveCart: function () {
moveCart();
},
loadProductDetail: function (prod_idx) {
loadProductDetail(prod_idx);
},
loadBookingDetail: function (idx, day) {
loadBookingDetail(idx, day);
},
loadOption: function (type, prod_idx) {
return loadOption(type, prod_idx);
},
loadDelivSetting: function (prod_idx, change_country, deliv_type, deliv_pay_type) {
return loadDelivSetting(prod_idx, change_country, deliv_type, deliv_pay_type);
},
changeRequireInputOption: function (type, prod_idx, option_code, msg, success) {
changeRequireInputOption(type, prod_idx, option_code, msg, function () {
success();
});
},
changeProdAdditionalRequireInputOption: function (type, prod_idx, option_code, msg, success) {
changeProdAdditionalRequireInputOption(type, prod_idx, option_code, msg, function () {
success();
});
},
changeInput: function () {
changeInput();
},
changeTab: function (type) {
changeTab(type);
},
countryCodeChange: function (country) {
countryCodeChange(country);
},
DetailItemMake: function (idx, change_country, deliv_type, deliv_pay_type) {
return DetailItemMake(idx, change_country, deliv_type, deliv_pay_type);
},
addDelivType: function (type) {
$deliv_type = type;
},
addDelivPayType: function (type) {
$deliv_pay_type = type;
},
visitFormMake: function () {
$deliv_visit_wrap.show();
},
openProdDetailFromShoppingList: function (idx, back_url, is_prod_detail_page, is_mobile, prod_idx_org) {
return openProdDetailFromShoppingList(idx, back_url, is_prod_detail_page, is_mobile, prod_idx_org);
},
'getReviewQnaCount': function (prod_code) {
return getReviewQnaCount(prod_code);
},
'setReviewQnaCountText': function ($target, count) {
return setReviewQnaCountText($target, count);
},
getReviewCountFromShoppingList: function (prod_code_list) {
return getReviewCountFromShoppingList(prod_code_list);
},
openBuyerReview: function (prod_code) {
return openBuyerReview(prod_code);
},
deleteReviewImage: function (obj) {
return deleteReviewImage(obj);
},
openCouponDownload: function () {
return openCouponDownload();
},
setReviewCarousel: function () {
return setReviewCarousel();
},
setReviewClass: function (idx) {
return setReviewClass(idx);
},
setReviewBtnAnimation: function () {
return setReviewBtnAnimation();
},
setReviewSwipe: function (prev_idx, next_idx) {
return setReviewSwipe(prev_idx, next_idx);
},
showSeeMoreButton: function () {
return showSeeMoreButton();
},
hideSeeMoreButton: function () {
return hideSeeMoreButton();
},
openRequireSelect: function (option_code) {
return openRequireSelect(option_code);
},
addRegularlyCart: function () {
return addRegularlyCart();
},
toggleWishButtons: function($wishButtons, wishCount, isActive) {
return toggleWishButtons($wishButtons, wishCount, isActive);
},
// C3 메서드 추가
OMS_addOrder : function(type, backurl, params){
OMS_addOrder(type, backurl, params);
},
OMS_showPCOptions : function(type, backurl){
return showPCOptions(type, backurl, true);
},
OMS_addGiftOrder: function (type, backurl, params) {
// 선물하기 구매 플래그 활성화
is_gift_buy = true;
this.OMS_addOrder(type, backurl, params);
// 선물하기 구매 플래그 비활성화
is_gift_buy = false;
},
confirmOrderWithCartItems: function (type, backurl, params) {
confirmOrderWithCartItems(type, backurl, params);
},
moveOrder: function () {
moveOrder();
},
hideConfirmOrderWithCartItems: function () {
hideConfirmOrderWithCartItems();
}
};
}();
var SITE_SHOP_CART = function () {
var selectedCartItem = [];
var $cartItemCheckboxList;
var $cartAllCheckBox;
var $shop_cart_list;
var $shop_cart_wish_list;
var $shop_cart_wish_list_empty;
var $changeCartItemLayer;
var $total_price;
var $cart_list_wrap;
var $global_select;
var $cart_result_container;
var is_cart_changed = false;
var currentCartCode = '';
var current_backurl = '';
var currentChangeCartItemCode = '';
var $deliv_country = '';
var add_order_progress_check = false;
var cart_type = '';
var initCart = function (cart_code, backurl, is_regularly, is_c3 = false){
currentCartCode = cart_code;
current_backurl = backurl;
$shop_cart_list = $('#shop_cart_list');
$changeCartItemLayer = $('#shop_cart_change_layer');
$shop_cart_wish_list = $('#shop_cart_wish_list');
$shop_cart_wish_list_empty = $('#shop_cart_wish_list_empty');
$cart_list_wrap = $shop_cart_list.find('._cart_list_wrap');
$global_select = $shop_cart_list.find('._global_select');
var cart_type = SHOP_CONST.CART_TYPE_NORMAL;
if (is_regularly == 'Y') cart_type = SHOP_CONST.CART_TYPE_REGULARLY;
cartListMake(backurl, cart_type, is_c3);
};
/**
* 선택한 항목의 가격 계산
*/
var getSelectedPrice = function (is_regularly) {
$.ajax({
type: 'POST',
data: { 'item_list': selectedCartItem, 'is_regularly': is_regularly },
url: ('/shop/get_cart_price.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
setCartPriceHtml(res['price_data']);
} else {
if (res.res_code != 1) {
alert(res.msg);
}
is_cart_changed = false;
}
}
});
};
var setCartPriceHtml = function (data) {
$total_price = $cart_list_wrap.find('._cart_main_total_price');
$cart_result_container = $cart_list_wrap.find('._cart_result_container');
var $mobile_cart_result_container = $cart_list_wrap.find('._shop_table').find('._cart_result_container');
var $pc_cart_result_container = $cart_list_wrap.find('._cart_result_table').find('._cart_result_container');
$cart_list_wrap.find('._cart_count').text(data['count']);
$cart_result_container.find('._cart_price').html(data['price']);
$cart_result_container.find('._cart_deliv_price').html(data['deliv_price']);
$cart_result_container.find('._cart_membership_discount').html(data['sale_price']);
$cart_result_container.find('._cart_add_point').html(data['add_point']);
$cart_list_wrap.find('._cart_membership_field').toggle(data['membership_price_exist']);
$cart_list_wrap.find('._cart_period_field').toggle(data['period_price_exist']);
$cart_list_wrap.find('._cart_deliv_price_field').toggle(data['count'] !== data['no_deliv_count']);
$cart_list_wrap.find('._cart_period_discount').html(data['period_price']);
if (data['membership_price_exist'] === false && data['period_price_exist'] === false && (data['count'] === data['no_deliv_count'])) {
$cart_list_wrap.find('.im-ico-equals-plain').hide();
$pc_cart_result_container.find('._cart_price_field').hide();
} else {
if (data['only_deliv_price_after']) {
$cart_list_wrap.find('._cart_deliv_price_field').show();
$cart_list_wrap.find('.im-ico-equals-plain').show();
$pc_cart_result_container.find('._cart_price_field').show();
$mobile_cart_result_container.find('._plus_deliv_price').hide();
} else {
$cart_list_wrap.find('.im-ico-equals-plain').show();
$pc_cart_result_container.find('._cart_price_field').show();
}
}
$total_price.html(data['total_price']);
$cart_list_wrap.find('._cart_result_table').show();
};
/**
* 상품 위시리스트 추가 처리
* @param cart_item_list
*/
var addProdWish = function (cart_item_list, is_regularly) {
$.ajax({
type: 'POST',
data: { 'type': 'add', 'cart_item_list': cart_item_list, 'is_regularly': is_regularly },
url: ('/shop/add_prod_wish_cart.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
for (var i = 0; i < cart_item_list.length; i++) {
if (typeof FB_PIXEL != 'undefined') FB_PIXEL.AddToWishlist();
$shop_cart_list.find("._wish_status_" + cart_item_list[i]).addClass('check');
}
loadProdWishList();
} else
alert(res.msg);
}
});
};
/**
* 위시리스트 가져오기
* @param prod_code
*/
var loadProdWishList = function () {
$.ajax({
type: 'POST',
data: { 'type': 'cart' },
url: ('/shop/get_prod_wish_list.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
if (res.count > 0) {
$shop_cart_wish_list_empty.hide();
$shop_cart_wish_list.show().html(res.html);
setTimesale();
} else {
$shop_cart_wish_list_empty.show();
$shop_cart_wish_list.hide();
}
// 크리마 리뷰 사용 중일 시 위젯 호출
if(document.querySelector(".crema-product-reviews")){
if(typeof crema !== 'undefined'){
crema.run();
}
}
} else
alert(res.msg);
}
});
};
/**
* 위시리스트 제거
* @param cart_item_list
*/
var deleteProdWish = function (cart_item_list, is_regularly) {
$.ajax({
type: 'POST',
data: { 'type': 'delete', 'cart_item_list': cart_item_list, 'is_regularly': is_regularly },
url: ('/shop/add_prod_wish_cart.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
for (var i = 0; i < cart_item_list.length; i++) {
$shop_cart_list.find("._wish_status_" + cart_item_list[i]).removeClass('check');
}
loadProdWishList();
} else
alert(res.msg);
}
});
};
/**
* 위시리스트 제거 (상품코드사용
* @param prod_code
*/
var deleteProdWishByProdCode = function (prod_code) {
$.ajax({
type: 'POST',
data: { 'type': 'delete_prodcode', 'prod_code': prod_code },
url: ('/shop/add_prod_wish_cart.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
if ($('#wish-item-' + prod_code).length > 0) {
$('#wish-item-' + prod_code).remove();
} else {
window.location.reload();
}
} else
alert(res.msg);
}
});
};
/**
* 특정 카트 아이템 삭제
*/
var removeCartItem = function (item_codeList, is_regularly) {
$.ajax({
type: 'POST',
data: { 'item_codeList': item_codeList, 'is_regularly': is_regularly },
url: ('/shop/remove_cart_item.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof AW_DEL != 'undefined') {
for (var i = 0; i < item_codeList.length; i++) {
var itme_info = result.delete_cart_info[item_codeList[i]];
AW_DEL(itme_info['prod_no'], itme_info['count']);
}
}
if (typeof AM_DEL != 'undefined') {
for (var i = 0; i < item_codeList.length; i++) {
var itme_info = result.delete_cart_info[item_codeList[i]];
AM_DEL(itme_info['prod_no'], itme_info['count']);
}
}
if (typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.updateChannelProfileAttr('cart');
if (is_regularly == 'Y') window.location.href = "/shop_cart?type=regularly";
else window.location.href = "/shop_cart";
} else {
alert(result.msg);
}
}
});
};
/**
* 품절된 상품만 삭제
* @param item_codeList
* @param is_regularly
*/
var removeSelectedCartSoldOutItem = function (item_codeList, is_regularly) {
$.ajax({
type: 'POST',
data: { 'item_codeList': item_codeList, 'is_regularly': is_regularly },
url: ('/shop/remove_cart_soldout_item.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof AW_DEL != 'undefined') {
for (var i = 0; i < item_codeList.length; i++) {
var item_info = result.delete_cart_info[item_codeList[i]];
if (typeof item_info != 'undefined') AW_DEL(item_info['prod_no'], item_info['count']);
}
}
if (typeof AM_DEL != 'undefined') {
for (var i = 0; i < item_codeList.length; i++) {
var item_info = result.delete_cart_info[item_codeList[i]];
if (typeof item_info != 'undefined') AM_DEL(item_info['prod_no'], item_info['count']);
}
}
if (typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.updateChannelProfileAttr('cart');
if (is_regularly == 'Y') window.location.href = "/shop_cart?type=regularly";
else window.location.href = "/shop_cart";
} else {
alert(result.msg);
}
}
});
};
/**
* 특정 카트 아이템 삭제
*/
var removeCartItemOption = function (item_code, optionNo, is_regularly) {
$.ajax({
type: 'POST',
data: { 'item_code': item_code, 'optionNo': optionNo, 'is_regularly': is_regularly },
url: ('/shop/remove_cart_item_option.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
window.location.reload();
} else {
alert(result.msg);
}
}
});
};
/**
* 체크박스 전체 선택 제어
* @param bool b
*/
var toggleAllCheckCartItem = function (b, is_regularly) {
$cart_list_wrap.find('._cartItemCheckbox').each(function () {
$(this).prop('checked', (b === true));
});
CartItemChanged(is_regularly);
};
/**
* 체크박스 선택 제어
*/
var toggleCheckCartItem = function (is_regularly) {
var $cartItemCheckbox = $cart_list_wrap.find('._cartItemCheckbox');
var $cartItemCheckboxSeleted = $cart_list_wrap.find('._cartItemCheckbox:checked');
$cart_list_wrap.find('._all_check').prop('checked', ($cartItemCheckbox.length == $cartItemCheckboxSeleted.length));
CartItemChanged(is_regularly);
};
/**
* 체크박스 변경시 재계산
*/
var CartItemChanged = function (is_regularly) {
// 초기화
selectedCartItem = [];
$cart_list_wrap.find('._cartItemCheckbox:checked').each(function () {
selectedCartItem.push($(this).val());
});
getSelectedPrice(is_regularly);
};
/**
* 전체 선택인지 아닌지 체크
*/
var toggleAllSelectCk = function () {
var $cartItemSelectCount = 0;
$cartItemCheckboxList = $shop_cart_list.find("input._cartItemCheckbox");
$cartAllCheckBox = $shop_cart_list.find("input._all_check");
$cartItemCheckboxList.each(function () {
if ($(this).is(":checked") === true) {
$cartItemSelectCount++;
}
});
if ($cartItemCheckboxList.length == $cartItemSelectCount) {
$cartAllCheckBox.prop('checked', true);
} else {
$cartAllCheckBox.prop('checked', false);
}
};
/**
* 카트 전체 주문하기, C3 분기 추가
* @param direct true/false (선택유무와 상관없이 바로 주문)
*/
var addOrderWithCart = function (type, item_code, backurl, direct, is_oms, params){
if (is_cart_changed) return false;
if (add_order_progress_check) return false;
if (currentCartCode == '') {
alert(LOCALIZE.설명_장바구니가비어있습니다());
return false;
}
//type 이 guest_login 으로 넘어오는경우 비회원주문+로그인페이지로이동후주문 방식임 type 을 normal 로처리해야 다른 로직에 영향이 없어 이렇게 처리함
var is_guest_login = false;
if (type == 'guest_login') {
is_guest_login = true;
type = 'normal';
}
var item_code_list = [];
if (item_code == '')
item_code_list = selectedCartItem;
else
item_code_list = [item_code];
if (item_code_list.length <= 0) {
alert(LOCALIZE.설명_주문하실상품을선택해주세요());
return false;
}
add_order_progress_check = true;
var _data = {
'type': type,
'cart_code': currentCartCode,
'item_code_list': item_code_list,
'backurl': backurl,
'direct': (direct ? 'Y' : 'N')
};
if(is_oms){
if (localStorage.getItem("selectedDeliveryCountry") === "undefined") {
localStorage.removeItem("selectedDeliveryCountry");
}
if (typeof $deliv_country !== 'undefined') {
localStorage.setItem("selectedDeliveryCountry", $deliv_country);
}
_data.infoUrl = location.origin;
}
_data.ace_pid = window._AcePID || window._AceMID;
const [orderBtn, orderRegularlyBtn] = [$('._btn_order'), $('._btn_order_regularly')];
const [orderBtnText, orderRegularlyBtnText] = [orderBtn.first().text(), orderRegularlyBtn.first().text()];
const setSpinner = function ($buttons) {
const spinner = '
';
if (Array.isArray($buttons)) {
for (const $button of $buttons) {
if ($button.length > 0) {
$button.html(spinner);
}
}
} else {
if ($buttons.length > 0) {
$buttons.html(spinner);
}
}
}
const unsetSpinner = function ($btn, text) {
if ($btn.length > 0) {
$btn.text(text);
}
}
$.ajax({
type: 'POST',
data: _data,
url: is_oms ? '/shop/oms/OMS_add_order_cart.cm' : "/shop/add_order_cart.cm",
dataType: 'json',
cache: false,
beforeSend: function () {
// 간편결제 버튼은 PG사 정책 우려로 인해 스피너 적용하지 않음
if (type === 'npay' || type === 'talkpay') {
return;
}
// 주문하기, 정기구독 버튼에 로딩 스피너 추가
setSpinner([orderBtn, orderRegularlyBtn]);
},
error: function () {
// 주문하기 버튼에 로딩 스피너 제거
unsetSpinner(orderBtn, orderBtnText);
// 정기구독 버튼에 로딩 스피너 제거
unsetSpinner(orderRegularlyBtn, orderRegularlyBtnText);
},
success: function (result) {
if (result.msg == 'SUCCESS') {
// 페이지가 이동하는 동작의 시각적 연결성을 위해 성공 시에는 스피너를 초기화 하지 않는다.
switch (type) {
case 'npay':
if (result.npay_url == '') {
if (result.errmsg) {
alert(escape_javascript(result.errmsg));
} else {
alert(LOCALIZE.설명_네이버페이상품구매실패(escape_javascript(result.errmsg)));
}
} else {
if (!!result.shopping_additional_price_msg) {
alert(result.shopping_additional_price_msg);
}
if (result.advanced_kakao_trace_data != null) {
$('body').append(result.advanced_kakao_trace_data);
}
if (result.auth_type == 2) {
// 성인 인증이 필요할 경우
window.location.href = '/?mode=adult_auth_npay&data=' + result.data;
} else {
// 성인 인증이 필요하지 않는 경우
// 네이버 페이 구매시 전환추적 추가
var npay_order_info = result['npay_order_info'];
if (typeof FB_PIXEL != 'undefined') {
FB_PIXEL.InitiateCheckout(result.ic_event_id, result.total_price, result.currency, result.fb_external_id);
if (result.fb_npay_switch === 'Y') FB_PIXEL.addNpayOrder(npay_order_info);
}
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.AddOrder();
if (result.google_analytics_type == 'G' && result.is_ga_api_secret === false) {
if (typeof GOOGLE_ANAUYTICS != 'undefined') GOOGLE_ANAUYTICS.addNpayOrder(npay_order_info);
}
if (typeof GOOGLE_ADWORDS_TRACE != 'undefined' && result.google_ads_include_npay === 'Y') GOOGLE_ADWORDS_TRACE.addNpayOrder(npay_order_info);
if (typeof CRITEO != 'undefined') CRITEO.npayTrackTransaction(npay_order_info);
if (typeof NP_NDA != 'undefined') NP_NDA.BeginCheckout(result.prod_code_list);
window.location.href = result.npay_url;
}
}
break;
case 'talkpay':
switch (params.type) {
case 'onOrder':
if (result.msg == 'SUCCESS') {
if (result.order_sheet_id) {
params.onSuccess(result.order_sheet_id);
} else {
params.onFailure({ message: result.msg });
}
} else {
params.onFailure({ message: result.msg });
}
break;
case 'onPayOrder':
if (result.msg == 'SUCCESS') {
if (typeof FB_PIXEL != 'undefined') FB_PIXEL.InitiateCheckout(result.ic_event_id, result.total_price, result.currency, result.fb_external_id);
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.AddOrder();
if (typeof NP_NDA != 'undefined') NP_NDA.BeginCheckout(result.prod_code_list);
var shop_payment_url = "/shop_payment/?order_code=" + encodeURIComponent(result.order_code) + '&order_no=' + encodeURIComponent(result.order_no);
if ( result.kakaopay_only === 'Y' ) {
shop_payment_url += "&kakaopay_only=Y";
}
window.location.href = shop_payment_url;
}
break;
};
add_order_progress_check = false;
break;
default:
if (typeof FB_PIXEL != 'undefined') FB_PIXEL.InitiateCheckout(result.ic_event_id, result.total_price, result.currency, result.fb_external_id);
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.AddOrder();
if (typeof NP_NDA != 'undefined') NP_NDA.BeginCheckout(result.prod_code_list);
if (is_guest_login) { //비회원주문시 로그인 페이지로 이동처리
window.location.href = '/login?shopping_order_code=' + result.order_code + '&back_url=' + encodeURIComponent(result.back_url_base64);
} else { //일반주문인경우 결제화면으로 이동
if (is_oms) {
if (typeof result.c3_result === "undefined" || typeof result.c3_result.orderCode === 'undefined' || result.c3_result.orderNo === 'undefined') return
window.location.href = "/shop_payment/?order_code=" + encodeURIComponent(result.c3_result.orderCode) + "&order_no=" + encodeURIComponent(result.c3_result.orderNo);
} else {
window.location.href = "/shop_payment/?order_code=" + encodeURIComponent(result.order_code);
}
}
}
} else {
// 주문하기 버튼에 로딩 스피너 제거
unsetSpinner(orderBtn, orderBtnText);
// 정기구독 버튼에 로딩 스피너 제거
unsetSpinner(orderRegularlyBtn, orderRegularlyBtnText);
if (type == 'talkpay') {
switch (params.type) {
case 'onOrder':
params.onFailure({ message: result.msg });
break;
case 'onPayOrder':
alert(result.msg);
break;
}
} else {
if(result.code === 2){
$('._deliv_country_selector').toggleClass('warning_select');
}
alert(result.msg);
if (is_guest_login && result.code === 11) {
var back_url_base64 = window.location.pathname;
var url_param = document.location.href.split("?");
if (url_param.length > 1) {
back_url_base64 += "?" + url_param[1];
}
window.location.href = '/login?back_url=' + encodeURIComponent(btoa(back_url_base64));
}
}
/*
새로고침 할 필요가 없음..! (문제 시 롤백해야함)
location.reload();
*/
add_order_progress_check = false;
}
}
});
};
var addOrderRegularly = function (backurl, params, is_c3 = false){
addOrderWithCart('regularly', '', backurl, false, is_c3, params);
};
/**
* 카트 전체 네이버찜등록
*/
var addNPayWishWithCart = function (item_code) {
if (currentCartCode == '') {
alert(LOCALIZE.설명_장바구니가비어있습니다());
return false;
}
$.ajax({
type: 'POST',
data: { 'cart_code': currentCartCode, 'item_code': item_code },
url: ('/shop/add_npay_wish_cart.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
if (result.npay_url == '')
alert(LOCALIZE.설명_네이버페이찜등록실패(escape_javascript(result.errmsg)));
else {
if (result.mobile == 'Y')
window.location.href = result.npay_url;
else
window.open(result.npay_url);
}
} else {
alert(result.msg);
}
}
});
};
/**
* 장바구니 옵션변경 화면 표시
*/
var showChangeCartItem = function (item_code, is_regularly) {
$.ajax({
type: 'POST',
data: { 'item_code': item_code, 'is_regularly': is_regularly },
url: ('/shop/change_cart_item_request.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
$changeCartItemLayer.find('div.container-fluid').html(result.html);
$changeCartItemLayer.show();
SITE_SHOP_DETAIL.initDetail({
prod_idx: result.prodIdx,
prod_price: result.price,
require_option_count: result.require_option_count,
use_image_optimizer_on_product_detail_markup: false,
shop_use_full_load: false,
});
SITE_SHOP_DETAIL.initProdStock(result.prod_stock.stock_use, result.prod_stock.stock_no_option, result.prod_stock.stock_unlimit);
SITE_SHOP_CART.changeCartLoadOption(result.prodIdx);
var selected_option_count = result.selected_option_list.length;
var cnt = 0;
currentChangeCartItemCode = item_code;
$.each(result.selected_option_list, function (no, data) {
SITE_SHOP_DETAIL.selectOption(result.prodIdx, data.options, data.require, data.count, function () {
cnt++;
if (cnt >= selected_option_count) SITE_SHOP_DETAIL.updateSelectedOptions('cart');
}, function () {
cnt++;
if (cnt >= selected_option_count) SITE_SHOP_DETAIL.updateSelectedOptions('cart');
});
});
if (result.require_option_count == 0) {
SITE_SHOP_CART.changeCartOrderCount("pc", result.count, false);
SITE_SHOP_CART.changeCartOrderCount("mobile", result.count, false);
}
} else {
alert(result.msg);
}
}
});
};
var hideChangeCartItem = function () {
$changeCartItemLayer.find('div.container-fluid').empty();
$changeCartItemLayer.hide();
currentChangeCartItemCode = '';
};
/**
* 장바구니 옵션 변경 완료 처리
*/
var changeCartItemComplete = function (current_ul, is_c3 = false) {
var is_regularly = 'N';
if (cart_type == SHOP_CONST.CART_TYPE_REGULARLY) {
is_regularly = 'Y';
}
if (currentChangeCartItemCode != '') {
changeCartItemData({
"mode": "detail",
"item_code": currentChangeCartItemCode,
"options": SITE_SHOP_DETAIL.getSelectedOption(),
"order_count": SITE_SHOP_DETAIL.getOrderCount(),
"is_regularly": is_regularly,
"current_ul": current_ul
}, is_c3);
}
};
var changeCartItemDelivType = function (item_code, deliv_type, is_regularly, is_c3 = false) {
changeCartItemData({
"mode": "delivery",
"item_code": item_code,
"deliv_type": deliv_type,
"is_regularly": is_regularly
}, is_c3);
};
var changeCartItemDelivPayType = function (item_code, deliv_pay_type, is_regularly, is_c3 = false) {
changeCartItemData({
"mode": "delivery",
"item_code": item_code,
"deliv_pay_type": deliv_pay_type,
"is_regularly": is_regularly
}, is_c3);
};
var changeCartItemData = function (dt, is_c3 = false) {
if (typeof dt['item_code'] == 'undefined') return false;
$.ajax({
type: 'POST',
data: dt,
url : is_c3 ? '/shop/oms/OMS_change_cart_item.cm' : '/shop/change_cart_item.cm',
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof AW_INOUT != 'undefined') {
AW_INOUT(result.prod_no, result.after_count);
}
if (typeof AM_INOUT !== 'undefined') {
AM_INOUT(result.prod_no, result.after_count);
}
if (typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.updateChannelProfileAttr('cart');
var cart_type = 'N';
if (dt['is_regularly'] == 'Y') {
cart_type = SHOP_CONST.CART_TYPE_REGULARLY;
}
$changeCartItemLayer.hide();
cartListMake(dt['current_url'], cart_type, is_c3);
} else {
alert(result.msg);
}
}
});
};
var countryCodeChange = function (country) {
$deliv_country = country;
$.ajax({
type: 'POST',
data: { 'country': country },
url: ('/shop/country_code_change.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg != "SUCCESS") {
alert(result.msg);
} else {
window.location.reload();
}
}
});
};
/**
* 장바구니 목록 생성 - C3 바로구매 분기 추가
* @param current_full_url
* @param type normal 일반구매, regularly 정기구독
*/
var cartListMake = function (current_full_url, type, is_c3 = false) {
selectedCartItem = [];
$.ajax({
type: 'POST',
data: { 'current_full_url': current_full_url, 'type': type },
url : is_c3 ? '/shop/oms/OMS_get_cart_list_make.cm' : '/shop/get_cart_list_make.cm',
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
$cart_list_wrap.html(res.table_html);
if (res.global_select_html !== '') {
$global_select.html(res.global_select_html);
$deliv_country = $global_select.find('[selected]').val();
} else {
$global_select.remove();
}
if (res.cart_item_count > 0) {
$('.pay-box').show();
$shop_cart_list.removeClass('cart_empty_wrap');
fixedShopTableHeader();
resizeShopTableHeader();
} else {
$('.pay-box').hide();
$shop_cart_list.addClass('cart_empty_wrap');
}
cart_type = type;
if (type === SHOP_CONST.CART_TYPE_REGULARLY) {
currentCartCode = res.cart_code;
$shop_cart_list.find('._btn_order').hide();
$shop_cart_list.find('._btn_order_regularly').css('display', 'flex');
$shop_cart_list.find('._social_pay').hide();
$('#cart_normal_tab').removeClass('active');
$('#cart_regularly_tab').addClass('active');
} else {
currentCartCode = res.cart_code;
$shop_cart_list.find('._btn_order_regularly').hide();
$shop_cart_list.find('._btn_order').css('display', 'flex');
$shop_cart_list.find('._social_pay').show();
$('#cart_regularly_tab').removeClass('active');
$('#cart_normal_tab').addClass('active');
}
getSelectedPrice(type === SHOP_CONST.CART_TYPE_REGULARLY);
} else
alert(res.msg);
is_cart_changed = false;
},
error: function () {
alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
}
});
};
var fixedShopTableHeader = function () {
var window_width = window.innerWidth;
if (window_width < 768) {
var section_fixed_height = getMobileSectionFixedHeight();
var $cart_list_thead = $cart_list_wrap.find('._shop_table thead');
$cart_list_thead.css('top', section_fixed_height + 'px');
}
};
var getMobileSectionFixedHeight = function () {
/* 기본 top을 0px로 설정 시 1px 가량의 여백이 생겨 뒤가 비쳐보이는 경우가 있어 -1px로 설정 */
var section_fixed_height = -1;
var $fixed_header_disable = $('#inline_header_mobile').find('._fixed_header_section');
for (var i = 0; i < $fixed_header_disable.length; i++) {
var target = $fixed_header_disable[i].getBoundingClientRect();
section_fixed_height += target.height;
}
var prev_fixed_section = $shop_cart_list.parents('div[doz_type="section"]').prevAll('._fixed_section[doz_mobile_hide="N"]')[0];
if (typeof prev_fixed_section !== 'undefined') {
section_fixed_height += prev_fixed_section.getBoundingClientRect().height;
}
return section_fixed_height;
};
var resizeShopTableHeader = function () {
var is_resizing = false;
$(window).resize(function () {
if (!is_resizing) {
is_resizing = true;
setTimeout(function () {
fixedShopTableHeader();
is_resizing = false;
}, 100);
}
});
};
var setTimesale = function () {
var $doz_timesale_wrap = $shop_cart_wish_list.find('._doz_timesale_wrap');
if ($doz_timesale_wrap.length > 0) {
$doz_timesale_wrap.each(function () {
var $that = $(this);
var start_time = ($that.find('._doz_timesale').attr('data-start-time') * 1000);
var $doz_timesale = $that.find('._doz_timesale');
var timesale_interval = setInterval(function () {
var remain_ms = ($doz_timesale.attr('data-end-time') * 1000) - start_time;
if (remain_ms > 0) {
var remain_d = Math.floor(remain_ms / 86400000);
var remain_h = Math.floor((remain_ms % 86400000) / 3600000);
var remain_m = Math.floor((remain_ms % 3600000) / 60000);
var remain_s = Math.floor((remain_ms % 60000) / 1000);
var remain_hh = remain_h < 10 ? '0' + remain_h : '' + remain_h;
var remain_mm = remain_m < 10 ? '0' + remain_m : '' + remain_m;
var remain_ss = remain_s < 10 ? '0' + remain_s : '' + remain_s;
if (remain_d >= 1) {
$doz_timesale.text(getLocalizeString('설명_타임세일종료까지n일', [remain_d], '타임세일 종료까지 %1일'));
} else {
$doz_timesale.text(getLocalizeString('설명_종류까지n1시n2분n3초남음', [remain_hh, remain_mm, remain_ss], '종료까지 %1:%2:%3 남음'));
}
start_time = start_time + 1000;
} else {
/* 타임세일 종료 */
clearInterval(timesale_interval);
$that.remove();
}
}, 1000);
});
}
};
return {
initCart: function (cart_code, backurl, is_regularly) {
initCart(cart_code, backurl, is_regularly);
},
loadProdWishList: function () {
loadProdWishList();
},
deleteProdWish: function (cart_item, is_regularly) {
deleteProdWish([cart_item], is_regularly);
},
deleteProdWishByProdCode: function (prod_code) {
deleteProdWishByProdCode(prod_code);
},
addProdWish: function (cart_item, is_regularly) {
addProdWish([cart_item], is_regularly);
},
addProdWishMulti: function (is_regularly) {
if (selectedCartItem.length == 0) {
alert(LOCALIZE.설명_선택한항목이없습니다());
return false;
}
addProdWish(selectedCartItem, is_regularly);
},
removeCartItemOption: function (item_code, optionNo, is_regularly) {
removeCartItemOption(item_code, optionNo, is_regularly);
},
removeCartItem: function (item_code, is_regularly) {
removeCartItem([item_code], is_regularly);
},
removeSelectedCartItem: function (is_regularly) {
if (selectedCartItem.length == 0) {
alert(LOCALIZE.설명_선택한상품이없습니다());
return false;
}
removeCartItem(selectedCartItem, is_regularly);
},
removeSelectedCartSoldOutItem: function (is_regularly) {
if (selectedCartItem.length == 0) {
alert(LOCALIZE.설명_선택한상품이없습니다());
return false;
}
removeSelectedCartSoldOutItem(selectedCartItem, is_regularly);
},
"toggleCheckCartItem": function (is_regularly) {
toggleCheckCartItem(is_regularly);
},
"toggleAllCheckCartItem": function (b, is_regularly) {
toggleAllCheckCartItem(b, is_regularly);
},
addOrderWithCart: function (type, item_code, backurl, params) {
addOrderWithCart(type, item_code, backurl, false, false, params);
},
addOrderWithCartDirect: function (type, item_code, backurl) {
addOrderWithCart(type, item_code, backurl, true, false);
},
addOrderRegularly: function (backurl, params) {
addOrderRegularly(backurl, params, false);
},
showChangeCartItem: function (item_code, is_regularly) {
showChangeCartItem(item_code, is_regularly);
},
hideChangeCartItem: function () {
hideChangeCartItem();
},
changeCartSelectRequireOption: function (prod_idx, option_code, value_code, value_name) {
SITE_SHOP_DETAIL.selectRequireOption('cart', prod_idx, option_code, value_code, value_name, function () {
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
});
},
changeCartChangeRequireInputOption: function (prod_idx, option_code, msg) {
SITE_SHOP_DETAIL.changeRequireInputOption(prod_idx, option_code, msg, function () {
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
});
},
changeCartSelectOptionalOption: function (prod_idx, option_code, value_code, value_name) {
SITE_SHOP_DETAIL.selectOptionalOption(prod_idx, option_code, value_code, value_name, function () {
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
});
},
changeCartItemIncrease: function (optNo, reload) {
SITE_SHOP_DETAIL.increaseOptionCount(optNo, 'cart');
},
changeCartItemDecrease: function (optNo) {
SITE_SHOP_DETAIL.decreaseOptionCount(optNo, 'cart');
},
changeCartIncrease: function (type) {
var o = $changeCartItemLayer.find('input._order_count_' + type);
var curCount = o.val();
if (isNaN(curCount))
curCount = 1;
else
curCount = parseInt(curCount) + 1;
var res = SITE_SHOP_DETAIL.checkProdStock(curCount);
if (res === true) {
o.val(curCount);
SITE_SHOP_DETAIL.setOrderCount(curCount);
} else {
alert(res);
}
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
},
changeCartDecrease: function (type) {
var o = $changeCartItemLayer.find('input._order_count_' + type);
var curCount = o.val();
if (isNaN(curCount))
curCount = 1;
else
curCount = parseInt(curCount) - 1;
if (curCount < 1) curCount = 1;
var res = SITE_SHOP_DETAIL.checkProdStock(curCount);
if (res === true) {
o.val(curCount);
SITE_SHOP_DETAIL.setOrderCount(curCount);
} else {
alert(res);
}
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
},
changeCartOrderCount: function (type, count, is_alert) {
if (is_alert == void 0) is_alert = true;
if (isNaN(count))
count = 1;
else
count = parseInt(count);
if (count < 1) count = 1;
var res = SITE_SHOP_DETAIL.checkProdStock(count);
if (res === true) {
$changeCartItemLayer.find("input._order_count_" + type).val(count);
SITE_SHOP_DETAIL.setOrderCount(count);
} else {
if (is_alert) alert(res);
}
SITE_SHOP_DETAIL.updateSelectedOptions('cart');
},
changeCartItemRemove: function (optNo) {
SITE_SHOP_DETAIL.removeSelectedOption(optNo, 'cart');
},
changeCartItemCount: function (optNo, optCount) {
SITE_SHOP_DETAIL.changeOptionCount(optNo, optCount, 'cart');
},
"changeCartItemDelivType": function (item_code, deliv_type, is_regularly) {
changeCartItemDelivType(item_code, deliv_type, is_regularly);
},
"changeCartItemDelivPayType": function (item_code, deliv_pay_type, is_regularly) {
changeCartItemDelivPayType(item_code, deliv_pay_type, is_regularly);
},
changeCartItemComplete: function (current_ul) {
changeCartItemComplete(current_ul);
},
addNPayWishWithCart: function (item_code) {
addNPayWishWithCart(item_code);
},
addSelectedCartItem: function (item_code) {
selectedCartItem.push(item_code);
},
changeCartLoadOption: function (prod_idx) {
SITE_SHOP_DETAIL.loadOption('cart', prod_idx);
},
cartListMake: function (current_full_url, type) {
cartListMake(current_full_url, type);
},
countryCodeChange: function (country) {
countryCodeChange(country);
},
toggleAllSelectCk: function () {
toggleAllSelectCk();
},
// C3 에 주문을 생성하는 endpoint를 바라보는 함수
C3_initCart : function(cart_code, backurl, is_regularly){
initCart(cart_code, backurl, is_regularly, true);
},
OMS_addOrderWithCart : function(type, item_code, backurl, params){
addOrderWithCart(type, item_code, backurl, false, true, params);
},
OMS_addOrderWithCartDirect : function(type, item_code, backurl){
addOrderWithCart(type, item_code, backurl, true, true);
},
C3_cartListMake : function(current_full_url, type){
cartListMake(current_full_url, type, true);
},
C3_changeCartItemComplete : function(current_ul){
changeCartItemComplete(current_ul, true);
},
C3_changeCartItemDelivType: function(item_code, deliv_type,is_regularly){
changeCartItemDelivType(item_code, deliv_type,is_regularly, true);
},
C3_changeCartItemDelivPayType: function(item_code, deliv_pay_type,is_regularly) {
changeCartItemDelivPayType(item_code, deliv_pay_type,is_regularly, true);
},
};
}();
var SITE_SHOP_REVIEW = function () {
var $review_wrap;
var $mobile_review_wrap;
var $mobile_form;
var $rating;
var $star;
var $m_rating;
var $m_star;
var $comment_body;
var $comment_area;
var review_body;
var $review_container;
var $review_form;
var body_input;
var placeholderText;
var isIOS, isSafari, $fr_m_custom, $write_header, m_sticky_container_trigger_top, $toolbarContainer;
var images = {};
var add_review_wrap;
var is_submit = false;
// 이미지 엑박 여부를 확인하는 함수
const isImageBroken = (img) => {
return img.complete && (img.naturalWidth === 0 || img.naturalHeight === 0);
}
// 이미지를 다시 로드하는 함수
const reloadImage = (img, src) => {
setTimeout(() => {
img.src = src + "?t=" + new Date().getTime(); // 캐시를 피하기 위해 쿼리 스트링 추가
}, 1000);
}
var init = function (code) {
$review_wrap = $('._review_wrap');
$review_form = $('#review_form');
$rating = $('#rating');
$star = $('._star');
$review_form.find('._btn_add_image').toggleClass('no-margin', true);
review_body = $('#review_modal_body');
$review_container = $('#review_container');
body_input = $('#body_input');
placeholderText = $('#placeholderText').val();
$review_form.find('#review_image_upload_btn').fileupload({
url: '/ajax/review_image_upload.cm',
formData: { temp: 'Y', target: 'site_review', type: 'image' },
dataType: 'json',
singleFileUploads: true,
limitMultiFileUploads: 1,
start: function (e, data) {
},
progress: function (e, data) {
},
done: function (e, data) {
$.each(data.result.files, function (e, tmp) {
if (tmp.error == null) {
$review_form.find("#review_image_box").show();
$review_form.find('._btn_add_image').toggleClass('no-margin', false);
const url = CDN_OPTIMIZED_URL + tmp.url + '?w=300';
images[tmp.code] = tmp.url;
const html = '
';
$review_form.find("#review_image_box ._btn_add_image").before(html);
const reviewImage = document.getElementById(`review_${tmp.url}`);
reviewImage.style.display = 'none';
// 이미지 로드 완료 후 확인
reviewImage.onload = reviewImage.onerror = function() {
if (isImageBroken(reviewImage)) {
reloadImage(reviewImage, reviewImage.src);
} else {
reviewImage.style.display = 'block';
}
};
// 만약 이미 이미지가 로드되었으면 즉시 확인
if (reviewImage.complete) {
if (isImageBroken(reviewImage)) {
reloadImage(reviewImage, reviewImage.src);
} else {
reviewImage.style.display = 'block';
}
}
} else {
alert(tmp.error);
}
});
},
fail: function (e, data) {
alert(getLocalizeString("설명_업로드에실패하였습니다", "", "업로드에 실패 하였습니다."));
}
});
};
var deleteReviewImage = function (code) {
if (typeof images[code] != 'undefined') {
delete images[code];
}
$("span._img_" + code).remove();
};
var openAddReview = function (idx, prod_code, prod_order_code, is_c3 = false) {
$.cocoaDialog.close();
$('#myModalReview').modal("hide");//review_remind 모달 id분리로 인한 처리
$.ajax({
type: 'POST',
data: { 'idx': idx, 'prod_code': prod_code, 'prod_order_code': prod_order_code },
url: ('/shop/open_add_review.cm'),
dataType: 'json',
cache: false,
async: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
$.cocoaDialog.open({
type: 'add_review', custom_popup: result.html, 'close_block': true, width: 800, hide_event: function () {
images = {};
}
});
} else {
alert(result.msg);
}
}
});
};
var convertReviewImage = function (image_list) {
$review_form.find('._btn_add_image').toggleClass('no-margin', false);
for (var i = 0; i < image_list.length; i++) {
let html;
images[i] = image_list[i];
if (images[i].indexOf('.mp4') > -1) {
html = '

동영상은
표시할 수 없습니다.
';
} else {
html = '
';
}
$review_form.find("#review_image_box ._btn_add_image").before(html);
}
};
function resizeStickyContainer() {
var s_top = $(this).scrollTop();
if (isIOS && isSafari) {
$write_header.css({ '-webkit-transition': 'top 100ms', 'transition': 'top 100ms', 'top': s_top + 'px' });
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
$fr_m_custom.toggleClass('m_sticky_container_ios', s_top > m_sticky_container_trigger_top);
if (s_top > m_sticky_container_trigger_top) {
$toolbarContainer.css({ '-webkit-transition': 'top 100ms', 'transition': 'top 100ms', 'top': s_top + 'px' });
review_body.find('.fr-view').css('padding-top', '90px');
} else {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 'auto' });
review_body.find('.fr-view').css('padding-top', '');
}
} else {
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
}
$toolbarContainer.find('.fr-toolbar').css('width', review_body.find('.fr-view').width());
if ($(window).width() >= 768) {
if ($review_container.hasClass('bg_on'))
$review_container.find('#toolbarContainer').toggleClass('pc_sticky_toolbar', s_top > 487);
else
$review_container.find('#toolbarContainer').toggleClass('pc_sticky_toolbar', s_top > 180);
}
}
var initMobileReview = function () {
$mobile_review_wrap = $('#prod_detail_content_mobile');
$mobile_form = $mobile_review_wrap.find('#mobile_review_form');
$m_rating = $mobile_form.find('#mobile_rating');
$m_star = $mobile_form.find('._star');
$mobile_form.find("#mobile_review_image_box").hide();
$mobile_form.find('#mobile_review_image_upload_btn').setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#mobile_review_image_box").show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#mobile_review_image_box").append(html);
} else {
alert(tmp.error);
}
});
});
autosize($('.textarea_block textarea'));
};
var changeRating = function (t, n) {
if (t == 'desktop') {
$rating.val(n + 1);
$star.each(function (e) {
if (n <= 0 && e == 0) {
if (n == -1) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
} else {
$(this).removeClass('active');
if (e <= n) {
$(this).addClass('active');
}
}
});
} else {
$m_rating.val(n + 1);
$m_star.each(function (e) {
if (n <= 0 && e == 0) {
if (n == -1) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
} else {
$(this).removeClass('active');
if (e <= n) {
$(this).addClass('active');
}
}
});
}
};
var reviewFormShow = function (t) {
var sub_form = $("._sub_form_" + t);
sub_form.data('show', 'Y');
sub_form.show();
var comment_add_body = sub_form.find('._comment_add_body_' + t);
$('body').off('mouseup.sub_comment')
.on('mouseup.sub_comment', function (e) {
var $c_target = $(e.target);
var $s_form = $c_target.closest('._sub_form_' + t + ', ._show_sub_form_btn_' + t);
if ($s_form.length == 0) {
var text = comment_add_body.val();
sub_form.data('show', 'N');
if (text == '') {
$('body').off('mouseup.sub_comment');
reviewFormHide();
}
}
});
};
var reviewEditShow = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.siblings().hide();
editor_form.data('show', 'Y');
editor_form.show();
autosize.update(editor_form.find('textarea'));
};
var reviewEditHide = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.hide();
};
var reviewFormHide = function () {
$("._sub_review_form").hide();
};
var reviewDelete = function (t, c, r_p, only_photo, buyer_permission) {
only_photo = only_photo == 'Y' ? true : false;
$.ajax({
type: 'POST',
data: { code: t, prod_code: c },
url: ('/shop/check_review_point.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
var msg = buyer_permission == 'Y' ? LOCALIZE.설명_삭제하시겠습니까삭제후재등록불가() : LOCALIZE.설명_삭제하시겠습니까();
if (res.alert_msg != '' && res.alert_msg != null) msg = res.alert_msg;
if (confirm(msg)) {
$.ajax({
type: 'POST',
data: { code: t, prod_code: c, change_member_point: res.change_member_point },
url: ('/shop/delete_review.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (IS_MOBILE) SITE_SHOP_DETAIL.changeContentTab(SHOP_CONST.TAB_TYPE.REVIEW, r_p);
else SITE_SHOP_DETAIL.changeContentPCTab(SHOP_CONST.TAB_TYPE.REVIEW, r_p, 0, false, only_photo);
SITE_SHOP_DETAIL.deleteReviewInTabDisplay(c, only_photo);
SITE_SHOP_DETAIL.getReviewQnaCount(c);
$.cocoaDialog.close();
} else
alert(result.msg);
}
});
}
} else
alert(res.msg);
}
});
};
var reviewHide = function (t, c, r_p) {
if (confirm(LOCALIZE.설명_숨기시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: t, prod_code: c, is_visible: false },
url: ('/shop/delete_review.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (IS_MOBILE) SITE_SHOP_DETAIL.changeContentTab(SHOP_CONST.TAB_TYPE.REVIEW, r_p);
else SITE_SHOP_DETAIL.changeContentPCTab(SHOP_CONST.TAB_TYPE.REVIEW, r_p);
$.cocoaDialog.close();
} else
alert(result.msg);
}
});
}
};
var CheckSecret = function (code, secret_pass, callback) {
$.ajax({
type: 'post',
data: { code: code, secret_pass: secret_pass, type: 'review' },
url: '/ajax/check_review_pass.cm',
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof callback == 'function')
callback();
} else {
alert(result.msg);
}
}
});
};
var EditReviewShow = function (t, c, idx) {
var $show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
CheckSecret(t, secret_pass, function () {
SITE_SHOP_REVIEW.openAddReview(idx, c);
});
$show_secret_password.hide();
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
var reviewDeleteShow = function (t, c, only_photo) {
var $show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
CheckSecret(t, secret_pass, function () {
reviewDelete(t, c, '', only_photo);
});
$show_secret_password.hide();
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
var imageUploadInit = function (n) {
const $wrapper = $('.categorize, .categorize-mobile');
$("#sub_review_image_box_" + n).hide();
//$("#editor_review_image_box_"+n).hide();
$('#sub_review_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#sub_review_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#sub_review_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
$('#editor_review_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#editor_review_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#editor_review_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
};
var submit = function () {
if (is_submit) return false;
is_submit = true;
var data = $review_form.serializeObject();
data.body = data.body.replace('/(?!br\\s*\\/?)[^>]+>/gi', '>').replace('/<(?!img\\s*\\/?)[^>]/gi', '<');
data.images = images;
$.ajax({
type: 'POST',
data: data,
url: ('/shop/add_review.cm'),
dataType: 'json',
success: function (res) {
if (res.msg == 'SUCCESS') {
IMWEB_SESSIONSTORAGE.clear("PROD_REVIEW.*");
reviewCompleted(res.received_point, res.check_received_point);
if (typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.CompleteReview();
} else {
is_submit = false;
alert(res.msg);
}
}
});
};
var reviewCompleted = function (received_point, check_received_point) {
$.cocoaDialog.close();
$.ajax({
type: 'POST',
data: { 'received_point': received_point, 'check_received_point': check_received_point },
url: ('/shop/add_review_completed.cm'),
dataType: 'html',
async: false,
cache: false,
success: function (html) {
$.cocoaDialog.open({
type: 'prod_review_completed',
custom_popup: html,
'close_block': false,
hide_event: function () {
location.reload();
}
});
}
});
};
var reviewCancel = function () {
if (isIOS && isSafari) {
var s_top = $(this).scrollTop();
$write_header.css({ '-webkit-transition': 'none', 'transition': 'none', 'position': 'fixed', 'top': 0 });
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
$fr_m_custom.toggleClass('m_sticky_container_ios', s_top > m_sticky_container_trigger_top);
if (s_top > m_sticky_container_trigger_top) {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'position': 'fixed', 'top': $write_header.height() + 'px' });
} else {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 'auto' });
}
}
history.go(-1);
};
var createHtml = function (prod_idx, review_page, qna_page, paging_on, only_photo, rating) {
const isMobile_width = (window.innerWidth < SHOP_CONST.WIDTH_MOBILE);
$review_wrap = $('._review_wrap');
const qna_url = isMobile_width ? '/shop/prod_review_mobile_html.cm' : '/shop/prod_review_pc_html.cm';
if ($review_wrap.length && !($review_wrap.hasClass('one_page_mode'))) {
review_page = review_page || 0;
qna_page = qna_page || 0;
var is_method_get = (review_page == 0 && qna_page == 0);
$.ajax({
type: (is_method_get ? 'GET' : 'POST'),
data: { prod_idx: prod_idx, review_page: review_page, qna_page: qna_page, only_photo: only_photo, rating: rating },
url: qna_url,
dataType: 'html',
success: function (result) {
$review_wrap.html(result);
if(isMobile_width) {
SITE_SHOP_DETAIL.getReviewSummary(document.querySelector(".detail_review_wrap_mobile ._review_summary_wrap_mobile"));
}
}
});
}
};
var checkReviewData = function () {
var check = Object.keys(images).length > 0 || review_body.val() != '';
if (check) {
if (confirm(LOCALIZE.설명_작성한내용이모두사라집니다())) {
$.cocoaDialog.close();
} else {
return false;
}
} else {
$.cocoaDialog.close();
}
};
var addBlockPost = function (login_member_code, review_code) {
if (confirm(getLocalizeString('설명_게시글차단안내', '', '게시글을 차단하시겠습니까? 작성자의 다른 글과 댓글도 확인할 수 없습니다.'))) {
addBlock(login_member_code, review_code, 'post');
}
};
var addBlockComment = function (login_member_code, review_code) {
if (confirm(getLocalizeString('설명_님을차단안내', '', '댓글을 차단하시겠습니까? 작성자의 다른 댓글도 확인할 수 없습니다.'))) {
addBlock(login_member_code, review_code, 'comment');
}
};
var switchToBlockCancelButton = function (login_member_code, review_code, review_member_code, type) {
var onclick;
switch (type) {
case 'comment':
onclick = "SITE_SHOP_REVIEW.deleteBlockComment('" + login_member_code + "','" + review_code + "','" + review_member_code + "'); event.stopPropagation();";
break;
case 'post':
onclick = "SITE_SHOP_REVIEW.deleteBlockPost('" + login_member_code + "','" + review_code + "','" + review_member_code + "'); event.stopPropagation();";
break;
}
$('._review_button._block_' + review_member_code)
.text(getLocalizeString("설명_차단해제", "", "차단해제"))
.attr("onclick", onclick);
};
var switchToBlockCancelBody = function (review_member_code) {
$('._review_body._block_' + review_member_code)
.html("
" + getLocalizeString("설명_차단한작성자의구매평입니다", "", "차단한 작성자의 구매평입니다.") + "
")
.attr('block', 'true');
//이미지 안보이게 수정
$('._review_img._block_' + review_member_code).css('display', 'none');
//모달 리뷰 차단하였을 경우 이미지 변경
$('._block_no_img._block_' + review_member_code)
.css('display', 'block');
};
var addBlock = function (login_member_code, review_code, type) {
$.ajax({
type: 'POST',
data: {
'login_member_code': login_member_code,
'review_code': review_code,
'type': type,
},
url: ('/shop/add_review_block.cm'),
dataType: 'json',
success: function (res) {
if (res.msg === 'SUCCESS') {
switchToBlockCancelButton(login_member_code, review_code, res.review_member_code, type);
switchToBlockCancelBody(res.review_member_code);
$('._block_review_command_' + res.review_member_code).css("display", "none");
SHOP_REVIEW_COMMENT.getReviewCommentHtml(review_code, 'accordion', $(this));
} else {
alert(res.msg);
}
}
});
};
var deleteBlockPost = function (login_member_code, review_code, block_member_code) {
if (confirm(getLocalizeString('설명_게시글차단해제안내', '', '게시글을 차단 해제하시겠습니까? 작성자의 다른 글과 댓글을 다시 확인할 수 있습니다.'))) {
deleteBlock(login_member_code, review_code, block_member_code, 'post');
}
};
var deleteBlockComment = function (login_member_code, review_code, block_member_code) {
var block_review_list_code = [];
if (confirm(getLocalizeString('설명_님을차단해제안내', '', '댓글을 차단 해제하시겠습니까? 작성자의 다른 댓글을 다시 확인할 수 있습니다.'))) {
deleteBlock(login_member_code, review_code, block_member_code, 'comment');
}
};
var deleteBlock = function (login_member_code, review_code, block_member_code, type) {
var block_review_list_code = [];
block_review_list_code = get_block_review_list_code(block_member_code);
$.ajax({
type: 'POST',
data: {
'login_member_code': login_member_code,
'review_code': review_code,
'block_review_list_code': block_review_list_code,
'type': type
},
url: ('/shop/delete_review_block.cm'),
dataType: 'json',
success: function (res) {
if (res.msg === 'SUCCESS') {
switchToBlockButton(login_member_code, review_code, res.review_member_code, type);
switchToBlockBody(res.review_member_code, block_review_list_code, res.block_review_data);
$('._block_review_command_' + res.review_member_code).css("display", "block");
SHOP_REVIEW_COMMENT.getReviewCommentHtml(review_code, 'accordion', $(this));
} else {
alert(res.msg);
}
}
});
};
var switchToBlockButton = function (login_member_code, review_code, review_member_code, type) {
var onclick;
switch (type) {
case 'comment':
onclick = "SITE_SHOP_REVIEW.deleteBlockComment('" + login_member_code + "','" + review_code + "'); event.stopPropagation();";
break;
case 'post':
onclick = "SITE_SHOP_REVIEW.deleteBlockPost('" + login_member_code + "','" + review_code + "'); event.stopPropagation();";
break;
}
$('._review_button._block_' + review_member_code)
.text(getLocalizeString("설명_차단", "", "차단"))
.attr("onclick", "SITE_SHOP_REVIEW.addBlockPost('" + login_member_code + "','" + review_code + "'); event.stopPropagation();");
};
var switchToBlockBody = function (review_member_code, block_review_list_code, block_review_data) {
//일반 이미지
$('._review_img._block_' + review_member_code).removeAttr('style');
block_review_list_code.forEach(block_review_code => {
$('._review_body._review_code_' + block_review_code)
.html(block_review_data[block_review_code]['body'].replace(/(\n|\r\n)/g, '
'))
.attr('block', 'false');
});
//모달 리뷰 이미지
$('._block_no_img._block_' + review_member_code)
.css('display', 'none');
};
var get_block_review_list_code = function (block_member_code) {
//차단 리스트 review code 가져오기
var block_review_list_code = [];
$("._review_body._block_" + block_member_code + "[block='true']").each(function () {
block_review_list_code.push($(this).attr('block-review-code'));
});
return block_review_list_code;
};
return {
init: function (code) {
init(code);
},
deleteReviewImage: function (code) {
deleteReviewImage(code);
},
openAddReview: function (idx, prod_code, prod_order_code) {
return openAddReview(idx, prod_code, prod_order_code);
},
convertReviewImage: function (image_list) {
return convertReviewImage(image_list);
},
initMobileReview: function () {
initMobileReview();
},
submit: function () {
submit();
},
reviewCompleted: function (received_point, check_received_point) {
reviewCompleted(received_point, check_received_point);
},
reviewCancel: function () {
reviewCancel();
},
changeRating: function (t, n) {
changeRating(t, n);
},
FormShow: function (t) {
reviewFormShow(t);
},
Delete: function (t, c, r_p, only_photo, buyer_permission) {
reviewDelete(t, c, r_p, only_photo, buyer_permission);
},
EditShow: function (t) {
reviewEditShow(t);
},
EditReviewShow: function (t, c, idx) {
EditReviewShow(t, c, idx);
},
DeleteShow: function (t, c, only_photo) {
reviewDeleteShow(t, c, only_photo);
},
Hide: function (t, c, r_p) {
reviewHide(t, c, r_p);
},
EditHide: function (t) {
reviewEditHide(t);
},
imageUploadInit: function (n) {
imageUploadInit(n);
},
createHtml: function (prod_idx, review_page, qna_page, paging_on, only_photo) {
createHtml(prod_idx, review_page, qna_page, paging_on, only_photo);
},
checkReviewData: function () {
checkReviewData();
},
addBlockPost: function (login_member_code, review_code) {
addBlockPost(login_member_code, review_code);
},
addBlockComment: function (login_member_code, review_code) {
addBlockComment(login_member_code, review_code);
},
deleteBlockPost: function (login_member_code, review_code, block_member_code) {
deleteBlockPost(login_member_code, review_code, block_member_code);
},
deleteBlockComment: function (login_member_code, review_code, block_member_code) {
deleteBlockComment(login_member_code, review_code, block_member_code);
},
C3_openAddReview : function(idx,prod_code,prod_order_code){
return openAddReview(idx,prod_code,prod_order_code, true);
},
};
}();
var SHOP_REVIEW_COMMENT = function () {
var $review_comment_wrap;
var $form;
var $secret;
var review_code;
var device;
var load_type; // 아코디언인지, 모달인지 체크
var init = function (code, type, device_type) {
device = device_type;
load_type = type;
review_code = code;
$form = $('.categorize-mobile #' + device + "_" + load_type + '_review_form_' + code + ', .categorize.review-box #' + device + "_" + load_type + '_review_form_' + code);
$secret = $('._secret_btn');
$secret.on('click', function () {
if ($secret.hasClass('active')) {
$secret.removeClass('active');
$('#use_secret_review').val('N');
} else {
$secret.addClass('active');
$('#use_secret_review').val('Y');
}
});
$form.each(function(){
const $this = $(this);
$this.find('#review_image_upload_btn_' + code).setUploadImage({
url : '/shop/upload_image.cm',
dropZone : 'icon_img_upload_wrap',
singleFileUploads : true,
formData : {temp : 'Y'}
}, function(res, data){
$this.find("#review_comment_image_box_" + code).show();
$.each(data, function(e, tmp){
if(tmp.error == "" || tmp.error == null){
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$this.find("#review_comment_image_box_" + code).append(html);
}else{
alert(tmp.error);
}
});
})
});
};
var imageUploadInit = function (idx) {
const $wrapper = $('.categorize-mobile, .categorize.review-box');
$wrapper.each(function(){
const $this = $(this);
$this.find("#sub_review_image_box_" + idx).hide();
$this.find('#sub_review_image_upload_btn_' + idx).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$(".categorize #sub_review_image_box_" + idx).show();
$(".categorize-mobile #sub_review_image_box_" + idx).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '

';
$this.find("#sub_review_image_box_" + idx).append(html);
} else {
alert(tmp.error);
}
});
});
$this.find('#editor_review_image_upload_btn_' + idx).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$(".categorize #editor_review_image_box_" + idx).show();
$(".categorize-mobile #editor_review_image_box_" + idx).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '

';
$this.find("#editor_review_image_box_" + idx).append(html);
} else {
alert(tmp.error);
}
});
});
});
};
var getReviewCommentHtml = function (code, type, object) {
if (type == 'accordion') {
$review_comment_wrap = $('.review_comment_wrap_' + code);
if (!object.hasClass('active')) {
$.ajax({
type: 'POST',
data: { 'code': code, 'type': type },
url: ('/shop/get_review_comment_list.cm'),
dataType: 'json',
async: false,
cache: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
$review_comment_wrap.html(result.html);
$review_comment_wrap.show();
} else {
alert(result.msg);
}
}
});
} else {
$review_comment_wrap.hide();
}
} else {
$review_comment_wrap = $('#review_comment_section_' + code);
$.ajax({
type: 'POST',
data: { 'code': code, 'type': type },
url: ('/shop/get_review_comment_list.cm'),
dataType: 'json',
async: false,
cache: false,
success: function (result) {
if (result.msg === 'SUCCESS') {
$review_comment_wrap.html(result.html);
} else {
alert(result.msg);
}
}
});
}
};
var submit = function (t, type, i) {
// mobile 및 pc 에서 같은 id 값 공유 해당 부분 수정 필요...
const isMobile_width = (window.innerWidth < SHOP_CONST.WIDTH_MOBILE);
const isModal = document.querySelector('#cocoaModal').classList.contains('review');
let data = {};
switch (type) {
case 'main': // pc 리뷰 댓글
if (isModal) {
data = $('#_modal_review_form_' + review_code).serializeObject();
break;
}
if (isMobile_width) {
data = $('.categorize-mobile #' + $form.attr('id')).serializeObject();
} else {
data = $('.categorize.review-box #' + $form.attr('id')).serializeObject();
}
break;
case 'sub_form': //pc 리뷰 대댓글
if (isModal) {
data = $('#sub_review_form_' + i).serializeObject();
break;
}
if (isMobile_width) {
data = $('.categorize-mobile #sub_review_form_' + i).serializeObject();
} else {
data = $('.categorize.review-box #sub_review_form_' + i).serializeObject();
}
break;
case 'editor': // pc 리뷰 댓글 수정
if (isModal) {
data = $('#sub_review_editor_form_' + i).serializeObject();
break;
}
if (isMobile_width) {
data = $('.categorize-mobile #sub_review_editor_form_' + i).serializeObject();
} else {
data = $('.categorize.review-box #sub_review_editor_form_' + i).serializeObject();
}
break;
case 'mobile': // Mobile 리뷰 댓글
data = $('#mobile_review_form').serializeObject();
break;
case 'mobile_sub_form': // Mobile 리뷰 대댓글
data = $('#mobile_sub_review_form_' + i).serializeObject();
break;
case 'mobile_editor': // Mobile 리뷰 댓글 수정
data = $('#mobile_sub_review_editor_form_' + i).serializeObject();
break;
}
if (!t.hasClass("btn-writing")) {
t.addClass("btn-writing");
}
$.ajax({
type: 'POST',
data: { data: data, review_code: review_code },
url: ('/shop/add_review_comment.cm'),
dataType: 'json',
async: false,
cache: false,
success: function (result) {
if (t.hasClass("btn-writing")) {
t.removeClass("btn-writing");
}
if (result.msg == 'SUCCESS') {
if (load_type == 'modal') {
$('#comment_count').text(" " + result.comment_count);
getReviewCommentHtml(review_code, 'modal', t);
} else {
$('.categorize #comment_count_' + review_code).text(" " + result.comment_count);
$('.categorize #comment_count_inner_' + review_code).text(" " + result.comment_count);
$('.categorize-mobile #comment_count_' + review_code).text(result.comment_count);
$('.categorize-mobile #comment_count_inner_' + review_code).text(" " + result.comment_count);
getReviewCommentHtml(review_code, 'accordion', t);
}
$("div[id^='sub_review_image_box_']").hide();
} else
alert(result.msg);
}
});
};
var EditHide = function (idx) {
var editor_form = $("._sub_form_editor_" + idx);
editor_form.hide();
$('.tools').show();
editor_form.siblings('._comment_body').show();
editor_form.closest('.comment_area').siblings().show();
editor_form.closest('.comment_area').css('padding-top', '');
editor_form.css('margin-top', '');
};
var EditShow = function (idx) {
var editor_form = $("._sub_form_editor_" + idx);
editor_form.siblings().hide();
editor_form.closest('.comment_area').siblings().hide();
editor_form.closest('.comment_area').css('padding-top', 0);
editor_form.css('margin-top', 0);
editor_form.data('show', 'Y');
editor_form.show();
autosize.update(editor_form.find('textarea'));
};
var reviewFormHide = function () {
$("._sub_review_form").hide();
};
var FormShow = function (idx) {
var sub_form = $("._sub_form_" + idx);
sub_form.data('show', 'Y');
sub_form.show();
var comment_add_body = sub_form.find('._comment_add_body_' + idx);
$('body').off('mouseup.sub_comment')
.on('mouseup.sub_comment', function (e) {
var $c_target = $(e.target);
var $s_form = $c_target.closest('._sub_form_' + idx + ', ._show_sub_form_btn_' + idx);
if ($s_form.length == 0) {
var text = comment_add_body.val();
sub_form.data('show', 'N');
if (text == '') {
$('body').off('mouseup.sub_comment');
reviewFormHide();
}
}
});
};
var reviewCommentDelete = function (code) {
if (confirm(LOCALIZE.설명_삭제하시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: code, review_code: review_code },
url: ('/shop/delete_review_comment.cm'),
async: false,
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (load_type == 'modal') {
$('#comment_count').text(result.comment_count);
getReviewCommentHtml(review_code, 'modal', $(this));
} else {
$('.categorize #comment_count_' + review_code).text(result.comment_count);
$('.categorize #comment_count_inner_' + review_code).text(result.comment_count);
$('.categorize-mobile #comment_count_' + review_code).text(result.comment_count);
$('.categorize-mobile #comment_count_inner_' + review_code).text(result.comment_count);
getReviewCommentHtml(review_code, 'accordion', $(this));
}
} else
alert(result.msg);
}
});
}
};
return {
init: function (code, type, device_type) {
init(code, type, device_type);
},
imageUploadInit: function (idx) {
imageUploadInit(idx);
},
getReviewCommentHtml: function (code, type, object) {
getReviewCommentHtml(code, type, object);
},
submit: function (t, type, i) {
submit(t, type, i);
},
Delete: function (code) {
reviewCommentDelete(code);
},
EditShow: function (idx) {
EditShow(idx);
},
EditHide: function (idx) {
EditHide(idx);
},
FormShow: function (idx) {
FormShow(idx);
}
};
}();
var SITE_QNA_COMMENT = function () {
var $form;
var $secret;
var $qna_comment_section;
var qna_code;
var init = function (code) {
qna_code = code;
var $comment_area = $('.comment_textarea');
$secret = $('._secret_btn');
$secret.on('click', function () {
if ($secret.hasClass('active')) {
$secret.removeClass('active');
$('#use_secret_qna').val('N');
} else {
$secret.addClass('active');
$('#use_secret_qna').val('Y');
}
});
$form = $('#qna_form');
$form.find('#qna_image_upload_btn').setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#qna_image_box").show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#qna_image_box").append(html);
} else {
alert(tmp.error);
}
});
});
};
var QnaCommentDelete = function (code, is_visible) {
if (confirm(LOCALIZE.설명_삭제하시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: code, is_visible: is_visible },
url: ('/shop/delete_qna_comment.cm'),
async: false,
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
getQnaCommentHtml(qna_code);
} else
alert(result.msg);
}
});
}
};
var imageUploadInit = function (idx) {
$form = $('#qna_form');
$form.find('#qna_image_upload_btn').setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#qna_image_box").show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#qna_image_box").append(html);
} else {
alert(tmp.error);
}
});
});
$("#sub_qna_image_box_" + idx).hide();
$('#sub_qna_image_upload_btn_' + idx).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#sub_qna_image_box_" + idx).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#sub_qna_image_box_" + idx).append(html);
} else {
alert(tmp.error);
}
});
});
$('#editor_qna_image_upload_btn_' + idx).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#editor_qna_image_box_" + idx).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#editor_qna_image_box_" + idx).append(html);
} else {
alert(tmp.error);
}
});
});
};
var getQnaCommentHtml = function (qna_code) {
$qna_comment_section = $('#qna_comment_section');
$.ajax({
type: 'POST',
data: { qna_code: qna_code },
url: ('/ajax/get_qna_comment_list.cm'),
dataType: 'html',
cache: false,
success: function (result) {
$qna_comment_section.html(result);
}
});
};
var submit = function (t, type, i) {
switch (type) {
case 'main': // 1:1 문의 페이지에서 바로 작성하는 폼
var data = $form.serializeObject();
break;
case 'sub_form': // 등록되어 있는 qna에 답변을 다는 폼
var data = $('#sub_qna_form_' + i).serializeObject();
break;
case 'editor': // 등록되어 있는 qna를 수정하는 폼
var data = $('#sub_qna_editor_form_' + i).serializeObject();
break;
}
if (!t.hasClass("btn-writing")) {
t.addClass("btn-writing");
}
$.ajax({
type: 'POST',
data: { data: data, type: type },
url: ('/shop/add_qna_comment.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (t.hasClass("btn-writing")) {
t.removeClass("btn-writing");
}
if (result.msg == 'SUCCESS') {
getQnaCommentHtml(qna_code);
$("div[id^='sub_qna_image_box_']").hide();
} else
alert(result.msg);
}
});
};
var EditShow = function (idx) {
var editor_form = $("._sub_form_editor_" + idx);
editor_form.siblings().hide();
editor_form.closest('.comment_area').siblings().hide();
editor_form.closest('.comment_area').css('padding-top', 0);
editor_form.css('margin-top', 0);
editor_form.data('show', 'Y');
editor_form.show();
autosize.update(editor_form.find('textarea'));
};
var EditHide = function (idx) {
var editor_form = $("._sub_form_editor_" + idx);
editor_form.hide();
$('.tools').show();
editor_form.siblings('._comment_body').show();
editor_form.closest('.comment_area').siblings().show();
editor_form.closest('.comment_area').css('padding-top', '');
editor_form.css('margin-top', '');
};
var qnaFormHide = function () {
$("._sub_qna_form").hide();
};
var FormShow = function (idx) {
var sub_form = $("._sub_form_" + idx);
sub_form.data('show', 'Y');
sub_form.show();
var comment_add_body = sub_form.find('._comment_add_body_' + idx);
$('body').off('mouseup.sub_comment')
.on('mouseup.sub_comment', function (e) {
var $c_target = $(e.target);
var $s_form = $c_target.closest('._sub_form_' + idx + ', ._show_sub_form_btn_' + idx);
if ($s_form.length == 0) {
var text = comment_add_body.val();
sub_form.data('show', 'N');
if (text == '') {
$('body').off('mouseup.sub_comment');
qnaFormHide();
}
}
});
};
return {
init: function (code) {
init(code);
},
imageUploadInit: function (idx) {
imageUploadInit(idx);
},
getQnaCommentHtml: function (qna_code) {
getQnaCommentHtml(qna_code);
},
submit: function (t, type, i) {
submit(t, type, i);
},
Delete: function (code, is_visible) {
QnaCommentDelete(code, is_visible);
},
EditShow: function (idx) {
EditShow(idx);
},
EditHide: function (idx) {
EditHide(idx);
},
FormShow: function (idx) {
FormShow(idx);
}
};
}();
var SITE_SHOP_QNA = function () {
var $qna_wrap;
var $mobile_qna_wrap;
var $form;
var $mobile_form;
var $comment_body;
var $qna_image_box;
var $comment_area;
var $secret;
var $m_secret;
var qna_body;
var $qna_container;
var $qna_form;
var body_input;
var $show_secret_password;
var isIOS, isSafari, $fr_m_custom, $write_header, m_sticky_container_trigger_top, $toolbarContainer;
var init = function (code, qna_secret_type) {
$qna_wrap = $('._qna_wrap');
$qna_form = $('#qna_form');
qna_body = $('#qna_body');
$qna_container = $('#qna_container');
$secret = $('._secret_btn');
$qna_form.find("#qna_image_box").hide();
body_input = $('#body_input');
if (qna_secret_type == 'secret') {
$secret.addClass('active');
$('._secret').val('Y');
} else {
$secret.on('click', function () {
if ($secret.hasClass('active')) {
$secret.removeClass('active');
$('._secret').val('N');
} else {
$secret.addClass('active');
$('._secret').val('Y');
}
});
}
if ($('._secret').val() != '') {//수정일 경우 비밀글 체크
if ($('._secret').val() == 'Y') {
$secret.addClass('active');
$('._secret').val('Y');
} else {
$secret.removeClass('active');
$('._secret').val('N');
}
}
if (IE_VERSION < 10) {
CKEDITOR.replace('qna_body', {
filebrowserImageUploadUrl: '/ajax/post_image_upload.cm?board_code=' + code
});
} else {
if (android_version() == 4) {
qna_body.addClass('legacy_webview');
}
var image_insert_key2 = 'image_insert_key2';
setFroala('#qna_body', {
code: '',
// 파일 첨부, 비디오, 테이블 제외
toolbarButtons: {
'moreText': {
'buttons': ['bold', 'italic', 'underline', 'fontSize', 'textColor', 'strikeThrough', 'backgroundColor', 'clearFormatting', '|', 'align', 'formatOL', 'formatUL', '|', image_insert_key2, 'insertLink', '|', 'undo', 'redo', 'html', 'emoticons'],
'buttonsVisible': 50
}
},
toolbarButtonsMobile: {
'moreText': {
'buttons': [image_insert_key2, 'insertLink', '|', "fontSize", "bold", "italic", "underline", "strikeThrough", "align", "textColor", "clearFormatting", '|', "formatOL", "formatUL"],
'buttonsVisible': 50
}
},
image_upload_url: "/ajax/post_image_upload.cm",
image_insert_key: image_insert_key2,
image_align: 'center',
image_display: 'block',
toolbarStickyOffset: 38,
heightMin: 200,
heightMax: 600,
mobile_custom: true,
linkAlwaysBlank: true
});
}
isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
$fr_m_custom = $qna_container.find('._fr-m-custom');
$write_header = $qna_container.find('._write_header');
m_sticky_container_trigger_top = $fr_m_custom.offset().top - $fr_m_custom.height();
$toolbarContainer = $fr_m_custom.find('#toolbarContainer');
if (isIOS && isSafari) {
$write_header.css('position', 'absolute');
}
var timeoutTime = isIOS && isSafari ? 100 : 10;
var resize_time;
resizeStickyContainer();
$(window).off('scroll.mobile_write resize.mobile_write').on('scroll.mobile_write resize.mobile_write', function () {
var s_top = $(this).scrollTop();
if (isIOS && isSafari) {
$write_header.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 0 });
if (s_top > m_sticky_container_trigger_top) {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 0 });
}
}
if (resize_time) {
clearTimeout(resize_time);
}
resize_time = setTimeout(function () {
resizeStickyContainer();
}, timeoutTime);
});
autosize($('.textarea_block textarea'));
};
function resizeStickyContainer() {
var s_top = $(this).scrollTop();
if (isIOS && isSafari) {
$write_header.css({ '-webkit-transition': 'top 100ms', 'transition': 'top 100ms', 'top': s_top + 'px' });
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
$fr_m_custom.toggleClass('m_sticky_container_ios', s_top > m_sticky_container_trigger_top);
if (s_top > m_sticky_container_trigger_top) {
$toolbarContainer.css({ '-webkit-transition': 'top 100ms', 'transition': 'top 100ms', 'top': s_top + 'px' });
qna_body.find('.fr-view').css('padding-top', '90px');
} else {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 'auto' });
qna_body.find('.fr-view').css('padding-top', '');
}
} else {
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
}
$toolbarContainer.find('.fr-toolbar').css('width', qna_body.find('.fr-view').width());
if ($(window).width() >= 768) {
if ($qna_container.hasClass('bg_on'))
$qna_container.find('#toolbarContainer').toggleClass('pc_sticky_toolbar', s_top > 487);
else
$qna_container.find('#toolbarContainer').toggleClass('pc_sticky_toolbar', s_top > 180);
}
}
var initMobileQna = function () {
$mobile_qna_wrap = $('#prod_detail_content_mobile');
$mobile_form = $mobile_qna_wrap.find('#mobile_qna_form');
$m_secret = $mobile_form.find('._secret_btn');
$mobile_form.find("#mobile_qna_image_box").hide();
$m_secret.on('click', function () {
if ($m_secret.hasClass('active')) {
$m_secret.removeClass('active');
$mobile_form.find('._secret').val('N');
} else {
$m_secret.addClass('active');
$mobile_form.find('._secret').val('Y');
}
});
$mobile_form.find('#mobile_qna_image_upload_btn').setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#mobile_qna_image_box").show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#mobile_qna_image_box").append(html);
} else {
alert(tmp.error);
}
});
});
autosize($('.textarea_block textarea'));
};
var qnaFormShow = function (t) {
var sub_form = $("._sub_form_" + t);
sub_form.data('show', 'Y');
sub_form.show();
var comment_add_body = sub_form.find('._comment_add_body_' + t);
$('body').off('mouseup.sub_comment')
.on('mouseup.sub_comment', function (e) {
var $c_target = $(e.target);
var $s_form = $c_target.closest('._sub_form_' + t + ', ._show_sub_form_btn_' + t);
if ($s_form.length == 0) {
var text = comment_add_body.val();
sub_form.data('show', 'N');
if (text == '') {
$('body').off('mouseup.sub_comment');
qnaFormHide();
}
}
});
};
var EditQnaShow = function (t, c, idx) {
$show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
var left = $(window).width() >= 768 ? 200 : ($(window).width() - 325) / 2;
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
CheckSecret(t, secret_pass, function () {
window.location.href = "?prod_code=" + c + "&qmode=write&back_url=&idx=" + idx;
});
$show_secret_password.hide();
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
var ViewQnaShow = function (t, c, idx, qna_page) {
$show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
var left = $(window).width() >= 768 ? 200 : ($(window).width() - 325) / 2;
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
CheckSecret(t, secret_pass, function () {
SITE_SHOP_DETAIL.viewQnaDetail(idx, qna_page);
$show_secret_password.hide();
});
$show_secret_password.hide();
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
var CheckSecret = function (code, secret_pass, callback) {
$.ajax({
type: 'post',
data: { code: code, secret_pass: secret_pass, type: 'qna' },
url: '/ajax/check_review_pass.cm',
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof callback == 'function')
callback();
} else {
alert(result.msg);
}
}
});
};
var qnaEditShow = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.siblings().hide();
editor_form.data('show', 'Y');
editor_form.show();
autosize.update(editor_form.find('textarea'));
};
var qnaEditHide = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.hide();
};
var qnaFormHide = function () {
$("._sub_qna_form").hide();
};
var qnaDelete = function (code, prod_code, secret_pass, q_p) {
if (confirm(LOCALIZE.설명_삭제하시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: code, prod_code: prod_code, secret_pass: secret_pass, qna_page: q_p },
url: ('/shop/delete_qna.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (IS_MOBILE) SITE_SHOP_DETAIL.changeContentTab('qna', 0, q_p);
else SITE_SHOP_DETAIL.changeContentPCTab('qna', 0, q_p);
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.addCountUserProfileAttr('qnaCount', -1);
SITE_SHOP_DETAIL.getReviewQnaCount(prod_code);
$.cocoaDialog.close();
} else
alert(result.msg);
}
});
}
};
var qnaModify = function (idx, prod_code, secret_pass, is_book, code) {
$.ajax({
type: 'POST',
data: { idx: idx, prod_code: prod_code, secret_pass: secret_pass, is_book: is_book, code: code },
url: ('/shop/show_secret_qna.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
qnaEditShow(idx);
} else
alert(result.msg);
}
});
};
var qnaShow = function (idx, prod_code, secret_pass, is_book, code) {
$.ajax({
type: 'POST',
data: { idx: idx, prod_code: prod_code, secret_pass: secret_pass, is_book: is_book, code: code },
url: ('/shop/show_secret_qna.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
$("._comment_body_" + idx).html(result.html);
$('._comment_body_' + idx).closest('.comment_area').find('#_show_content_btn').hide(); // 보기 버튼 제거
if (result.isSubComment) {
for (var i in result.sub_comment) {
var sub_data = result.sub_comment[i];
$("._comment_child_" + idx + "_" + sub_data.idx).html(sub_data.html);
}
}
} else
alert(result.msg);
}
});
};
var qnaConfirmShow = function (e, idx, prod_code, type, code) {
$show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
var left = $(window).width() >= 768 ? 200 : ($(window).width() - 325) / 2;
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
$show_secret_password.hide();
switch (type) {
case 'show':
qnaShow(idx, prod_code, secret_pass, 'N', code);
break;
case 'modify':
qnaModify(idx, prod_code, secret_pass, 'N', code);
break;
case 'delete':
qnaDelete(code, prod_code, secret_pass);
break;
}
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
var imageUploadInit = function (n) {
$("#sub_qna_image_box_" + n).hide();
$('#sub_qna_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#sub_qna_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#sub_qna_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
$('#editor_qna_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#editor_qna_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#editor_qna_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
};
var submit = function () {
if (IE_VERSION < 10) {
var body = CKEDITOR.instances.qna_body.getData();
body_input.val(body);
$qna_form.submit();
} else {
if (qna_body.hasClass('fr-code-view'))
FroalaEditor('#qna_body').codeView.toggle();
var body = FroalaEditor('#qna_body').html.get(true);
body_input.val(body);
$qna_form.submit();
}
};
var qnaCancel = function () {
if (isIOS && isSafari) {
var s_top = $(this).scrollTop();
$write_header.css({ '-webkit-transition': 'none', 'transition': 'none', 'position': 'fixed', 'top': 0 });
$fr_m_custom.toggleClass('m_sticky_container', s_top > m_sticky_container_trigger_top);
$fr_m_custom.toggleClass('m_sticky_container_ios', s_top > m_sticky_container_trigger_top);
if (s_top > m_sticky_container_trigger_top) {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'position': 'fixed', 'top': $write_header.height() + 'px' });
} else {
$toolbarContainer.css({ '-webkit-transition': 'none', 'transition': 'none', 'top': 'auto' });
}
}
history.go(-1);
};
var createHtml = function (prod_idx, review_page, qna_page, paging_on) {
const isMobile_width = (window.innerWidth < SHOP_CONST.WIDTH_MOBILE);
const review_url = isMobile_width ? "/shop/prod_qna_mobile_html.cm" : "/shop/prod_qna_pc_html.cm";
$qna_wrap = $('._qna_wrap');
if ($qna_wrap.length) {
var is_cache = false;
var callback = function (result) {
$qna_wrap.html(result);
if (!is_cache) IMWEB_SESSIONSTORAGE.set(`${isMobile_width ? "PROD_QNA_MOBILE_" : "PROD_QNA_PC_"}` + prod_idx + "_" + review_page + '_' + qna_page, result.replace(/\t+/g, '').trim(), 60);
};
var html = IMWEB_SESSIONSTORAGE.get(`${isMobile_width ? "PROD_QNA_MOBILE_" : "PROD_QNA_PC_"}` + prod_idx + "_" + review_page + '_' + qna_page);
if (html) {
is_cache = true;
callback(html);
} else {
$.ajax({
type: 'POST',
data: { prod_idx: prod_idx, review_page: review_page, qna_page: qna_page },
url: review_url,
dataType: 'html',
cache: false,
success: callback
});
}
}
};
var qnaHide = function (t, c, q_p) {
if (confirm(LOCALIZE.설명_숨기시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: t, prod_code: c, is_visible: false },
url: ('/shop/delete_qna.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (result.msg == 'SUCCESS') {
if (IS_MOBILE) SITE_SHOP_DETAIL.changeContentTab('qna', q_p);
else SITE_SHOP_DETAIL.changeContentPCTab('qna', q_p);
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.addCountUserProfileAttr('qnaCount', -1);
$.cocoaDialog.close();
} else
alert(result.msg);
}
});
}
};
var qnaDeleteShow = function (qna_code, prod_code) {
var $show_secret_password = $('#show_secret_password');
var $show_link = $(event.target);
if ($show_secret_password.length == 0) {
var left = $(window).width() >= 768 ? 200 : ($(window).width() - 325) / 2;
$show_secret_password = $('
').hide();
$show_link.after($show_secret_password);
}
$show_secret_password.find('input').val('');
$show_secret_password.show();
$show_secret_password.off('click', '._confirm')
.on('click', '._confirm', function () {
var secret_pass = $show_secret_password.find('input').val();
CheckSecret(qna_code, secret_pass, function () {
qnaDelete(qna_code, prod_code, secret_pass);
});
$show_secret_password.hide();
});
$('body').off('mousedown.show_secret')
.on('mousedown.show_secret', function (e) {
var $tmp = $(e.target).closest('#show_secret_password');
if ($tmp.length == 0) {
$show_secret_password.hide();
$('body').off('click.show_secret');
}
});
};
return {
init: function (code, qna_secret_type) {
init(code, qna_secret_type);
},
initMobileQna: function () {
initMobileQna();
},
submit: function () {
submit();
},
qnaCancel: function () {
qnaCancel();
},
FormShow: function (t) {
qnaFormShow(t);
},
EditQnaShow: function (t, c, idx) {
EditQnaShow(t, c, idx);
},
ViewQnaShow: function (t, c, idx, qna_page) {
ViewQnaShow(t, c, idx, qna_page);
},
Delete: function (code, prod_code, q_p) {
qnaDelete(code, prod_code, q_p);
},
EditShow: function (t) {
qnaEditShow(t);
},
EditHide: function (t) {
qnaEditHide(t);
},
imageUploadInit: function (n) {
imageUploadInit(n);
},
createHtml: function (prod_idx, review_page, qna_page, paging_on) {
createHtml(prod_idx, review_page, qna_page, paging_on);
},
confirmShow: function (e, idx, prod_code, type, code) {
qnaConfirmShow(e, idx, prod_code, type, code);
},
Hide: function (t, c, q_p) {
qnaHide(t, c, q_p);
},
DeleteShow: function (qna_code, prod_code) {
qnaDeleteShow(qna_code, prod_code);
},
};
}();
var SITE_PERSONAL_QNA = function () {
var $personal_qna_wrap;
var $mobile_qna_wrap;
var $form;
var $mobile_form;
var $comment_body;
var $qna_image_box;
var $comment_area;
var $secret;
var init = function () {
$form = $('#qna_form');
$secret = $form.find('._secret');
$secret.on('click', function () {
if ($secret.hasClass('active')) {
$secret.removeClass('active');
$form.find('#secret').val('N');
} else {
$secret.addClass('active');
$form.find('#secret').val('Y');
}
});
$('#qna_image_upload_btn').setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#qna_image_box").show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#qna_image_box").append(html);
} else {
alert(tmp.error);
}
});
});
autosize($('.textarea_block textarea'));
};
var submit = function (t, type, i) {
switch (type) {
case 'main': // 1:1 문의 페이지에서 바로 작성하는 폼
var data = $form.serializeObject();
break;
case 'sub_form': // 등록되어 있는 qna에 답변을 다는 폼
var data = $('#sub_qna_form_' + i).serializeObject();
break;
case 'editor': // 등록되어 있는 qna를 수정하는 폼
var data = $('#sub_qna_editor_form_' + i).serializeObject();
break;
}
if (!t.hasClass("btn-writing")) {
t.addClass("btn-writing");
}
$.ajax({
type: 'POST',
data: { data: data, type: type, personal_qna: 'Y' },
url: ('/shop/add_qna.cm'),
dataType: 'json',
cache: false,
success: function (result) {
if (t.hasClass("btn-writing")) {
t.removeClass("btn-writing");
}
if (result.msg == 'SUCCESS') {
createHtml(result.page);
} else
alert(result.msg);
}
});
};
var Delete = function (code, prod_code) {
if (confirm(LOCALIZE.설명_삭제하시겠습니까())) {
$.ajax({
type: 'POST',
data: { code: code, prod_code: prod_code },
url: ('/shop/delete_qna.cm'),
dataType: 'json',
success: function (result) {
if (result.msg == 'SUCCESS') {
if (typeof CHANNEL_PLUGIN != 'undefined') CHANNEL_PLUGIN.addCountUserProfileAttr('qnaCount', -1);
createHtml();
} else
alert(result.msg);
}
});
}
};
var FormShow = function (t) {
var sub_form = $("._sub_form_" + t);
sub_form.data('show', 'Y');
sub_form.show();
var comment_add_body = sub_form.find('._comment_add_body_' + t);
$('body').off('mouseup.sub_comment')
.on('mouseup.sub_comment', function (e) {
var $c_target = $(e.target);
var $s_form = $c_target.closest('._sub_form_' + t + ', ._show_sub_form_btn_' + t);
if ($s_form.length == 0) {
var text = comment_add_body.val();
sub_form.data('show', 'N');
if (text == '') {
$('body').off('mouseup.sub_comment');
FormHide();
}
}
});
};
var FormHide = function () {
$("._sub_qna_form").hide();
};
var EditShow = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.siblings('.block-postmeta').find('.write').hide();
editor_form.siblings('.block-postmeta').find('.comment_area').hide();
editor_form.data('show', 'Y');
editor_form.show();
};
var EditHide = function (t) {
var editor_form = $("._sub_form_editor_" + t);
editor_form.hide();
editor_form.siblings('.block-postmeta').find('.write').show();
editor_form.siblings('.block-postmeta').find('.comment_area').show();
};
var imageUploadInit = function (n) {
$("#sub_image_box_" + n).hide();
$('#sub_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#sub_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#sub_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
$('#editor_image_upload_btn_' + n).setUploadImage({
url: '/shop/upload_image.cm',
dropZone: 'icon_img_upload_wrap',
singleFileUploads: true,
formData: { temp: 'Y' }
}, function (res, data) {
$("#editor_image_box_" + n).show();
$.each(data, function (e, tmp) {
if (tmp.error == "" || tmp.error == null) {
var url = CDN_UPLOAD_URL + tmp.url;
var html = '
';
$("#editor_image_box_" + n).append(html);
} else {
alert(tmp.error);
}
});
});
};
var createHtml = function (page) {
$personal_qna_wrap = $('._personal_qna_wrap');
$.ajax({
type: 'POST',
data: { page: page },
url: ('/shop/personal_qna_list.cm'),
dataType: 'html',
cache: false,
success: function (result) {
$personal_qna_wrap.html(result);
}
});
};
return {
init: function () {
init();
},
submit: function (t, type, i) {
submit(t, type, i);
},
Delete: function (code, prod_code) {
Delete(code, prod_code);
},
FormShow: function (t) {
FormShow(t);
},
EditShow: function (t) {
EditShow(t);
},
EditHide: function (t) {
EditHide(t);
},
imageUploadInit: function (n) {
imageUploadInit(n);
},
createHtml: function (page) {
createHtml(page);
}
};
}();