PageSourceSearch

https://www.selvasai.com/js/site_shop_mypage.js?1789025109

js selvasai.com collected 2026-09-24 10:39:26 UTC 106,521 bytes, 2,748 lines download raw bytes

1var SITE_SHOP_MYPAGE = function(){
2  var $order_list;
3  var $order_list_empty;
4  var $order_list_more_button;
5  var currentPage = 1;
6  var getOrderListProgress = false;
7
8  var $regularly_list_body;
9  var $regularly_order_tab;
10  var $regularly_cancel_tab;
11
12  var $point_list;
13  var $point_list_table;
14  var $point_list_empty;
15  var $point_list_more_button;
16  var get_point_list_progress = false;
17
18  var $order_cancel_form;
19  var $order_return_form;
20  var $order_exchange_form;
21  var cancel_order_code = '';	/* 취소처리중인 주문코드 */
22  var auto_cancel_enable = 'N';	/* 자동취소 지원 Y/N */
23  var return_order_code = '';	/* 반품 진행중인 주문코드 */
24  var exchange_order_code = '';	/* 교환 진행중인 주문코드 */
25
26  var is_canceling = false; // 취소 신청 처리중 여부
27  var add_member_billing_check = false; //간편결제 등록 처리중 여부
28  var $changeRegularlyItemLayer;
29
30	const handleClickOrderItemButton = async function (e) {
31		try {
32			const { target } = e;
33			if (target instanceof Element && typeof target.dataset.dynamicImport === 'string' && target.dataset.dynamicImport.length > 0 && typeof target.dataset.dynamicImportDone === 'undefined') {
34				const handleClickOrderItemButtonCallback = await import(`/_/oms-customer-fo-shop-my-page/${target.dataset.dynamicImport}.js`); 
35				function handleClickOrderItemButton() {
36					handleClickOrderItemButtonCallback.default(target);
37				}
38				e.target.addEventListener('click', handleClickOrderItemButton);
39				target.dataset.dynamicImportDone = 'true';
40				handleClickOrderItemButton();
41			}
42		} catch (error) {
43			console.error(error);
44		}
45	}
46
47  var initOrderList = function(){
48    $order_list = $('#shop_mypage_orderlist');
49    $order_list_empty = $('#shop_mypage_orderlist_empty');
50    $order_list_more_button = $('#shop_mypage_orderlist_more');
51
52		// oms 기반 다이얼로그 로딩 트리거
53		$order_list.on('click', handleClickOrderItemButton);
54
55    // 주문 타입 탭 초기화
56    initOrderTypeTabs();
57  };
58
59  // 주문 타입 탭 초기화 함수
60  var initOrderTypeTabs = function(){
61    var urlParams = new URLSearchParams(window.location.search);
62    var orderType = urlParams.get('order-type');
63
64    // 과거 주문 개수 확인 (리다이렉트 체크 및 탭 표시)
65    checkMigrationOrdersCount(orderType);
66  };
67
68  // 과거 주문 개수 확인 함수
69  var checkMigrationOrdersCount = function(orderType){
70    $.ajax({
71      type : 'POST',
72      data : {'page' : 1, 'type' : 'order', 'isMigration' : 'Y'},
73      url : '/shop/oms/OMS_mypage_order_list.cm',
74      dataType : 'json',
75      cache : false,
76      success : function(result){
77        if(result.msg == 'SUCCESS'){
78          if(result.count > 0){
79            // 과거 주문이 1개 이상
80            if (orderType === null) {
81              // order-type 파라미터가 없는 경우 탭 표시하고 전체 주문 활성화
82              $('#order_type_tabs').show();
83              // 전체 주문 탭 활성화
84              var $activeTab = $('#tab_all_orders');
85              $activeTab.css({'color': '#15181E'});
86              $activeTab.append('<div class="tab-indicator" style="position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; border-radius: 50px; background: currentColor;"></div>');
87            }
88          } else {
89            // 과거 주문이 0개
90            if(orderType === 'migration'){
91              // migration URL로 접속했는데 과거 주문이 없으면 리다이렉트
92              window.location.href = window.location.pathname + '?order-type=all';
93            }
94          }
95        }
96      },
97      error : function(){
98        // 에러 발생 시 아무 처리 안 함
99      }
100    });
101  };
102  var initPointList = function(){
103    $point_list = $('#shop_mypage_pointlist');
104    $point_list_table = $('#shop_mypage_pointlist_table');
105    $point_list_empty = $('#shop_mypage_pointlist_empty');
106    $point_list_more_button = $('#shop_mypage_pointlist_more');
107  };
108  /**
109   * 위시리스트 제거
110   * @param prod_code
111   */
112  var deleteProdWish = function(prod_code){
113    $.ajax({
114      type : 'POST',
115      data : {'type' : 'delete', 'prod_code' : prod_code},
116      url : ('/shop/add_prod_wish.cm'),
117      dataType : 'json',
118      success : function(res){
119        if(res.msg == 'SUCCESS'){
120          if(typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.addCountUserProfileAttr('wishCount', -1);
121          // window.location.reload();
122          $('#wish-item-' + prod_code).remove();
123          $('#wish_cnt').text($('#wish_cnt').text() - 1 > 0 ? $('#wish_cnt').text() - 1 : 0)
124        }else
125          alert(res.msg);
126      }
127    });
128  };
129
130  var deleteBookingProdWish = function(prod_code){
131    $.ajax({
132      type : 'POST',
133      data : {'type' : 'delete', 'prod_code' : prod_code},
134      url : ('/booking/add_prod_wish.cm'),
135      dataType : 'json',
136      success : function(res){
137        if(res.msg == 'SUCCESS'){
138          if(typeof CHANNEL_PLUGIN != "undefined") CHANNEL_PLUGIN.addCountUserProfileAttr('wishCount', -1);
139          window.location.reload();
140        }else
141          alert(res.msg);
142      }
143    });
144  };
145
146  var initRegularlyList = function(){
147    $regularly_list_body = $('#regularly_list_body');
148    $regularly_order_tab = $('#regularly_order_tab');
149    $regularly_cancel_tab = $('#regularly_cancel_tab');
150    getRegularlyOrderList(1);
151  };
152
153  var getRegularlyOrderList = function(page){
154    $.ajax({
155      type : 'POST',
156      data : {'page' : page},
157      url : ('/shop/mypage_regularly_order_list.cm'),
158      dataType : 'json',
159      cache : false,
160      success : function(result){
161        if(result.msg === 'SUCCESS'){
162          $regularly_list_body.html(result.html);
163          $regularly_cancel_tab.removeClass('active');
164          $regularly_order_tab.addClass('active');
165        }else{
166          alert(result.msg);
167        }
168      },
169      error : function(){
170        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
171      }
172    });
173  }
174
175  var getRegularlyCancelList = function(page){
176    $.ajax({
177      type : 'POST',
178      data : {'page' : page},
179      url : ('/shop/mypage_regularly_cancel_list.cm'),
180      dataType : 'json',
181      cache : false,
182      success : function(result){
183        if(result.msg === 'SUCCESS'){
184          $regularly_list_body.html(result.html);
185          $regularly_order_tab.removeClass('active');
186          $regularly_cancel_tab.addClass('active');
187        }else{
188          alert(result.msg);
189        }
190      },
191      error : function(){
192        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
193      }
194    });
195  }
196
197  var registerRegularlyCard = function(is_update){
198    $.ajax({
199      type : 'POST',
200      url : ('/shop/register_payment_method.cm'),
201      dataType : 'json',
202      cache : false,
203      success : function(result){
204        if(result.msg == 'SUCCESS'){
205          $.cocoaDialog.open({type : 'register_payment_method', custom_popup : result.html, pc_width : 400}, function(){
206            if(add_member_billing_check) return;
207            var $register_payment_method_form = $("#register_payment_method_form");
208            var $num_input = $register_payment_method_form.find('input[inputmode="numeric"] , input[type=password]');
209            var $auto_focus = $register_payment_method_form.find('input[type=text] , input[type=password]');
210            var $agree_all_check = $('#payment_method_agree_all_check');
211            var $agree = $register_payment_method_form.find('._agree');
212            var $open_popup_privacy = $register_payment_method_form.find('._open_popup_privacy');
213            $num_input.check_num();
214            for(var i = 0; i < ($num_input.length - 1); i++){
215              (function(cnt){
216                $($auto_focus[cnt]).on('keyup', function(){
217                  var $that = $(this);
218                  if($that.val().length == $that.attr('maxlength')){
219                    $($auto_focus[cnt + 1]).focus();
220                  }
221                });
222              })(i);
223            }
224            $agree_all_check.off('change').on('change', function(val){
225              $agree.prop('checked', $agree_all_check.prop('checked'));
226            });
227            $agree.off('change').on('change', function(){
228              var agree_cnt = 0;
229              $.each($agree, function(){
230                if($(this).prop('checked')) agree_cnt++;
231              })
232              $agree_all_check.prop('checked', $agree.length === agree_cnt);
233            });
234            $open_popup_privacy.off('click').on('click', function(){
235              openPopupPrivacy($(this).attr('data-type'));
236            })
237            $register_payment_method_form.find('input[name="card_type"]').off('click').on('click', function(){
238              if($(this).hasClass('personal')){
239                $register_payment_method_form.find('label[for="birthday"]').text('생년월일')
240                $register_payment_method_form.find('input[name="birthday"]').attr('placeholder', '6자리 입력');
241                $register_payment_method_form.find('input[name="birthday"]').attr('minlength', '6');
242                $register_payment_method_form.find('input[name="birthday"]').attr('maxlength', '6');
243              }else{
244                $register_payment_method_form.find('label[for="birthday"]').text('사업자번호');
245                $register_payment_method_form.find('input[name="birthday"]').attr('placeholder', '사업자번호 입력');
246                $register_payment_method_form.find('input[name="birthday"]').attr('minlength', '9');
247                $register_payment_method_form.find('input[name="birthday"]').attr('maxlength', '10');
248              }
249            })
250
251            $register_payment_method_form.find("._register").click(function(){
252              var data = $register_payment_method_form.serializeObject();
253
254              var all_check = true;
255              $.each(data, function(k, v){
256                if(!all_check) return false;
257                if($.isArray(v)){
258                  $.each(v, function(index, v2){
259                    if(v2 === ""){
260                      all_check = false;
261                      return false;
262                    }
263                  });
264                }else{
265                  if(v === ""){
266                    all_check = false;
267                    return false;
268                  }
269                }
270              });
271
272              if(!all_check){
273                alert('등록정보를 모두 입력해주세요');
274                return false;
275              }
276
277
278              var agree_count = $register_payment_method_form.find("._checkbox_group ._agree:checked").length;
279              if(agree_count !== 4){
280                alert('이용약관을 동의해주세요');
281                return false;
282              }
283
284              data.agree = 'Y';
285              data.is_update = is_update;
286              add_member_billing_check = true;
287              $.ajax({
288                type : 'POST',
289                data : data,
290                url : ('/shop/add_easy_payment_card.cm'),
291                dataType : 'json',
292                cache : false,
293                success : function(result){
294                  if(result.msg == 'SUCCESS'){
295                    $("#card_info_wrap_before").addClass('hide');
296                    var $card_info_wrap_after = $("#card_info_wrap_after");
297                    $card_info_wrap_after.removeClass('hide');
298                    $card_info_wrap_after.find('._card_name').text(result.card_name || '');
299                    $card_info_wrap_after.find('._card_no').text(result.card_no || '');
300                    $("#card_info_wrap_after_tool").removeClass('hide');
301                    $.cocoaDialog.close();
302                  }else{
303                    alert(result.msg);
304                  }
305                  add_member_billing_check = false;
306                },
307                error : function(){
308                  alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
309                }
310              });
311            });
312          });
313        }else{
314          alert(result.msg);
315        }
316      },
317      error : function(){
318        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
319      }
320    });
321  }
322
323  var openPopupPrivacy = function(agree_type){
324    var $popup_html;
325    switch(agree_type){
326      case 'regularly_policy_agree' :
327        $popup_html = IMWEB_TEMPLATE.loadSimple('REGULARLY_POLICY_TEMPLATE');
328        break;
329      case 'regularly_privacy_agree' :
330        $popup_html = IMWEB_TEMPLATE.loadSimple('REGULARLY_PRIVACY_TEMPLATE');
331        break;
332      case 'regularly_third_agree' :
333        $popup_html = IMWEB_TEMPLATE.loadSimple('REGULARLY_THIRD_TEMPLATE');
334        break;
335      case 'regularly_payment_agree' :
336        $popup_html = IMWEB_TEMPLATE.loadSimple('REGULARLY_PAYMENT_TEMPLATE');
337        break;
338      default :
339        $popup_html = IMWEB_TEMPLATE.loadSimple('PRIVACY_TEMPLATE');
340        break;
341    }
342    $.cocoaDialog.open({type : 'site_payment_privacy', custom_popup : $popup_html});
343  }
344
345  var deleteRegularlyCard = function(use_regularly_order){
346    use_regularly_order = 'N';
347    if(use_regularly_order === 'Y'){
348      $.cocoaDialog.open({
349        type : 'alert_responsive',
350        content : getLocalizeString("설명_진행중인정기구독주문이있어카드삭제불가", "", "현재 진행 중인 정기구독 주문이 있어 카드를 삭제할 수 없습니다.<br/>카드 변경 혹은 정기구독 해지 후 카드를 삭제해 주세요."),
351        confirm_text : getLocalizeString('버튼_확인', '', '확인')
352      });
353    }else{
354      $.cocoaDialog.open({
355        type : 'alert_responsive',
356        content : getLocalizeString("설명_등록된자동결제카드를삭제하시겠습니까", "", "등록된 자동결제 카드를 <br class='hidden-lg hidden-md hidden-sm'/>삭제하시겠습니까?"),
357        confirm_text : getLocalizeString('버튼_확인', '', '확인'),
358        cancel_text : getLocalizeString('버튼_취소', '', '취소')
359      }, function(){
360        $.ajax({
361          type : 'POST',
362          url : ('/shop/delete_easy_payment_card.cm'),
363          dataType : 'json',
364          cache : false,
365          success : function(result){
366            if(result.msg == 'SUCCESS'){
367              $("#card_info_wrap_before").removeClass('hide');
368              $("#card_info_wrap_after").addClass('hide');
369              $("#card_info_wrap_after_tool").addClass('hide');
370              $.cocoaDialog.close();
371            }else{
372              alert(result.msg);
373            }
374          },
375          error : function(){
376            alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
377          }
378        });
379      });
380    }
381  }
382
383  var changeRegularlyCard = function(){
384    registerRegularlyCard('Y');
385  }
386
387  var unsetRegularlyAllProd = function(idx){
388    $.cocoaDialog.open({
389      type : 'alert_responsive',
390      content : getLocalizeString("설명_전체상품의정기구독을해지하시겠습니까", "", "전체 상품의 정기구독을 <br class='hidden-lg hidden-md hidden-sm'/>해지하시겠습니까?"),
391      confirm_text : getLocalizeString('버튼_확인', '', '확인'),
392      cancel_text : getLocalizeString('버튼_취소', '', '취소')
393    }, function(){
394      unsetRegularlyProd('all', idx);
395    });
396  };
397
398  var unsetRegularlyProdItem = function(idx, item_code, prod_check_code, item_code_list){
399    var msg = getLocalizeString("설명_해당상품의정기구독을해지하시겠습니까", "", "해당 상품의 정기구독을 <br class='hidden-lg hidden-md hidden-sm'/>해지하시겠습니까?");
400    if(prod_check_code != ''){
401      msg = getLocalizeString("설명_해당상품의정기구독을해지하시겠습니까선택옵션도함께", "", "해당 상품의 정기구독을 <br class='hidden-lg hidden-md hidden-sm'/>해지하시겠습니까?<br>선택옵션도 함께 해지됩니다.");
402    }
403    $.cocoaDialog.open({
404      type : 'alert_responsive',
405      content : msg,
406      confirm_text : getLocalizeString('버튼_확인', '', '확인'),
407      cancel_text : getLocalizeString('버튼_취소', '', '취소')
408    }, function(){
409      unsetRegularlyProd('item', idx, item_code, prod_check_code, item_code_list);
410    });
411  };
412
413  var unsetRegularlyProd = function(type, idx, item_code, prod_check_code, item_code_list){
414    $.ajax({
415      type : 'POST',
416      data : {
417        'type' : type,
418        'idx' : idx,
419        'item_code' : item_code,
420        'prod_check_code' : prod_check_code,
421        'item_code_list' : item_code_list
422      },
423      url : ('/shop/update_regularly_status.cm'),
424      dataType : 'json',
425      cache : false,
426      success : function(res){
427        if(res.msg == 'SUCCESS'){
428          var location_url = '/shop_mypage/?m2=regularly';
429          window.location.href = location_url;
430        }else{
431          alert(res.msg);
432        }
433      },
434      error : function(){
435        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
436      }
437    });
438  };
439
440  /**
441   * 이전 구독일정 모달
442   * @param regularly_code
443   * @param is_multiple_prod
444   */
445  var showRegularlyDateList = function(regularly_code, is_multiple_prod){
446    $.ajax({
447      type : 'POST',
448      data : {'is_multiple_prod' : is_multiple_prod},
449      url : ('/shop/open_regularly_date.cm'),
450      dataType : 'json',
451      success : function(result){
452        if(result.msg == 'SUCCESS'){
453          $.cocoaDialog.open({type : 'regularly_date_list', custom_popup : result.html}, function(){
454            getRegularlyDateList(regularly_code, 1, is_multiple_prod);
455          });
456        }else{
457        }
458      },
459      error : function(){
460        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
461      }
462    });
463  };
464
465  var getRegularlyDateList = function(regularly_code, page, is_multiple_prod){
466    var $regularly_date_body = $('#regularly_date_body');
467    var $regularly_date_paging = $('#regularly_date_paging');
468    if($regularly_date_body.length > 0){
469      $.ajax({
470        type : 'GET',
471        data : {'regularly_code' : regularly_code, 'page' : page, 'is_multiple_prod' : is_multiple_prod},
472        url : ('/shop/regularly_date_list.cm'),
473        dataType : 'json',
474        cache : true,
475        success : function(result){
476          if(result.msg == 'SUCCESS'){
477            $regularly_date_body.html(result.html);
478            if(result.paging_html != ''){
479              $regularly_date_paging.html(result.paging_html);
480            }
481          }else{
482            alert(result.msg);
483          }
484        },
485        error : function(){
486          alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
487        }
488      });
489    }
490  };
491
492  var showRegularlySelectPeriod = function(idx){
493    $.ajax({
494      type : 'POST',
495      data : {'idx' : idx},
496      url : ('/shop/regularly_select_period.cm'),
497      dataType : 'json',
498      cache : false,
499      success : function(result){
500        if(result.msg == 'SUCCESS'){
501          $.cocoaDialog.open({type : 'regularly_select_period', custom_popup : result.html}, function(){
502            $('#regularly_select_period_confirm').on('click', function(){
503              var cycle_type = $("#cycle_type").val();
504              var cycle_value = $("#cycle_value").val();
505              changeRegularlyPeriod(idx, cycle_type, cycle_value);
506            })
507          });
508        }else{
509          alert(result.msg);
510        }
511      },
512      error : function(){
513        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
514      }
515    });
516  };
517
518  var changeRegularlyPeriod = function(idx){
519    var cycle_type = $("#cycle_type").val();
520    var cycle_value = $("#cycle_value").val();
521    $.ajax({
522      type : 'POST',
523      data : {'idx' : idx, 'cycle_type' : cycle_type, 'cycle_value' : cycle_value},
524      url : ('/shop/update_regularly_cycle.cm'),
525      dataType : 'json',
526      cache : false,
527      success : function(res){
528        if(res.msg == 'SUCCESS'){
529          var location_url = '/shop_mypage/?m2=regularly&idx=' + idx;
530          window.location.href = location_url;
531        }else{
532          alert(res.msg);
533        }
534      },
535      error : function(){
536        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
537      }
538    });
539  };
540
541  var skipRegularlyProdAll = function(idx, date_text){
542    $.cocoaDialog.open({
543      type : 'alert_responsive',
544      content : getLocalizeString("설명_이번배송을건너뛰겠습니까다음구독일은nìž
544…니다", date_text, "이번 배송을 건너뛰겠습니까?<br/>해당 상품의 다음 구독일은 <br class='hidden-lg hidden-md'/> <strong>%1</strong> 입니다."),
545      confirm_text : getLocalizeString('버튼_확인', '', '확인'),
546      cancel_text : getLocalizeString('버튼_취소', '', '취소')
547    }, function(){
548      skipRegularlyProd('all', idx);
549    });
550  };
551
552  var skipRegularlyProdItem = function(idx, item_code, date_text, prod_check_code, item_code_list){
553    var msg = getLocalizeString("설명_이번배송을건너뛰겠습니까다음구독일은n입니다", date_text, "이번 배송을 건너뛰겠습니까?<br/>해당 상품의 다음 구독일은<br class='hidden-lg hidden-md'/> <strong>%1</strong> 입니다.");
554    if(prod_check_code != ''){
555      msg = getLocalizeString("설명_이번배송을건너뛰겠습니까다음구독일은n입니다선택옵션도함께", date_text, "이번 배송을 건너뛰겠습니까?<br/>해당 상품의 다음 구독일은<br class='hidden-lg hidden-md'/> <strong>%1</strong> 입니다.<br>선택옵션도 함께 적용됩니다.");
556    }
557    console.log(msg)
558    $.cocoaDialog.open({
559      type : 'alert_responsive',
560      content : msg,
561      confirm_text : getLocalizeString('버튼_확인', '', '확인'),
562      cancel_text : getLocalizeString('버튼_취소', '', '취소')
563    }, function(){
564      skipRegularlyProd('item', idx, item_code, prod_check_code, item_code_list);
565    });
566  };
567
568  var skipRegularlyProd = function(type, idx, item_code, prod_check_code, item_code_list){
569    $.ajax({
570      type : 'POST',
571      data : {
572        'type' : type,
573        'idx' : idx,
574        'item_code' : item_code,
575        'prod_check_code' : prod_check_code,
576        'item_code_list' : item_code_list
577      },
578      url : ('/shop/update_regularly_skip.cm'),
579      dataType : 'json',
580      cache : false,
581      success : function(res){
582        if(res.msg == 'SUCCESS'){
583          var location_url = '/shop_mypage/?m2=regularly&idx=' + idx;
584          window.location.href = location_url;
585        }else{
586          alert(res.msg);
587        }
588      },
589      error : function(){
590        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
591      }
592    });
593  };
594
595  var showRegularlyChangeDetail = function(idx, count, regularly_code, item_code){
596    $.ajax({
597      type : 'POST',
598      data : {'count' : count},
599      url : ('/shop/regularly_change_count.cm'),
600      dataType : 'json',
601      cache : false,
602      success : function(result){
603        if(result.msg == 'SUCCESS'){
604          $.cocoaDialog.open({type : 'regularly_change_detail', custom_popup : result.html, pc_width : 400}, function(){
605            var $modal_regularly_change_detail = $('.modal_regularly_change_detail');
606            var $regularly_count = $modal_regularly_change_detail.find('input[name=count]');
607            $('#regularly_count_minus').on('click', function(){
608              if(parseInt($regularly_count.val()) > 1) $regularly_count.val(parseInt($regularly_count.val()) - 1);
609            });
610            $('#regularly_count_plus').on('click', function(){
611              $regularly_count.val(parseInt($regularly_count.val()) + 1);
612            });
613            $regularly_count.change(function(){
614              if(parseInt($regularly_count.val()) < 1) $regularly_count.val(1);
615            });
616
617            $('#regularly_change_count_confirm').on('click', function(){
618              RegularlyChangeDetail(idx, regularly_code, item_code, $regularly_count.val());
619            })
620          });
621        }else{
622          alert(result.msg);
623        }
624      },
625      error : function(){
626        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
627      }
628    });
629  };
630
631  var RegularlyChangeDetail = function(idx, regularly_code, item_code, change_count){
632    $.ajax({
633      type : 'POST',
634      data : {'regularly_code' : regularly_code, 'item_code' : item_code, 'change_count' : change_count},
635      url : ('/shop/update_regularly_count.cm'),
636      dataType : 'json',
637      cache : false,
638      success : function(result){
639        if(result.msg == 'SUCCESS'){
640          var location_url = '/shop_mypage/?m2=regularly&idx=' + idx;
641          window.location.href = location_url;
642        }else{
643          alert(result.msg);
644        }
645      },
646      error : function(){
647        alert(getLocalizeString('설명_잠시후다시시도해주세요', '', '잠시 후 다시 시도해주세요.'));
648      }
649    });
650  };
651
652  var getOrderList = function(type, is_c3 = false){
653    if(getOrderListProgress) return;
654    getOrderListProgress = true;
655
656    // URL에서 order-type 쿼리 파라미터 읽기
657    var urlParams = new URLSearchParams(window.location.search);
658    var orderType = urlParams.get('order-type');
659    var isMigration = orderType === 'migration' ? 'Y' : 'N';
660    // 주문처리 현황에서 특정 칸을 누른 경우 그 상태로만 목록을 좁힌다
661    var summaryStatus = urlParams.get('summary-status') || '';
662    // 집계 기간과 목록 기간을 맞추기 위해 위젯이 심어둔 개월 수를 함께 보낸다
663    var summaryMonths = $('#shop_mypage_order_summary').data('months') || '';
664
665    $.ajax({
666      type : 'POST',
667      data : {'page' : currentPage, 'type' : type, 'isMigration' : isMigration, 'summary_status' : summaryStatus, 'summary_months' : summaryMonths},
668      url : is_c3 ? '/shop/oms/OMS_mypage_order_list.cm' : '/shop/mypage_order_list.cm',
669      dataType : 'json',
670      cache : false,
671      success : function(result){
672        getOrderListProgress = false;
673        if(result.msg == 'SUCCESS'){
674          if(result.count > 0){
675            $order_list_empty.hide();
676            $order_list.show();
677
678            if(currentPage == 1){
679              $order_list.html(result.html);
680            }else{
681              $order_list.append(result.html);
682            }
683            var viewport = window.innerWidth > 768 ? 'pc' : 'mobile';
684            resizeBtnSize($order_list);
685            observeAlphaReviewInjection($order_list);
686            $(window).off('resize').on('resize', function(){
687              var _viewport = window.innerWidth > 768 ? 'pc' : 'mobile';
688              if(viewport !== _viewport){
689                viewport = _viewport;
690                resizeBtnSize($order_list);
691              }
692            });
693	          if(typeof crema !== 'undefined' && typeof crema.run === 'function'){
694		          crema.run();
695	          }
696          }else{
697            $order_list.hide();
698            if (alphaReviewObserver) {
699              alphaReviewObserver.disconnect();
700              alphaReviewObserver = null;
701            }
702            if(type === 'cancel'){
703              $order_list_empty.text(getLocalizeString('설명_취소내역이없습니다', '', '취소 내역이 없습니다.'));
704            }else{
705              $order_list_empty.text(getLocalizeString('설명_주문내역이없습니다', '', '주문 내역이 없습니다.'));
706            }
707            $order_list_empty.show();
708          }
709
710          currentPage++;
711          if(parseInt(currentPage) > parseInt(result.pageCount))
712            $order_list_more_button.hide();
713          else
714            $order_list_more_button.show();
715        }else{
716          alert(result.msg);
717        }
718      }
719    });
720  };
721
722  var resizeBtnSize = function(list){
723    var window_width = window.innerWidth;
724    var $btn_tool_row = list.find('._btn_tool_row');
725    $btn_tool_row.css('width', 'auto');
726    if(window_width > 768){
727      var max_width = 24;
728      $.each($btn_tool_row, function(k, v){
729        var w = v.getBoundingClientRect().width;
730        if(w > max_width){
731          max_width = w;
732        }
733      });
734      $btn_tool_row.width(Math.ceil(max_width));
735    }
736  };
737
738  var alphaReviewObserver = null;
739
740  var observeAlphaReviewInjection = function(list){
741    if (typeof MutationObserver === 'undefined') return;
742    if (alphaReviewObserver) {
743      alphaReviewObserver.disconnect();
744      alphaReviewObserver = null;
745    }
746    var nodes = list[0] ? list[0].querySelectorAll('.alpha_add_review_button') : [];
747    if (!nodes.length) return;
748    var scheduled = false;
749    alphaReviewObserver = new MutationObserver(function(){
750      if (scheduled) return;
751      scheduled = true;
752      Promise.resolve().then(function(){
753        scheduled = false;
754        resizeBtnSize(list);
755      });
756    });
757    for (var i = 0; i < nodes.length; i++) {
758      alphaReviewObserver.observe(nodes[i], { childList: true, subtree: true });
759    }
760  };
761
762  var getPointList = function(){
763    if(get_point_list_progress) return;
764    get_point_list_progress = true;
765    $.ajax({
766      type : 'POST',
767      data : {'page' : currentPage},
768      url : ('/shop/mypage_point_list.cm'),
769      dataType : 'json',
770      cache : false,
771      success : function(result){
772        get_point_list_progress = false;
773        if(result.msg == 'SUCCESS'){
774          if(result.count > 0){
775            $point_list_table.show();
776            $point_list_empty.hide();
777            $point_list.append(result.html);
778          }else{
779            $point_list_table.hide();
780            $point_list_empty.show();
781          }
782          currentPage++;
783          if(parseInt(currentPage) > parseInt(result.pageCount)) $point_list_more_button.hide();
784        }else{
785          alert(result.msg);
786        }
787      }
788    });
789  };
790
791  var trackingParcel = function(code, is_c3 = false){
792    if(code == void 0 || code == ''){
793      alert(LOCALIZE.설명_택배사또는송장번호가입력되지않았습니다());
794      return;
795    }
796
797    $.ajax({
798      type : 'POST',
799      data : {'code' : code},
800      url : is_c3 ? '/ajax/oms/OMS_get_parcel_info.cm' : '/ajax/get_parcel_info.cm',
801      dataType : 'json',
802      success : function(res){
803        if(res.msg == 'SUCCESS'){
804          $.cocoaDialog.open({type : 'admin', custom_popup : res.html, width : 550});
805        }else{
806          alert(res.msg);
807        }
808      }
809    });
810  };
811	const omsTrackingParcel = async function(parcelCompanyIdx="",invoiceNo=""){
812		if(parcelCompanyIdx == "" || invoiceNo == ''){
813			alert(LOCALIZE.설명_택배사또는송장번호가입력되지않았습니다());
814			return;
815		}
816		const _url = new URL('/ajax/oms/OMS_get_parcel_info.cm', window.location.href);
817		_url.searchParams.append('parcelCompanyIdx', parcelCompanyIdx);
818		_url.searchParams.append('invoiceNo', invoiceNo);
819
820		const res = fetch(_url.href, {
821			credentials: 'include',
822			headers: {
823				'Accept': 'application/json',
824			}
825		});
826
827		const json = await res.then(res => res.json()).catch(alert);
828		const html = json.html;
829
830		$.cocoaDialog.open({type : 'admin', custom_popup : html, width : 550});
831
832	};
833
834	const omsOrderConfirm = async function(orderCode, orderSectionCode){
835		if (!window.confirm(window.LOCALIZE.설명_구매확정여부확인())) {
836			return;
837		}
838
839		const { data: authData } = await axios.get(`/ajax/oms/OMS_auth.cm`);
840
841		if (!/^Success$/i.test(authData.message)) {
842			alert(authData.message);
843			return;
844		}
845
846		const { data: response } = await axios.patch(`/ajax/oms/OMS_wrap_customer_v1_orders_{orderCode}_sections_purchase-confirmation.cm?orderCode=${orderCode}`, {
847			orderSectionCode
848		}, {
849			headers: {
850				'Authorization': `Bearer ${authData.token}`,
851				'Content-Type': 'application/json',
852				'Accept': 'application/json',
853			},
854		});
855
856		const { code, data: omsResponse } = response;
857
858		if (omsResponse?.updateResult === true) {
859			window.location.reload();
860		} else {
861			// TODO: 문구 수정 다국어로 처리 필요
862			window.alert(`[${code || 'UNKNOWN'}] ${window.LOCALIZE.설명_구매확정처리실패()}`);
863		}
864	}
865
866  var trackingParcelEcpay = function(code){
867    if(isBlank(code)){
868      return;
869    }
870    $.ajax({
871      "type" : "POST",
872      "data" : {"code" : code},
873      "url" : "/shop/tracking_parcel_ecpay.cm",
874      "dataType" : "JSON",
875      "success" : function(res){
876        $.cocoaDialog.open({type : 'admin', custom_popup : res['html'], width : 550});
877      }
878    });
879  };
880
881  /**
882   * 취소요청 페이지 초기화
883   * @param auto_cancel 자동취소지원유무 (Y/N)
884   */
885  var initCancelOrder = function(order_code, auto_cancel){
886    $order_cancel_form = $('#order_cancel_form');
887    auto_cancel_enable = auto_cancel;
888    cancel_order_code = order_code;
889    cancelOrderSelectProdOrder();
890  };
891
892  /* 취소요청 페이지 품목주문 전체 선택 */
893  var cancelOrderSelectAllProdOrder = function(chk){
894    $order_cancel_form.find("input._prodOrderCheck").prop("checked", chk);
895    cancelOrderLoadRefundPriceData();
896  };
897
898  /* 취소요청 페이지 품목주문 선택 */
899  var cancelOrderSelectProdOrder = function(){
900    var refund_price = cancelOrderLoadRefundPriceData();
901    if(auto_cancel_enable == 'Y' || refund_price == 0){	/* 전체 취소, 자동 취소 가능 */
902      $('#refund_data_wrap').hide();
903    }else{	/* 부분취소 */
904      $('#refund_data_wrap').show();
905    }
906  };
907
908  /* 취소요청 페이지에서 환불 금액 정보를 로드함 */
909  var cancelOrderLoadRefundPriceData = function(){
910    var refund_price = 0;
911    var prod_order_code_list = [];
912    $order_cancel_form.find("input._prodOrderCheck:checked").each(function(){
913      prod_order_code_list.push($(this).val());
914    });
915    $.ajax({
916      type : 'POST',
917      data : {"prod_order_code_list" : prod_order_code_list, "order_code" : cancel_order_code},
918      url : ('/shop/order_cancel_refund_price_data.cm'),
919      dataType : 'json',
920      async : false,
921      success : function(res){
922        if(res.msg == 'SUCCESS'){
923          auto_cancel_enable = res.auto_cancel_enable === true ? 'Y' : 'N';
924          $('#refund_price_data_wrap').html(res.result_html);
925          refund_price = res['refund_price'];
926        }
927      }
928    });
929    return refund_price;
930  };
931
932  /* 반품요청 페이지에서 환불 금액 정보를 로드함 */
933  var returnOrderLoadRefundPriceData = function(){
934    var prod_order_code_list = [];
935    $order_return_form.find("input._prodOrderCheck:checked").each(function(){
936      prod_order_code_list.push($(this).val());
937    });
938
939    // 반품 배송비 계산 - 전체 반품일 경우 초기 배송비도 더해서 보여준다
940    $order_return_form.find('#_include_deliv_price').hide();
941    var deliv_return_price = $order_return_form.find('#_deliv_refund_price').data('return_price');
942    if($order_return_form.find('input._prodOrderCheck').length == $order_return_form.find('input._prodOrderCheck:checked').length){
943      var deliv_price = $order_return_form.find('#_deliv_refund_price').data('deliv_price');
944      var island_price = $order_return_form.find('#_deliv_refund_price').data('island_price');
945      if(deliv_price == 0){
946        deliv_price = deliv_return_price;
947      }
948      deliv_return_price += deliv_price + island_price;
949      $order_return_form.find('#_include_deliv_price').show();	// 초기 배송비 포함 출력 제어
950    }
951    $order_return_form.find('#_deliv_refund_price').text(LOCALIZE.getCurrencyFormat(deliv_return_price));
952
953    var return_reason = $order_return_form.find("select[name='reason']").val();
954    var deliv_fee_pay_method = $order_return_form.find("select[name='deliv_fee_pay_method']").val();
955    $.ajax({
956      type : 'POST',
957      data : {
958        "prod_order_code_list" : prod_order_code_list,
959        "order_code" : return_order_code,
960        "deliv_fee_pay_method" : deliv_fee_pay_method,
961        "return_reason" : return_reason
962      },
963      url : ('/shop/order_return_refund_price_data.cm'),
964      dataType : 'json',
965      async : false,
966      success : function(res){
967        if(res.msg == 'SUCCESS'){
968
969          $order_return_form.find('#_deliv_refund_price').text(LOCALIZE.getCurrencyFormat(res.deliv_return_price));
970
971          auto_cancel_enable = res.auto_cancel_enable === true ? 'Y' : 'N';
972          $('#refund_price_data_wrap').html(res.result_html);
973        }
974      }
975    });
976
977    return auto_cancel_enable;
978  };
979
980  /**
981   * 취소요청 페이지 취소버튼 누를떄 처리
982   * @param type shop/booking
983   */
984  var cancelOrder = function(type){
985
986    if(is_canceling) return;
987
988    $order_cancel_form = $('#order_cancel_form');
989    if(type == 'shop'){
990      if(!confirm(LOCALIZE.타이틀_주문취소를진행하시겠습니까())) return;
991    }else if(type == 'booking'){
992      if(!confirm(LOCALIZE.타이틀_예약취소를진행하시겠습니까())) return;
993    }
994
995    is_canceling = true;
996    var data = $order_cancel_form.serializeObject();
997    data.type = type;
998    $.ajax({
999      type : 'POST',
1000      data : data,
1001      url : ('/shop/order_cancel.cm'),
1002      dataType : 'json',
1003      success : function(res){
1004        if(res.msg == 'SUCCESS'){
1005          alert(res.result_msg);
1006          if(res.ga_switch && res.ga_info.length >= 1){
1007            /* GA 전자상거래 회수 */
1008            if(typeof GOOGLE_ANAUYTICS != "undefined"){
1009              // GOOGLE_ANAUYTICS.Completepayment(res.ga_info[0]['id'],res.total_price);
1010              GOOGLE_ANAUYTICS.ReversePayment(res.ga_info);
1011            }
1012          }
1013
1014          var location_url = '/shop_mypage/?m2=order';
1015          if(res.is_guest_login == 'Y'){
1016            location_url += '&guest_login=Y';
1017          }
1018          window.location.href = location_url;
1019        }else{
1020          alert(res.msg);
1021        }
1022
1023        is_canceling = false;
1024      }
1025    });
1026  };
1027
1028	const omsCancelTotalOrder = async function(orderCode){
1029		try {
1030			if (!confirm('전체 취소하시겠습니까?')) {
1031				return;
1032			}
1033			const { data: authData } = await axios.get(`/ajax/oms/OMS_auth.cm`);
1034			if (!/^Success$/i.test(authData.msg)) {
1035				throw new Error(authData.msg);
1036			}
1037			const { data } = await axios.patch(
1038				`/ajax/oms/OMS_wrap_customer_v1_orders_{orderCode}_unpaid-deposit-order_cancel.cm?orderCode=${orderCode}`,
1039				null,
1040				{
1041					headers: {
1042						Authorization: `Bearer ${authData.token}`,
1043					}
1044				}
1045				);
1046			if (!/^Success$/i.test(data.message)) {
1047				throw new Error(data.message);
1048			}
1049			alert('취소가 완료되었습니다.');
1050			window.location.reload();
1051		} catch (error) {
1052			alert('취소에 실패하였습니다.\n' + error.message);
1053		}
1054	}
1055
1056  /* 반품/교환 페이지 품목주문 전체 선택 */
1057  var returnOrderSelectAllProdOrder = function(chk){
1058    $order_return_form.find("input._prodOrderCheck").prop("checked", chk);
1059    returnOrderLoadRefundPriceData();
1060  };
1061  var exchangeOrderSelectAllProdOrder = function(chk){
1062    $order_exchange_form.find("input._prodOrderCheck").prop("checked", chk);
1063  };
1064
1065  /* 반품/교환 페이지 품목주문 선택 */
1066  var returnOrderSelectProdOrder = function(){
1067    returnOrderLoadRefundPriceData();
1068    if(auto_cancel_enable == 'Y'){	/* 전체 취소, 자동 취소 가능 */
1069      $('#refund_data_wrap').hide();
1070    }else{	/* 부분취소 */
1071      $('#refund_data_wrap').show();
1072    }
1073  };
1074  var exchangeOrderSelectProdOrder = function(){
1075    if($order_exchange_form.find("input._prodOrderCheck:not(:checked)").length == 0 && auto_cancel_enable == 'Y'){	/* 전체 취소, 자동 취소 가능 */
1076      $('#refund_data_wrap').hide();
1077    }else{	/* 부분취소 */
1078      $('#refund_data_wrap').show();
1079    }
1080  };
1081
1082  /* 반품 수거 방법 변경 */
1083  var changeReturnCollectMethod = function(collect_method){
1084    $('._collect_method_wrap').hide();
1085    $('._collect_address_wrap').hide();
1086
1087    switch(collect_method){
1088      case 'RETURN_DESIGNATED':
1089        /* 지정 반품택배 */
1090        $('input[name="collect_method_type"][value="RETURN_DESIGNATED"]:radio').prop('checked', true);
1091        $('#collect_method_designated_wrap').show();
1092        $('._collect_address_wrap').show();
1093        break;
1094      case 'RETURN_DIRECT':
1095      case 'RETURN_PARCEL':
1096        $('input[name="collect_method_type"][value="RETURN_PARCEL"]:radio').prop('checked', true);
1097        /* 직접 발송 */
1098        $('#collect_method_direct_wrap').show();
1099        $('._collect_address_wrap').show();
1100        $('#collect_method').val(collect_method);
1101        if(collect_method == 'RETURN_PARCEL'){	//택배로 발송
1102          $('#collect_deliv_company').show();
1103          $('#collect_tracking_number').show();
1104          $('._form_select_wrap').show();
1105          $('#collect_msg').hide();
1106        }else{	/* 직접전달 */
1107          $('#collect_deliv_company').hide();
1108          $('#collect_tracking_number').hide();
1109          $('._form_select_wrap').hide();
1110          $('#collect_msg').show();
1111        }
1112        break;
1113      case 'RETURN_LGST_ORDER':
1114        $('input[name="collect_method_type"][value="RETURN_LGST_ORDER"]:radio').prop('checked', true);
1115        $('#collect_method_ecpay_api_wrap').show();
1116        $('#collect_method').val(collect_method);
1117        break;
1118
1119    }
1120  };
1121  /* 반품 수거 방법 변경 (교환시) */
1122  var changeExchangeCollectMethod = function(collect_method){
1123    if(collect_method == 'RETURN_DESIGNATED'){	/* 지정 반품택배 */
1124      $("#collect_method_type_RETURN_DESIGNATED").prop('checked', true);
1125      $('#collect_method_direct_wrap').hide();
1126      $('#collect_method_designated_wrap').show();
1127    }else{	/* 직접 발송 */
1128      $("#collect_method_type_RETURN_PARCEL").prop('checked', true);
1129      $('#collect_method_direct_wrap').show();
1130      $('#collect_method_designated_wrap').hide();
1131      $('#collect_method').val(collect_method);
1132      if(collect_method == 'RETURN_PARCEL'){	//택배로 발송
1133        $('#collect_deliv_company').show();
1134        $('#collect_tracking_number').show();
1135        $('#collect_msg').hide();
1136      }else{	/* 직접전달 */
1137        $('#collect_deliv_company').hide();
1138        $('#collect_tracking_number').hide();
1139        $('#collect_msg').show();
1140      }
1141    }
1142  };
1143
1144  /**
1145   * 교환상세 다이얼로그 띄우기
1146   */
1147  var showExchangeDetail = function(exchange_idx){
1148    $.ajax({
1149      type : 'POST',
1150      data : {'exchange_idx' : exchange_idx},
1151      url : ('/shop/order_exchange_detail.cm'),
1152      dataType : 'html',
1153      success : function(html){
1154        $.cocoaDialog.open({type : 'order_exchange_detail', custom_popup : html});
1155      }
1156    });
1157  };
1158
1159  /**
1160   * 반품상세 다이얼로그 띄우기
1161   */
1162  var showReturnDetail = function(return_idx){
1163    $.ajax({
1164      type : 'POST',
1165      data : {'return_idx' : return_idx},
1166      url : '/shop/order_return_detail.cm',
1167      dataType : 'html',
1168      success : function(html){
1169        $.cocoaDialog.open({type : 'order_return_detail', custom_popup : html});
1170      }
1171    });
1172  };
1173
1174  const omsShowReturnDetail = async function(order_no, order_section_no, order_section_item_code){
1175	const _url = new URL('/shop/oms/OMS_order_return_detail.cm', window.location.origin);
1176	const _queries = new URLSearchParams();
1177	_queries.append('order_no', order_no);
1178	_queries.append('order_section_no', order_section_no);
1179	_queries.append('order_section_item_code', order_section_item_code);
1180	const res = fetch (_url, {
1181		method: 'POST',
1182		credentials: 'include',
1183		headers: {
1184			"Accept": "application/json",
1185			"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
1186		},
1187		body: _queries,
1188	});
1189
1190	const html = await res.then(res => res.text());
1191
1192	$.cocoaDialog.open({type : 'order_return_detail', custom_popup : html});
1193  }
1194	const omsShowExchangeDetail = async function(order_no, order_section_no, order_section_item_code){
1195		const _url = new URL('/shop/oms/OMS_order_exchange_detail.cm', window.location.origin);
1196		const _queries = new URLSearchParams();
1197		_queries.append('order_no', order_no);
1198		_queries.append('order_section_no', order_section_no);
1199		_queries.append('order_section_item_code', order_section_item_code);
1200		const res = fetch (_url, {
1201			method: 'POST',
1202			credentials: 'include',
1203			headers: {
1204				"Accept": "application/json",
1205				"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
1206			},
1207			body: _queries,
1208		});
1209
1210		const html = await res.then(res => res.text());
1211
1212		$.cocoaDialog.open({type : 'order_return_detail', custom_popup : html});
1213	}
1214
1215  /**
1216   *  취소상세 다이얼로그 띄우기
1217   * @param cancel_idx
1218   */
1219  var showCancelDetail = function(cancel_idx){
1220    $.ajax({
1221      type : 'POST',
1222      data : {'cancel_idx' : cancel_idx },
1223      url : '/shop/order_cancel_detail.cm',
1224      dataType : 'html',
1225      success : function(html){
1226        $.cocoaDialog.open({type : 'order_cancel_detail', custom_popup : html});
1227      }
1228    });
1229  };
1230
1231  const omsShowCancelDetail = async function(order_no, order_section_no, order_section_item_code){
1232	const _url = new URL('/shop/oms/OMS_order_cancel_detail.cm', window.location.origin);
1233	const _queries = new URLSearchParams();
1234	_queries.append('order_no', order_no);
1235	_queries.append('order_section_no', order_section_no);
1236	_queries.append('order_section_item_code', order_section_item_code);
1237	const res = fetch (_url, {
1238		method: 'POST',
1239		credentials: 'include',
1240		headers: {
1241			"Accept": "application/json",
1242			"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
1243		},
1244		body: _queries,
1245	});
1246
1247	const html = await res.then(res => res.text());
1248
1249	$.cocoaDialog.open({type : 'order_cancel_detail', custom_popup : html});
1250  }
1251
1252  /**
1253   * 반품요청 페이지 신청하기 누를떄 처리
1254   */
1255  var returnOrder = function(){
1256    if(!confirm(getLocalizeString('타이틀_반품신청을진행하시겠습니까', '', '반품 신청을 진행하시겠습니까?'))) return;
1257    var data = $order_return_form.serializeObject();
1258    $.ajax({
1259      type : 'POST',
1260      data : data,
1261      url : ('/shop/order_return.cm'),
1262      dataType : 'json',
1263      success : function(res){
1264        if(res.msg == 'SUCCESS'){
1265          if(res.result_msg != '') alert(res.result_msg);
1266          window.location.href = '/shop_mypage/?m2=cancel';
1267        }else{
1268          alert(res.msg);
1269        }
1270      }
1271    });
1272  };
1273
1274  /**
1275   * 교환요청 페이지 신청하기 누를떄 처리
1276   */
1277  var exchangeOrder = function(){
1278    if(!confirm(getLocalizeString('타이틀_교환신청을진행하시겠습니까', '', '교환 신청을 진행하시겠습니까?'))) return;
1279    var data = $order_exchange_form.serializeObject();
1280    $.ajax({
1281      type : 'POST',
1282      data : data,
1283      url : ('/shop/order_exchange.cm'),
1284      dataType : 'json',
1285      success : function(res){
1286        if(res.msg == 'SUCCESS'){
1287          if(res.result_msg != '') alert(res.result_msg);
1288          if(res.deliv_fee > 0){	/* 교환배송비가 있을경우 교환비용결제화면으로 이동 */
1289            window.location.href = '/shop_mypage/?m2=exchange_pay&idx=' + res.order_idx + '&exchange_idx=' + res.prod_order_idx;
1290          }else
1291            window.location.href = '/shop_mypage/?m2=cancel';
1292        }else{
1293          alert(res.msg);
1294        }
1295      }
1296    });
1297  };
1298  /**
1299   * 교환요청 페이지 신청하기 누를떄 처리
1300   */
1301  var showSippingAddress = function(shipping_place_code){
1302    $.ajax({
1303      type : 'POST',
1304      data : {'shipping_place_code' : shipping_place_code},
1305      url : ('/shop/get_shipping_place_data.cm'),
1306      dataType : 'json',
1307      success : function(res){
1308        if(res.msg == 'SUCCESS'){
1309          $('._return_address_wrap').text(res.addreess);
1310          $('._return_address_call_num').text(res.call_num);
1311        }else{
1312          alert(res.msg);
1313        }
1314      }
1315    });
1316  };
1317
1318  /**
1319   * 교환비용 결제 페이지 확인 누를떄 처리
1320   */
1321  var exchangeOrderPay = function(){
1322    $order_exchange_form = $('#order_exchange_form');
1323    if(!confirm(getLocalizeString('타이틀_교환비용결제를진행하시겠습니까', '', '교환 비용결제를 진행하시겠습니까?'))) return;
1324    var data = $order_exchange_form.serializeObject();
1325    $.ajax({
1326      type : 'POST',
1327      data : data,
1328      url : ('/shop/order_exchange_pay.cm'),
1329      dataType : 'json',
1330      success : function(res){
1331        if(res.msg == 'SUCCESS'){
1332          window.location.href = '/shop_mypage/?m2=order';
1333        }else{
1334          alert(res.msg);
1335        }
1336      }
1337    });
1338  };
1339
1340  /**
1341   * 반품철회 누를떄 처리
1342   */
1343  var withdrawReturnOrder = function(return_idx, is_c3){
1344    if(!confirm(getLocalizeString('타이틀_반품신청을철회하시겠습니까', '', '반품신청을 철회하시겠습니까?'))) return;
1345
1346    $.ajax({
1347      type : 'POST',
1348      data : {"return_idx" : return_idx},
1349      url : is_c3 ? '/shop/oms/OMS_order_return_withdraw.cm' : '/shop/order_return_withdraw.cm',
1350      dataType : 'json',
1351      success : function(res){
1352        if(res.msg == 'SUCCESS'){
1353          if(res.result_msg != '') alert(res.result_msg);
1354          window.location.href = '/shop_mypage/?m2=order';
1355        }else{
1356          alert(res.msg);
1357        }
1358      }
1359    });
1360  };
1361  /**
1362   * OMS; 반품철회, 교환철회 누를떄 처리
1363   */
1364	const omsWithdrawReturnOrder = function({qty=0,orderCode,orderSectionCode,orderSectionItemCode,flag=false}) {
1365		if (!qty) {
1366			alert('철회할 상품의 수량을 입력해주세요.');
1367			return;
1368		}
1369
1370		const localizeCode = (flag) ? "타이틀_교환신청을철회하시겠습니까" : "타이틀_반품신청을철회하시겠습니까";
1371	    const defaultString = flag ? "해당 상품을 반품을 철회 하시겠습니까?" : "해당 상품을 반품을 철회 하시겠습니까?";
1372
1373		if(confirm(getLocalizeString(localizeCode, '', defaultString))){
1374			const orderSectionItemCodes = {
1375				orderSectionItemCode :orderSectionItemCode,
1376				qty:Number(qty)
1377			};
1378			const targetItemInformation = [];
1379			targetItemInformation.push(orderSectionItemCodes)
1380			const requestData = {
1381				orderSectionCode : orderSectionCode,
1382				targetItemInformation:targetItemInformation,
1383			}
1384			const sectionManageUrl = new URL(`/customer/v1/orders/${orderCode}/sections/revert-return-request`,
1385				window.TEST_SERVER === true ? 'https://api.oms.imstage.me' : 'https://api.oms.imweb.me'
1386			)
1387			return fetch('/ajax/oms/OMS_auth.cm', { credentials: 'include' })
1388			  .then(res => res.json())
1389				.then(json => json.msg === 'SUCCESS' ? json.token : Promise.reject(json.msg))
1390				.then(token => fetch(sectionManageUrl.href, {
1391					method: 'PATCH',
1392					body: JSON.stringify(requestData),
1393					headers: {
1394						Accept: 'application/json',
1395						Authorization: `Bearer ${token}`,
1396						"Content-Type": "application/json"
1397					}
1398				}))
1399				.then(res => res.json())
1400				.then(json => {
1401					if(json.statusCode !== 200) {
1402						return Promise.reject(
1403							typeof window.LOCALIZE[`E_${json.code}`] === 'function' ?
1404								window.LOCALIZE[`E_${json.code}`]() :
1405								undefined
1406						)
1407					}
1408					if (!json.data.updateResult) {
1409						return Promise.reject()
1410					}
1411				})
1412				.catch(err => alert(err || window.LOCALIZE.타이틀_일시적인서비스장애()))
1413				.finally(() => window.location.reload());
1414		}
1415	}
1416	/**
1417	 * OMS; 취소철회 누를떄 처리
1418	 */
1419	const omsWithdrawCancelOrder = function({qty=0,orderCode,orderSectionCode,orderSectionItemCode}) {
1420		if (!qty) {
1421			alert('취소할 상품의 수량을 입력해주세요.');
1422			return;
1423		}
1424
1425		if(confirm(getLocalizeString('타이틀_취소신청을철회하시겠습니까', '', '취소신청을 철회 하시겠습니까?'))){
1426			const orderSectionItemCodes = {
1427				orderSectionItemCode :orderSectionItemCode,
1428				qty:Number(qty)
1429			};
1430			const targetItemInformation = [];
1431			targetItemInformation.push(orderSectionItemCodes)
1432			const requestData = {
1433				orderSectionCode : orderSectionCode,
1434				targetItemInformation:targetItemInformation,
1435			}
1436			const sectionManageUrl = new URL(`/customer/v1/orders/${orderCode}/sections/revert-cancel-request`,
1437				window.TEST_SERVER === true ? 'https://api.oms.imstage.me' : 'https://api.oms.imweb.me'
1438			)
1439			return fetch('/ajax/oms/OMS_auth.cm', { credentials: 'include' })
1440			  .then(res => res.json())
1441				.then(json => json.msg === 'SUCCESS' ? json.token : Promise.reject(json.msg))
1442				.then(token => fetch(sectionManageUrl.href, {
1443					method: 'PATCH',
1444					body: JSON.stringify(requestData),
1445					headers: {
1446						Accept: 'application/json',
1447						Authorization: `Bearer ${token}`,
1448						"Content-Type": "application/json"
1449					}
1450				}))
1451				.then(res => res.json())
1452				.then(json => {
1453					if(json.statusCode !== 200) {
1454						return Promise.reject(
1455							typeof window.LOCALIZE[`E_${json.code}`] === 'function' ?
1456								window.LOCALIZE[`E_${json.code}`]() :
1457								undefined
1458						)
1459					}
1460					if (!json.data.updateResult) {
1461						return Promise.reject()
1462					}
1463				})
1464				.catch(err => alert(err || window.LOCALIZE.타이틀_일시적인서비스장애()))
1465				.finally(() => window.location.reload());
1466		}
1467	}
1468  /**
1469   * 교환철회 누를떄 처리
1470   */
1471  var withdrawExchangeOrder = function(exchange_idx){
1472    if(!confirm(getLocalizeString('타이틀_교환신청을철회하시겠습니까', '', '교환신청을 철회하시겠습니까?'))) return;
1473    $.ajax({
1474      type : 'POST',
1475      data : {"exchange_idx" : exchange_idx},
1476      url : ('/shop/order_exchange_withdraw.cm'),
1477      dataType : 'json',
1478      success : function(res){
1479        if(res.msg == 'SUCCESS'){
1480          if(res.result_msg != '') alert(res.result_msg);
1481          window.location.href = '/shop_mypage/?m2=order';
1482        }else{
1483          alert(res.msg);
1484        }
1485      }
1486    });
1487  };
1488
1489  /**
1490   * 취소철회 누를떄 처리
1491   */
1492  var withdrawCancelOrder = function(cancel_idx, is_c3 = false){
1493    if(!confirm(getLocalizeString('타이틀_취소신청을철회하시겠습니까', '', '취소신청을 철회하시겠습니까?'))) return;
1494    $.ajax({
1495      type : 'POST',
1496      data : {"cancel_idx" : cancel_idx},
1497      url : is_c3 ? '/shop/oms/OMS_order_cancel_withdraw.cm' : '/shop/order_cancel_withdraw.cm',
1498      dataType : 'json',
1499      success : function(res){
1500        if(res.msg == 'SUCCESS'){
1501          if(res.result_msg != '') alert(res.result_msg);
1502          window.location.href = '/shop_mypage/?m2=order';
1503        }else{
1504          alert(res.msg);
1505        }
1506      }
1507    });
1508  };
1509
1510  /* TODO 묶음배송 - deprecated 처리 */
1511  var openMobileOrder = function(idx){
1512    $.ajax({
1513      type : 'POST',
1514      data : {'idx' : idx},
1515      url : ('/dialog/order_history.cm'),
1516      dataType : 'html',
1517      success : function(html){
1518        $.cocoaDialog.open({type : 'admin_order_history', custom_popup : html});
1519      }
1520    });
1521  };
1522
1523  /**
1524   * 반품 페이지 초기화
1525   * @param auto_cancel 자동취소지원유무 (Y/N)
1526   */
1527  var initReturnOrder = function(order_code, auto_cancel){
1528    $order_return_form = $('#order_return_form');
1529    auto_cancel_enable = auto_cancel;
1530    return_order_code = order_code;
1531    returnOrderSelectProdOrder();
1532    changeReturnCollectMethod($('input[name="collect_method_type"]:radio:checked').val());
1533  };
1534
1535  /**
1536   * 교환 페이지 초기화
1537   */
1538  var initExchangeOrder = function(order_code, auto_cancel){
1539    $order_exchange_form = $('#order_exchange_form');
1540    auto_cancel_enable = auto_cancel;
1541    exchange_order_code = order_code;
1542    exchangeOrderSelectProdOrder();
1543  };
1544
1545  var requestCashReceipt = function(q, mode){
1546    if(!q || !mode){
1547      alert(getLocalizeString('설명_주문번호혹은모드가없습니다', '', '주문번호 혹은 모드가 없습니다.'));
1548      return false;
1549    }
1550    $.ajax({
1551      type : 'POST',
1552      data : {'q' : q, 'mode' : mode},
1553      url : ('/shop/request_cash_receipt.cm'),
1554      dataType : 'json',
1555      success : function(res){
1556        if(res.msg == 'SUCCESS'){
1557          $.cocoaDialog.open({type : 'request_cash_receipt', custom_popup : res.html})
1558        }else{
1559          alert(res.msg);
1560        }
1561      }
1562    });
1563  };
1564
1565  var requestCashReceiptProc = function(q, cash_receipt_type, cash_receipt_value){
1566    $.ajax({
1567      type : 'POST',
1568      data : {'q' : q, 'cash_receipt_type' : cash_receipt_type, 'cash_receipt_value' : cash_receipt_value},
1569      url : ('/shop/request_cash_receipt_proc.cm'),
1570      dataType : 'json',
1571      success : function(res){
1572        if(res.msg == 'SUCCESS'){
1573          alert(getLocalizeString('설명_현금영수증신청이완료되었습니다', '', '현금영수증 신청이 완료되었습니다.'));
1574          window.location.reload();
1575        }else{
1576          alert(res.msg);
1577        }
1578      }
1579    });
1580  };
1581
1582  var mod_order_no = '';
1583  var openChangeOrderAddress = function(q){
1584    $.ajax({
1585      type : 'POST',
1586      data : {'q' : q},
1587      url : ('/shop/change_order_address.cm'),
1588      dataType : 'html',
1589      success : function(html){
1590        $.cocoaDialog.open({type : 'change_order_address', custom_popup : html})
1591        var $form = $('#modify_address_form');
1592        mod_order_no = $form.find("input[name='order_no']").val();
1593        $form.find('._add_btn').on('click', function(){
1594          $.ajax({
1595            type : 'POST',
1596            data : $form.serialize(),
1597            url : ('/shop/change_order_address_proc.cm'),
1598            dataType : 'json',
1599            async : false,
1600            cache : false,
1601            success : function(res2){
1602              if(res2.msg == 'SUCCESS'){
1603                $.cocoaDialog.close();
1604                mod_order_no = '';
1605                location.reload();
1606              }else{
1607                var msg = res2.msg;
1608                if(res2.code){
1609                  msg += ' (' + res2.code + ')';
1610                }
1611                alert(msg);
1612              }
1613            }
1614          });
1615        });
1616      }
1617    });
1618  };
1619
1620  var changeDelivAddressCountrySelect = function(q){
1621    var $form = $('#modify_address_form');
1622
1623    $.ajax({
1624      type : 'POST',
1625      data : {'q' : q},
1626      url : ('/shop/change_order_address_form.cm'),
1627      dataType : 'json',
1628      async : false,
1629      cache : false,
1630      success : function(res){
1631        if(res.msg == 'SUCCESS'){
1632          var $_address_wrap = $form.find('._deliv_address_wrap').find('._address_wrap');
1633          $_address_wrap.html(res.html);
1634
1635          if(res.use_daum_api == 'Y'){
1636            var addr_daum = new ZIPCODE_DAUM();
1637            addr_daum.init({
1638              'addr_container' : $('#order_find_address'),
1639              'addr_pop' : $('#address_search_popup .search_popup_body'),
1640              'post_code' : $('#order_postcode_input'),
1641              'addr' : $('#order_address_input'),
1642							'height': 500,
1643              'onStart' : function(){
1644              },
1645              'onComplete' : function(key){
1646                $('#order_address_detail_input').focus();
1647                address = key.jibunAddressEnglish;
1648                splitAddress = address.split(',');
1649
1650                if(key.addressEnglish != "undefined"){
1651                  address = key.addressEnglish;
1652                  splitAddress = address.split(',');
1653                  if(splitAddress.length > 5){
1654                    street = splitAddress[0] + " " + splitAddress[1];
1655                    city = splitAddress[2] + " " + splitAddress[3];
1656                    state = splitAddress[4];
1657                  }else{
1658                    street = splitAddress[0] + " " + splitAddress[1];
1659                    city = splitAddress[2];
1660                    state = splitAddress[3];
1661                  }
1662                }else if(key.jibunAddressEnglish != "undefined"){
1663                  address = key.jibunAddressEnglish;
1664                  splitAddress = address.split(',');
1665                  if(splitAddress.length > 5){
1666                    street = splitAddress[0] + " " + splitAddress[1];
1667                    city = splitAddress[2] + " " + splitAddress[3];
1668                    state = splitAddress[4];
1669                  }else{
1670                    street = splitAddress[0] + " " + splitAddress[1];
1671                    city = splitAddress[2];
1672                    state = splitAddress[3];
1673                  }
1674                }
1675
1676                $("input[name='address_street']").val(street);
1677                $("input[name='address_city']").val(city);
1678                $("input[name='address_state']").val(state);
1679                $("input[name='address_zipcode']").val(key.zonecode);
1680              },
1681              'onShow' : function(){
1682                $('#address_search_popup').show();
1683              },
1684              'onClose' : function(){
1685                $('#address_search_popup').hide();
1686              }
1687            });
1688          }
1689        }
1690      }
1691    });
1692  };
1693
1694  var openChangeCVSAddress = function(cvs, order_no){
1695    var popname = 'change_emap';
1696
1697    var popup_w = 400;
1698    var popup_h = 600;
1699    var popup_top = Math.ceil((window.screen.height - popup_h) / 2);
1700    var popup_left = Math.ceil((window.screen.width - popup_w) / 2);
1701
1702    var popup_style = '';
1703    popup_style += 'top=' + popup_top + ',';
1704    popup_style += 'left=' + popup_left + ',';
1705    popup_style += 'height=' + popup_h + 'px,';
1706    popup_style += 'width=' + popup_w + 'px';
1707
1708    var url = '/ajax/change_cvs_address_popup.cm?cvs=' + cvs + '&order_no=' + order_no;
1709    window.open(url, popname, 'toolbar=no, channelmode=no, location=no, directories=no, menubar=no, scrollbars=yes, resizable=yes, status=yes, ' + popup_style);
1710  };
1711
1712  var updateCVSAddress = function(address_data){
1713    if(mod_order_no === '') return;
1714    if(typeof address_data == "undefined") return;
1715    if(mod_order_no != address_data['mod_order_no']) return;
1716
1717    var $form = $('#modify_address_form');
1718    $form.find('._deliv_address_wrap').find('.cvs_address_info').html(address_data['address_str']).addClass('text-danger');
1719
1720    for(var _key in address_data){
1721      if($form.find('input[name="' + _key + '"]').length > 0){
1722        $form.find('input[name="' + _key + '"]').val(address_data[_key]);
1723      }
1724    }
1725    $form.find('.cvs_list_wrapper').hide();
1726  };
1727
1728  var digitalFileDownload = function(prod_no, order_idx, is_expired){
1729    if(is_expired){
1730      alert(getLocalizeString('설명_다운로드만료안내', '', "다운로드 가능 기간 또는 횟수가 초과되었습니다. \n재 구매 후 다시 시도 바랍니다."));
1731      return false;
1732    }
1733    if(!prod_no){
1734      alert(getLocalizeString('설명_다운로드불가안내', '', "다운로드 가능한 파일이 없습니다. \n관리자에게 문의해 주세요."));
1735      return false;
1736    }
1737    $.ajax({
1738      "type" : "POST",
1739      "data" : {"prod_no" : prod_no, "order_idx" : order_idx, "mode" : "mypage"},
1740      "url" : "/ajax/shop_digital_prod_download.cm",
1741      "dataType" : "JSON",
1742      "success" : function(res){
1743        if(res['msg'] == 'SUCCESS'){
1744          if(res['download_info_msg'].trim() == '' || confirm(res['download_info_msg'])){
1745            location.href = res['file_url'];
1746          }
1747        }else{
1748          alert(res['msg']);
1749        }
1750      }
1751    });
1752  };
1753
1754
1755  var digitalFileDownloadByProdOrder = function(prod_no, prod_order_no, is_expired){
1756    if(is_expired){
1757      alert(getLocalizeString('설명_다운로드만료안내', '', "다운로드 가능 기간 또는 횟수가 초과되었습니다. \n재 구매 후 다시 시도 바랍니다."));
1758      return false;
1759    }
1760    if(!prod_no || !prod_order_no){
1761      alert(getLocalizeString('설명_다운로드불가안내', '', "다운로드 가능한 파일이 없습니다. \n관리자에게 문의해 주세요."));
1762      return false;
1763    }
1764
1765    $.ajax({
1766      "type" : "POST",
1767      "data" : {"mode" : "mypage", "prod_no" : prod_no, "prod_order_no" : prod_order_no},
1768      "url" : "/ajax/shop_digital_prod_download.cm",
1769      "dataType" : "JSON",
1770      "success" : function(res){
1771        if(res['msg'] == 'SUCCESS'){
1772          if(res['download_info_msg'].trim() == '' || confirm(res['download_info_msg'])){
1773            location.href = res['file_url'];
1774          }
1775        }else{
1776          alert(res['msg']);
1777        }
1778      }
1779    });
1780  };
1781  const siteRegularChangeAddressDropDown = () => {
1782    const site_my_page_dropdown_btn = document.querySelector('#site_my_page-dropdown_btn');
1783    const site_my_page_dropdown_container = document.querySelector('#site_my_page-dropdown_container');
1784    const memo_dropdown_btn = document.querySelector('#memo_dropdown_btn');
1785    const memo_dropdown_container = document.querySelector('#memo_dropdown_container');
1786    let click_flag = false;
1787    const hideAndShowAddressDropDown = (trigger, target) => {
1788      if(trigger){
1789        trigger.addEventListener('click', () => {
1790          click_flag = true
1791          target.classList.toggle('tw-hidden');
1792        })
1793        window.addEventListener('click',(e)=>{
1794          if(click_flag && !e.target.classList.contains('_address_drop_down')){
1795            target.classList.add('tw-hidden');
1796          }  
1797        })
1798      }
1799    }
1800    hideAndShowAddressDropDown(site_my_page_dropdown_btn, site_my_page_dropdown_container);
1801    hideAndShowAddressDropDown(memo_dropdown_btn, memo_dropdown_container);
1802  }
1803  const isDefaultAddress = () =>{
1804    const default_regularly_address_text = document.querySelector("._default_regularly_address_text");
1805    const latest_regularly_address_text = document.querySelector("._latest_regularly_address_text");
1806    if(document.querySelector('input[name=container_input]:checked')){
1807      const regularly_address_list_checked = document.querySelector('input[name=container_input]:checked').nextElementSibling;
1808      if(regularly_address_list_checked){
1809        const checked_shipping_data = {
1810          'deliv_name' : regularly_address_list_checked.querySelector('input[name=deliv_name]').value,
1811          'deliv_call' : regularly_address_list_checked.querySelector('input[name=deliv_call]').value,
1812          'deliv_postcode' : regularly_address_list_checked.querySelector('input[name=deliv_postcode]').value,
1813          'deliv_address' : regularly_address_list_checked.querySelector('input[name=deliv_address]').value,
1814          'deliv_address_detail' : regularly_address_list_checked.querySelector('input[name=deliv_address_detail]').value,
1815          'is_default' : regularly_address_list_checked.querySelector('input[name=is_default]').value,
1816          'is_latest' : regularly_address_list_checked.querySelector('input[name=is_latest]').value,
1817        }
1818        const regularly_shipping_data = {
1819          'deliv_name' : document.querySelector('input[name=regularly_value_check-deliv_name]').value,
1820          'deliv_call' : document.querySelector('input[name=regularly_value_check-deliv_call]').value,
1821          'deliv_postcode' : document.querySelector('input[name=regularly_value_check-deliv_postcode]').value,
1822          'deliv_address' : document.querySelector('input[name=regularly_value_check-deliv_address]').value,
1823          'deliv_address_detail' : document.querySelector('input[name=regularly_value_check-deliv_address_detail]').value,
1824        }
1825        const match_array = [];
1826        let i = 0;
1827        for (const key in regularly_shipping_data) {
1828          if(checked_shipping_data[key] == regularly_shipping_data[key]){
1829            match_array[i] = true;
1830          } else {
1831            match_array[i] = false;
1832          }
1833          i ++;
1834        }
1835        if(match_array.every((item)=> item === true)){
1836          if(checked_shipping_data['is_default'] === "1"){
1837            default_regularly_address_text.classList.remove('tw-hidden');
1838          } else {
1839            default_regularly_address_text.classList.add('tw-hidden');
1840          }
1841          if(checked_shipping_data['is_latest'] === "1"){
1842            latest_regularly_address_text.classList.remove('tw-hidden');
1843          } else {
1844            latest_regularly_address_text.classList.add('tw-hidden');
1845          }
1846        } else {
1847          default_regularly_address_text.classList.add('tw-hidden');
1848        }
1849      }
1850    }
1851    
1852    
1853  }
1854  const setRegularlyAddressMemo = (...props) =>{
1855    const form_memo = document.querySelector('#regularly_address_form-memo');
1856    const btn_memo_submit = document.querySelector('#regularly_memo_manually_select_btn');
1857    if(form_memo){
1858      let memo_data = {
1859        'deliv_name' : form_memo.querySelector('input[name=deliv_name]').value, 
1860        'deliv_call' : form_memo.querySelector('input[name=deliv_call]').value, 
1861        'deliv_postcode' : form_memo.querySelector('input[name=deliv_postcode]').value, 
1862        'deliv_address' : form_memo.querySelector('input[name=deliv_address]').value, 
1863        'deliv_address_detail' : form_memo.querySelector('input[name=deliv_address_detail]').value,
1864        'deliv_address_detail' : form_memo.querySelector('input[name=deliv_address_detail]').value,
1865        'deliv_memo':  $("input[name=deliv_memo]:checked").val(),
1866        'regularly_code': document.querySelector('input[name=regularly_code]').value,
1867        'request_type': 'update',
1868      }
1869      let memo_check_data = {
1870        'deliv_name' : form_memo.querySelector('input[name=deliv_name]').value, 
1871        'deliv_call' : form_memo.querySelector('input[name=deliv_call]').value, 
1872        'deliv_postcode' : form_memo.querySelector('input[name=deliv_postcode]').value, 
1873        'deliv_address' : form_memo.querySelector('input[name=deliv_address]').value, 
1874        'deliv_address_detail' : form_memo.querySelector('input[name=deliv_address_detail]').value,
1875        'deliv_address_detail' : form_memo.querySelector('input[name=deliv_address_detail]').value,
1876        'deliv_memo':  $("input[name=deliv_memo]:checked").val(),
1877        'regularly_code': document.querySelector('input[name=regularly_code]').value,
1878        'request_type': 'check_deliv_price',
1879      }
1880      if($('input[name=deliv_memo]:checked').val() === "직접입력"){
1881        $('#regularly_memo_contents_container').removeClass('tw-hidden');
1882        $('#regularly_memo_contents_span').html($('input[name=deliv_memo]:checked').val());
1883        $('#regularly_memo_contents_input').focus();
1884        btn_memo_submit.addEventListener('click',()=>{
1885          memo_data.deliv_memo = $('#regularly_memo_contents_input').val();
1886          if(memo_data.deliv_memo === ""){
1887            alert(getLocalizeString('설명_배송메모를입력해주세요', '', '배송메모를 입력해 주세요.'));
1888          } else {
1889            axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', memo_check_data)
1890            .then(res => {
1891              if(res.status === 200 ){
1892                const msg_split = res.data.confirm_msg.split(' ', );
1893                const variant_text = getLocalizeString('설명_'.concat(msg_split[1].substring(1,2),'요일약자'),'','요일');
1894                const msg_text = msg_split[0].concat(' (',variant_text,') ',getLocalizeString('설명_주문부터적용됩니다수정하시겠습니까', '', '주문부터 적용됩니다. 수정하시겠습니까?'));
1895                if(confirm(msg_text)){
1896                  axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', memo_data)
1897                  .then(res => {
1898                    if(res.status === 200 ){
1899                      console.log(res);
1900                      location.reload();
1901                    }
1902                  })
1903                }
1904              } else {
1905                alert('잠시 후 다시 시도해주세요.');
1906                console.log(res.data);
1907              }
1908            })
1909          }
1910        })
1911      } else {
1912        $('#regularly_memo_contents_container').addClass('tw-hidden');
1913        $('#regularly_memo_contents_span').html($('input[name=deliv_memo]:checked').val());
1914        axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', memo_check_data)
1915        .then(res => {
1916          if(res.status === 200 ){
1917            const msg_split = res.data.confirm_msg.split(' ', );
1918            const variant_text = getLocalizeString('설명_'.concat(msg_split[1].substring(1,2),'요일약자'),'','요일');
1919            const msg_text = msg_split[0].concat(' (',variant_text,') ',getLocalizeString('설명_주문부터적용됩니다수정하시겠습니까', '', '주문부터 적용됩니다. 수정하시겠습니까?'));
1920            if(confirm(msg_text)){
1921              axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', memo_data)
1922              .then(res => {
1923                if(res.status === 200 ){
1924                  console.log(res);
1925                  location.reload();
1926                }
1927              })
1928            }
1929          } else {
1930            alert('잠시 후 다시 시도해주세요.');
1931            console.log(res.data);
1932          }
1933        })
1934      }
1935    }
1936  }
1937  
1938  const changeRegularlyAddressInDropDown = (...props) =>{
1939    const target_id = `#regularly_address_form_id-${props[0]['idx']}`
1940    const regularly_address_form_id = document.querySelector(target_id);
1941    const deliv_name = document.querySelector(`#regularly_address_form_id-${props[0]['idx']} > input[name=deliv_name]`).value;
1942    const deliv_call = document.querySelector(`#regularly_address_form_id-${props[0]['idx']} > input[name=deliv_call]`).value;
1943    const deliv_postcode = document.querySelector(`#regularly_address_form_id-${props[0]['idx']} > input[name=deliv_postcode]`).value;
1944    const deliv_address = document.querySelector(`#regularly_address_form_id-${props[0]['idx']} > input[name=deliv_address]`).value;
1945    const deliv_address_detail = document.querySelector(`#regularly_address_form_id-${props[0]['idx']} > input[name=deliv_address_detail]`).value;
1946    const regularly_code = document.querySelector(`input[name=regularly_code]`).value;
1947    let check_data = {'deliv_name':deliv_name,'deliv_call':deliv_call,'deliv_postcode':deliv_postcode,'deliv_address':deliv_address,'deliv_address_detail':deliv_address_detail,'request_type':'check_deliv_price','regularly_code':regularly_code};
1948    let submit_data = {'deliv_name':deliv_name,'deliv_call':deliv_call,'deliv_postcode':deliv_postcode,'deliv_address':deliv_address,'deliv_address_detail':deliv_address_detail,'request_type':'update','regularly_code':regularly_code};
1949    axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', check_data)
1950    .then(res => {
1951      if (res.status === 200 && res.data.msg === 'SUCCESS') {
1952        const msg_split = res.data.confirm_msg.split(' ', );
1953        const variant_text = getLocalizeString('설명_'.concat(msg_split[1].substring(1,2),'요일약자'),'','요일');
1954        const msg_text = msg_split[0].concat(' (',variant_text,') ',getLocalizeString('설명_주문부터적용됩니다수정하시겠습니까', '', '주문부터 적용됩니다. 수정하시겠습니까?'));
1955        if(confirm(msg_text)){
1956          axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', submit_data)
1957          .then(res => {
1958            if (res.status === 200) {
1959              if (res.data.msg === 'SUCCESS') {
1960                location.reload();
1961              } else {
1962                console.log(res.data.msg);
1963              }
1964            } else {
1965              alert(res.data.msg);
1966            }
1967          })
1968          .catch(err => {
1969            console.log(err)
1970          })
1971          return;
1972        }
1973      } else {
1974        if(res.data.msg === "변경사항이 없습니다."){
1975          alert('동일한 배송지 입니다.')
1976        } else {
1977          alert(res.data.msg);
1978        }
1979      }
1980    })
1981    .catch(err => {
1982      console.log(err)
1983    }) 
1984  }
1985
1986  /**
1987   * SITE_SHOP_MYPAGE.showModifyRegularAddressModal(props)
1988   * props : {};
1989   * props keys : add_or_list ,  idx
1990   * add_or_list : 'list' / 'add' <string>
1991   * idx : <number>
1992   * */
1993  const showModifyRegularAddressModal = (...props) => {
1994    const data = {
1995      'idx' : props[0].idx,
1996      'addOrList' : props[0].addOrList,
1997    }
1998    $.ajax({
1999      type : "POST",
2000      url : "/ajax/regularly/site_modify_regularly_address.cm",
2001      data : data,
2002      dataType : "JSON",
2003      success : function(res){
2004        $.cocoaDialog.open({type : 'admin', custom_popup : res.html, max_width : 540, min_width: 375}, function(){
2005          SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents({'addOrList' : props[0].addOrList});
2006          SITE_SHOP_MYPAGE.toggleRegularAddressListAddSection({'addOrList' : props[0].addOrList});
2007          SITE_SHOP_MYPAGE.updateRegularlyAddressAjax();
2008        });
2009      },
2010      error : function(res){
2011        console.log(res);
2012        console.log('error');
2013      }
2014    })
2015  }
2016
2017  /**
2018   * Usages :  SITE_SHOP_MYPAGE.toggleRegularAddressListAddSection();
2019   * */
2020  const toggleRegularAddressListAddSection = (...props) => {
2021    const add_regularly_address_btn = document.querySelector('#add_regularly_address_btn');
2022    const list_regularly_address_btn = document.querySelector('#list_regularly_address_btn');
2023    const add_regularly_address_header = document.querySelector('#add_regularly_address_header');
2024    const list_regularly_address_header = document.querySelector('#list_regularly_address_header');
2025    add_regularly_address_btn.addEventListener('click', () => {
2026      add_regularly_address_header.classList.add('regularly_border-b','tw-font-bold','text-brand');
2027      list_regularly_address_header.classList.remove('regularly_border-b','tw-font-bold','text-brand');
2028      SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents({'addOrList' : 'add'});
2029    })
2030    list_regularly_address_btn.addEventListener('click', () => {
2031      add_regularly_address_header.classList.remove('regularly_border-b','tw-font-bold','text-brand');
2032      list_regularly_address_header.classList.add('regularly_border-b','tw-font-bold','text-brand');
2033      SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents({'addOrList' : 'list'});
2034    })
2035  }
2036  /**
2037   * Usages :  SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents(...props);
2038   * props : Object
2039   * */
2040  const renderRegularlyAddressModalContents = (...props) => {
2041    const contents_body = document.querySelector('#contents-body');
2042    let url = '';
2043    let data = {};
2044    switch(props[0].addOrList){
2045      case 'list' :{
2046        url = "/ajax/regularly/modal_site_list_regularly_address.cm";
2047        data = {'addOrList' : 'list'};
2048        $("._list_show_more").addClass('tw-mb-[56px]');
2049      }
2050        break;
2051      case 'add' :{
2052        url = "/ajax/regularly/modal_site_add_regularly_address.cm";
2053        data = {'addOrList' : 'add'};
2054      }
2055        break;
2056    }
2057    $.ajax({
2058      type : "POST",
2059      url : url,
2060      data : data,
2061      dataType : "JSON",
2062      success : function(res){
2063        contents_body.innerHTML = res.html;
2064        getKakaoAddressAPI();
2065        if(props[0].addOrList === 'list') {
2066          SITE_SHOP_MYPAGE.loadMoreAddressList();
2067          document.querySelector('#update_regularly_address_btn').disabled = false;
2068        } else {
2069          document.querySelector('#update_regularly_address_btn').disabled = true;
2070          SITE_SHOP_MYPAGE.addRegularlyAddressValidation();
2071        }
2072        if($("#update_regularly_address_btn_container").hasClass('tw-hidden')){
2073          $("#update_regularly_address_btn_container").removeClass('tw-hidden');  
2074        }
2075      },
2076      error : function(res){
2077        console.log(res);
2078      }
2079    })
2080  }
2081  const getKakaoApiInput = (...props) => {
2082    let add_regularly_address_form = '';
2083    if(props.length === 0 || props === undefined){
2084      add_regularly_address_form = '#add_regularly_address_form';
2085    }else{
2086      add_regularly_address_form = `#add_regularly_address_form_${props[0].idx}`;
2087    }
2088    $.ajax({
2089      type : "POST",
2090      url : "/ajax/regularly/get_kakao_api_input.cm",
2091      data : props[0],
2092      dataType : "JSON",
2093      success : function(res){
2094        $(add_regularly_address_form).html(res.html);
2095        $('input[name=deliv_name]').val(props[0]['deliv_name']);
2096        $('input[name=deliv_call]').val(props[0]['deliv_call']);
2097        $('input[name=deliv_address]').val(props[0]['deliv_address']);
2098        $('input[name=deliv_address_detail]').val(props[0]['deliv_address_detail']);
2099        $('input[name=deliv_zipcode]').val(props[0]['deliv_postcode']);
2100        if(props[0]['is_default']){
2101          $('input[name=is_default_shipping]').prop("checked", true);
2102        }
2103        getKakaoAddressAPI();
2104        $('input[name=deliv_address]').on('click',()=>{
2105          $('input[name=deliv_zipcode]').val(null);
2106          $('input[name=deliv_address]').val(null);
2107          $('input[name=deliv_address_detail]').val(null);
2108        })
2109        $('#open_kakao_address').on('click',()=>{
2110          $('input[name=deliv_zipcode]').val(null);
2111          $('input[name=deliv_address]').val(null);
2112          $('input[name=deliv_address_detail]').val(null);
2113        })
2114      },
2115      error : function(res){
2116        console.log(res);
2117      }
2118    })
2119  }
2120  const getKakaoAddressAPI = () => {
2121    var addr_daum = new ZIPCODE_DAUM();
2122    addr_daum.init({
2123      'addr_container' : $('#address_search_popup'),
2124      'addr_pop' : $('#address_search_popup .search_popup_body'),
2125      'post_code' : $('#order_postcode_input'),
2126      'addr' : $('#order_address_input'),
2127      'open_button': $('#open_kakao_address'),
2128      'onStart' : function(){
2129      },
2130      'onComplete' : function(key){
2131        $('input[name=deliv_address_detail]').focus();
2132        $("input[name='deliv_address']").val(key.address);
2133        $("input[name='deliv_zipcode']").val(key.zonecode);
2134      },
2135      'onShow' : function(){
2136        $('#address_search_popup').css({"border":"1px","border-style":"solid","border-color":"black","margin-bottom":"10px"})
2137        $('#add_regular_address_container').scrollTop(60);
2138        $('#open_kakao_address').hide();
2139        $('#close_kakao_address').show();
2140      },
2141      'onClose' : function(){
2142        $('#address_search_popup').hide();
2143        $('#open_kakao_address').show();
2144        $('#close_kakao_address').hide();
2145        $('#address_search_popup').css({"border":"none","margin-bottom":"0px"})
2146      }
2147    });
2148  }
2149  /**
2150   * SITE_SHOP_MYPAGE.openUpdateRegularlyAddress(props)
2151   * 모달창의 배송지 목록탭 오른쪽 배송지 수정 버튼을 눌렀을 때
2152   * */
2153  const openUpdateRegularlyAddress = (...props) => {
2154    const update_container = `#update_regularly_address_container_${props[0].idx}`
2155    const data_container = `#data_regularly_address_container_${props[0].idx}`
2156    const _update_item_input = `#data_regularly_address_container_${props[0].idx} > label > input`
2157    const update_regularly_address_container = document.querySelector(update_container);
2158    const data_regularly_address_container = document.querySelector(data_container);
2159    const update_item_input = document.querySelector(_update_item_input);
2160    update_regularly_address_container.classList.remove('tw-hidden');
2161    data_regularly_address_container.classList.add('tw-hidden');
2162    update_item_input.checked = true;
2163    SITE_SHOP_MYPAGE.disableOtherItems(...props);
2164    $("#update_regularly_address_btn_container").addClass('tw-hidden');
2165    $("._list_show_more").removeClass('tw-mb-[56px]')
2166    getKakaoApiInput(...props);
2167  }
2168  /**
2169   * SITE_SHOP_MYPAGE.updateRegularlyAddressAjax(props)
2170   * 정기구독 주소지 변경 버튼 눌렀을 때
2171   * axios
2172   * */
2173  const updateRegularlyAddressAjax = () =>{
2174    const update_regularly_address_btn = document.querySelector('#update_regularly_address_btn');
2175    let check_regularly_shipping_data = {};
2176    let add_regularly_shipping_data = {};
2177    let add_shipping_data = {};
2178    let is_temp = "";
2179    update_regularly_address_btn.addEventListener('click',()=>{
2180      const add_regularly_address_form = document.querySelector('#add_regularly_address_form');
2181      update_regularly_address_btn.disabled = true;
2182      if($("input[name=is_add_shipping]:checked").val() === 'Y'){
2183        is_temp = 'N';
2184      } else {
2185        is_temp = 'Y';
2186      }
2187      if(add_regularly_address_form){
2188        check_regularly_shipping_data = {
2189          'deliv_name': $("#add_regularly_address_form input[name=deliv_name]").val(),
2190          'deliv_call': $("#add_regularly_address_form input[name=deliv_call]").val(),
2191          'deliv_postcode': $("#add_regularly_address_form input[name=deliv_postcode]").val(),
2192          'deliv_address': $("#add_regularly_address_form input[name=deliv_address]").val(),
2193          'deliv_address_detail': $("#order_address_detail_input").val(),
2194          'regularly_code'
2194: $("input[name=regularly_code]").val(),
2195          'request_type': 'check_deliv_price',
2196        }
2197        add_regularly_shipping_data = {
2198          'deliv_name': $("#add_regularly_address_form  input[name=deliv_name]").val(),
2199          'deliv_call': $("#add_regularly_address_form  input[name=deliv_call]").val(),
2200          'deliv_postcode': $("#add_regularly_address_form  input[name=deliv_postcode]").val(),
2201          'deliv_address': $("#add_regularly_address_form  input[name=deliv_address]").val(),
2202          'deliv_address_detail': $("#order_address_detail_input").val(),
2203          'regularly_code': $("input[name=regularly_code]").val(),
2204          'request_type': 'update',
2205        }
2206        add_shipping_data = {
2207          'shipping_country': 'KR',
2208          'is_temp': is_temp,
2209          'is_default': $("#add_regularly_address_form input[name=is_default_shipping]:checked").val(),
2210          'address_data' :{
2211            'deliv_name': $("#add_regularly_address_form input[name=deliv_name]").val(),
2212            'deliv_call': $("#add_regularly_address_form input[name=deliv_call]").val(),
2213            'deliv_postcode': $("#add_regularly_address_form input[name=deliv_postcode]").val(),
2214            'deliv_address': $("#add_regularly_address_form input[name=deliv_address]").val(),
2215            'deliv_address_detail': $("#order_address_detail_input").val(),
2216            'regularly_code': $("#add_regularly_address_form  input[name=regularly_code]").val(),
2217            'is_add_shipping': $("#add_regularly_address_form  input[name=is_add_shipping]:checked").val(),
2218          }
2219        }
2220      } else {
2221        check_regularly_shipping_data = {
2222          'deliv_name': $("input[name=deliv_name]").val(),
2223          'deliv_call': $("input[name=deliv_call]").val(),
2224          'deliv_postcode': $("input[name=deliv_postcode]").val(),
2225          'deliv_address': $("input[name=deliv_address]").val(),
2226          'deliv_address_detail': $("#order_address_detail_input").val(),
2227          'regularly_code': $("input[name=regularly_code]").val(),
2228          'request_type': 'check_deliv_price',
2229        }
2230        add_regularly_shipping_data = {
2231          'deliv_name': $("input[name=deliv_name]").val(),
2232          'deliv_call': $("input[name=deliv_call]").val(),
2233          'deliv_postcode': $("input[name=deliv_postcode]").val(),
2234          'deliv_address': $("input[name=deliv_address]").val(),
2235          'deliv_address_detail': $("#order_address_detail_input").val(),
2236          'regularly_code': $("input[name=regularly_code]").val(),
2237          'request_type': 'update',
2238        }
2239        add_shipping_data = {
2240          'shipping_country': 'KR',
2241          'is_temp': is_temp,
2242          'is_default': $("input[name=is_default_shipping]:checked").val(),
2243          'address_data' :{
2244            'deliv_name': $("input[name=deliv_name]").val(),
2245            'deliv_call': $("input[name=deliv_call]").val(),
2246            'deliv_postcode': $("input[name=deliv_postcode]").val(),
2247            'deliv_address': $("input[name=deliv_address]").val(),
2248            'deliv_address_detail': $("#order_address_detail_input").val(),
2249            'deliv_memo': $("#add_deliv_memo").val(),
2250            'regularly_code': $("input[name=regularly_code]").val(),
2251            'is_add_shipping': $("input[name=is_add_shipping]:checked").val(),
2252          }
2253        }
2254      }
2255      JS_DELAY('postDelay',function(){
2256        axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', check_regularly_shipping_data)
2257        .then(res => {
2258          console.log(res);
2259          if (res.status === 200) {
2260            if (res.data.msg === 'SUCCESS') {
2261              update_regularly_address_btn.disabled = false;
2262              if(res.data.confirm_msg){
2263                const msg_split = res.data.confirm_msg.split(' ', );
2264                const variant_text = getLocalizeString('설명_'.concat(msg_split[1].substring(1,2),'요일약자'),'','요일');
2265                const msg_text = msg_split[0].concat(' (',variant_text,') ',getLocalizeString('설명_주문부터적용됩니다수정하시겠습니까', '', '주문부터 적용됩니다. 수정하시겠습니까?'));
2266                if(confirm(msg_text)){
2267                  axios.post('/ajax/regularly/site_update_modify_regularly_address.cm', add_regularly_shipping_data)
2268                  .then(res =>{
2269                    if($("input[name=is_add_shipping]:checked").val() === 'Y'){
2270                      addOrUpdateShippingAddressAjax(add_shipping_data);
2271                      location.reload();
2272                    } else {
2273                      location.reload();
2274                    }
2275                  })
2276                }
2277              }
2278            } else {
2279              alert(res.data.msg);
2280            }
2281          } else {
2282            alert(res.data.msg);
2283          }
2284        })
2285        .catch(err => {
2286          console.log(err)
2287        })  
2288      }).throttling(2000)
2289    })
2290  }
2291  const addRegularlyAddressValidation = () =>{
2292    const add_regularly_address_form = document.querySelector('#add_regularly_address_form');
2293    if(add_regularly_address_form){
2294      const inputData = {
2295        "name" : document.querySelector('#add_regularly_address-deliv_name-input'),
2296        "call" : document.querySelector('#add_regularly_address-deliv_call-input'),
2297        "address" : document.querySelector('#order_address_input'),
2298        "detail" : document.querySelector('#order_address_detail_input'),
2299        "button" : document.querySelector('#update_regularly_address_btn'),
2300      }
2301      
2302      const triggerEvent = (event,target,returnArr=[]) =>{
2303        target.addEventListener(event,()=>{
2304          returnArr[0] = inputData.name.value;
2305          returnArr[1] = inputData.call.value;
2306          returnArr[2] = inputData.address.value;
2307          returnArr[3] = inputData.detail.value;
2308          if(returnArr[0] !== "" && returnArr[1] !== "" && returnArr[2] !== ""&& returnArr[3] !== ""){
2309            inputData.button.disabled = false;
2310          } else {
2311            inputData.button.disabled = true;
2312          }
2313        })
2314      }
2315      let returnArr = [];
2316      for (let inputDataKey in inputData) {
2317        triggerEvent('keydown',inputData[inputDataKey],returnArr);
2318        triggerEvent('click',inputData[inputDataKey],returnArr);
2319        triggerEvent('change',inputData[inputDataKey],returnArr);
2320        triggerEvent('blur',inputData[inputDataKey],returnArr);
2321      }
2322    }
2323  }
2324  const addOrUpdateShippingAddressAjax = (add_shipping_data) =>{
2325    $.ajax({
2326      type: "POST",
2327      url: "/ajax/shipping/add_address.cm",
2328      data: add_shipping_data,
2329      dataType: "JSON",
2330      success: function (res) {
2331        if(res.msg !== "SUCCESS"){
2332          alert(res.msg)
2333        }
2334      },
2335      error : function (res){
2336        alert(res.msg);
2337        console.log(res);
2338      },
2339      complete: function(){
2340        // location.reload();
2341      }
2342    })
2343  }
2344  /**
2345   * usage: SITE_SHOP_MYPAGE.checkAddShippingList()
2346   * */
2347  const checkAddShippingList = () =>{
2348    const add_shipping_list_input = document.querySelector('input[name=is_add_shipping]');
2349    const is_default_shipping = document.querySelector('._is_default_shipping');
2350    if(add_shipping_list_input){
2351      if(add_shipping_list_input.checked){
2352        is_default_shipping.classList.remove('!tw-hidden');  
2353      } else {
2354        is_default_shipping.classList.add('!tw-hidden');
2355      }
2356    }
2357  }
2358  /**
2359   * 배송지 목록 관리 탭
2360   * usage : SITE_SHOP_MYPAGE.disableOtherItems(uid,index);
2361   * uid : 
2362   * index
2363   * */
2364  const disableOtherItems = (...props) =>{
2365    const address_list_item_container = document.querySelectorAll('._address_list_item_container');
2366    const address_list_input = document.querySelectorAll('input[name=address_list]');
2367    const btn_update_shipping_item = document.querySelectorAll('._btn_update_shipping_item');
2368    const btn_delete_shipping_item = document.querySelectorAll('._btn_delete_shipping_item');
2369    const show_more_items_btn = document.querySelector('#show_more_items_btn');
2370    if(show_more_items_btn){
2371      show_more_items_btn.disabled = true;
2372    }
2373    btn_update_shipping_item.forEach((el,index)=>{
2374      el.setAttribute('disabled','');
2375      btn_delete_shipping_item[index].setAttribute('disabled','');
2376    })
2377    address_list_item_container.forEach((el,index)=>{
2378      if(!el.classList.contains(`_list_${props[0]['idx']}`)){
2379        el.style.opacity = "0.3";
2380        address_list_input[index].setAttribute('disabled','');
2381      } else {
2382        el.removeAttribute('disabled');
2383        address_list_input[index].removeAttribute('disabled');
2384      }
2385    })
2386  }
2387  /**
2388   * usage : SITE_SHOP_MYPAGE.updateShippingAddress(props);
2389   * 수정완료 버튼을 눌렀을 경우 
2390   * */
2391  const updateShippingAddress = (...props)=>{
2392    const update_shipping_data = {
2393      'code' : props[0]['code'],
2394      'shipping_country' : 'KR',
2395      'is_default' : $("input[name=is_default_shipping]:checked").val(),
2396      'address_data' : {
2397        'deliv_name' : $('#deliv_name').val(),
2398        'deliv_call' : $('#deliv_call').val(),
2399        'deliv_postcode' : $("input[name=deliv_zipcode]").val(),
2400        'deliv_address' : $("input[name=deliv_address]").val(),
2401        'deliv_address_detail' : $('#order_address_detail_input').val(),
2402        'regularly_code' : $("input[name=regularly_code]").val(),
2403      }
2404    }
2405    JS_DELAY('postDelay',function(){
2406      addOrUpdateShippingAddressAjax(update_shipping_data);
2407      SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents({'addOrList' : 'list'});  
2408    }).throttling(2000);
2409  } 
2410  /**
2411   * usage : SITE_SHOP_MYPAGE.deleteShippingAddress(props);
2412   * */
2413  const deleteShippingAddress = (...props) =>{
2414    // 기본 배송지의 경우
2415    if(props[0]['is_default']){
2416      alert(getLocalizeString('설명_기본배송지는삭제할수없습니다','','기본 배송지는 삭제할 수 없습니다.'));
2417      return;
2418    }
2419    // shippinglist가 한개 일 경우
2420    if(props[0]['list'] === 1){
2421      alert(getLocalizeString('설명_기본배송지는삭제할수없습니다','','기본 배송지는 삭제할 수 없습니다.'));
2422      return;
2423    }
2424    if(confirm(getLocalizeString('설명_배송지를삭제하시겠습니까','','배송지를 삭제하시겠습니까?'))){
2425      $.ajax({
2426        type: "POST",
2427        url: "/ajax/shipping/delete_address.cm",
2428        data: props[0],
2429        dataType: "JSON",
2430        success: function (res) {
2431          console.log(res);
2432        },
2433        error : function (res){
2434          console.log(res);
2435        },
2436        complete: function(){
2437          SITE_SHOP_MYPAGE.renderRegularlyAddressModalContents({'addOrList' : 'list'});
2438        }
2439      })  
2440    }
2441  }
2442  /**
2443   * usage : SITE_SHOP_MYPAGE.loadMoreAddressList();
2444   * */
2445  const loadMoreAddressList = () =>{
2446    const show_more_items_btn = document.querySelector('#show_more_items_btn');
2447    const address_root = document.querySelector('#address_root');
2448    let click_count = 0;
2449    if(show_more_items_btn){
2450      JS_DELAY('click',function(){
2451        show_more_items_btn.addEventListener('click',()=>{
2452          click_count ++;
2453          $.ajax({
2454            type: "POST",
2455            url: "/ajax/regularly/get_regularly_address_list.cm",
2456            data: {'click_count':click_count},
2457            dataType: "JSON",
2458            success: function (res) {
2459              if(res.msg !== "No more List"){
2460                address_root.innerHTML += res.html;
2461              }
2462            },
2463            error : function (res){
2464              console.log(res);
2465            }
2466          })
2467          // address 리스트가 마지막인지 확인용
2468          $.ajax({
2469            type: "POST",
2470            url: "/ajax/regularly/get_regularly_address_list.cm",
2471            data: {'click_count':click_count + 1},
2472            dataType: "JSON",
2473            success: function (response) {
2474              if(response.msg === "No more List"){
2475                $("#show_more_items_btn").addClass('tw-hidden');
2476                $("#regularly_address_list_container").addClass('tw-mb-[45px]');
2477                $("#regularly_address_list_container").removeClass('tw-mb-0');
2478              } else {
2479                $("#show_more_items_btn").removeClass('tw-hidden');
2480                $("#regularly_address_list_container").removeClass('tw-mb-[45px]');
2481                $("#regularly_address_list_container").addClass('tw-mb-0');
2482              }
2483            },
2484            error : function (res){
2485              console.log(res);
2486            }
2487          })
2488        })  
2489      }).throttling(2000);
2490    }
2491  }
2492  return {
2493    initPointList : function(){
2494      initPointList();
2495    },
2496    initOrderList : function(){
2497      initOrderList();
2498    },
2499    getOrderList : function(type){
2500      getOrderList(type);
2501    },
2502    resizeBtnSize : function(list){
2503      resizeBtnSize(list);
2504    },
2505    getPointList : function(){
2506      getPointList();
2507    },
2508    deleteProdWish : function(prod_code){
2509      deleteProdWish(prod_code);
2510    },
2511    deleteBookingProdWish : function(prod_code){
2512      deleteBookingProdWish(prod_code);
2513    },
2514    'initRegularlyList': function(){
2515      initRegularlyList();
2516    },
2517    'getRegularlyOrderList': function(page){
2518      getRegularlyOrderList(page);
2519    },
2520    'getRegularlyCancelList': function(page){
2521      getRegularlyCancelList(page)
2522    },
2523    'registerRegularlyCard': function(is_update){
2524      registerRegularlyCard(is_update);
2525    },
2526    'deleteRegularlyCard': function(use_regularly_order){
2527      deleteRegularlyCard(use_regularly_order);
2528    },
2529    'changeRegularlyCard': function(){
2530      changeRegularlyCard();
2531    },
2532    'unsetRegularlyAllProd': function(idx){
2533      unsetRegularlyAllProd(idx);
2534    },
2535    'unsetRegularlyProdItem': function(idx, item_code,prod_check_code,item_code_list){
2536      unsetRegularlyProdItem(idx, item_code,prod_check_code,item_code_list)
2537    },
2538    'unsetRegularlyProd': function(type,idx, item_code,prod_check_code,item_code_list){
2539      unsetRegularlyProd(type,idx, item_code,prod_check_code,item_code_list);
2540    },
2541    'showRegularlyDateList': function(regularly_code,is_multiple_prod) {
2542      showRegularlyDateList(regularly_code,is_multiple_prod);
2543    },
2544    'getRegularlyDateList': function(regularly_code, page,is_multiple_prod){
2545      getRegularlyDateList(regularly_code, page,is_multiple_prod);
2546    },
2547    'showRegularlySelectPeriod': function(idx) {
2548      showRegularlySelectPeriod(idx);
2549    },
2550    'skipRegularlyProdAll': function(idx,date_text) {
2551      skipRegularlyProdAll(idx,date_text);
2552    },
2553    'skipRegularlyProdItem': function(idx, item_code,date_text,prod_check_code,item_code_list){
2554      skipRegularlyProdItem(idx, item_code,date_text,prod_check_code,item_code_list);
2555    },
2556    'skipRegularlyProd': function(type,idx, item_code,prod_check_code,item_code_list){
2557      skipRegularlyProd(type,idx, item_code,prod_check_code,item_code_list);
2558    },
2559    'showRegularlyChangeDetail' : function(idx,count,regularly_code,item_code){
2560      showRegularlyChangeDetail(idx,count,regularly_code,item_code);
2561    },
2562    'RegularlyChangeDetail' : function(idx,regularly_code,item_code,change_count){
2563      RegularlyChangeDetail(idx,regularly_code,item_code,change_count);
2564    },
2565    'trackingParcel' : function(code, no){
2566      trackingParcel(code, no, false);
2567    },
2568    'trackingParcelEcpay': function(code){
2569      trackingParcelEcpay(code);
2570    },
2571    'openMobileOrder' : function(no){
2572      openMobileOrder(no);
2573    },
2574    'initCancelOrder': function(order_code, auto_cancel_enable){
2575      initCancelOrder(order_code, auto_cancel_enable);
2576    },
2577    'cancelOrder': function(type){
2578      cancelOrder(type);
2579    },
2580    'returnOrder': function(){
2581      returnOrder();
2582    },
2583    'showExchangeDetail': function(exchange_idx){
2584      showExchangeDetail(exchange_idx);
2585    },
2586    'showReturnDetail': function(return_idx){
2587      showReturnDetail(return_idx, false);
2588    },
2589    'showCancelDetail' : function(cancel_idx){
2590      showCancelDetail(cancel_idx, false);
2591    },
2592    'exchangeOrder': function(){
2593      exchangeOrder();
2594    },
2595    'showSippingAddress':function(shipping_place_code){
2596      showSippingAddress(shipping_place_code);
2597    },
2598    'exchangeOrderPay': function(){
2599      exchangeOrderPay();
2600    },
2601    'withdrawReturnOrder': function(return_idx){
2602      withdrawReturnOrder(return_idx);
2603    },
2604    'withdrawExchangeOrder': function(exchange_idx){
2605      withdrawExchangeOrder(exchange_idx);
2606    },
2607    'withdrawCancelOrder': function(cancel_idx){
2608      withdrawCancelOrder(cancel_idx, false);
2609    },
2610    'cancelOrderSelectAllProdOrder': function(chk){
2611      cancelOrderSelectAllProdOrder(chk);
2612    },
2613    'cancelOrderSelectProdOrder': function(){
2614      cancelOrderSelectProdOrder();
2615    },
2616    'initReturnOrder': function(order_code, auto_cancel_enable){
2617      initReturnOrder(order_code, auto_cancel_enable);
2618    },
2619    'returnOrderSelectAllProdOrder': function(chk){
2620      returnOrderSelectAllProdOrder(chk);
2621    },
2622    'returnOrderSelectProdOrder': function(){
2623      returnOrderSelectProdOrder();
2624    },
2625    'returnOrderLoadRefundPriceData': function(){
2626      return returnOrderLoadRefundPriceData();
2627    },
2628    'changeReturnCollectMethod': function(collect_method){
2629      changeReturnCollectMethod(collect_method);
2630    },
2631    'changeExchangeCollectMethod': function(collect_method){
2632      changeExchangeCollectMethod(collect_method);
2633    },
2634    'initExchangeOrder': function(order_code, auto_cancel_enable){
2635      initExchangeOrder(order_code, auto_cancel_enable);
2636    },
2637    'exchangeOrderSelectAllProdOrder': function(chk){
2638      exchangeOrderSelectAllProdOrder(chk);
2639    },
2640    'requestCashReceipt' : function(order_no, mode){
2641      requestCashReceipt(order_no, mode);
2642    },
2643    'requestCashReceiptProc' : function(q, cash_receipt_type, cash_receipt_value){
2644      requestCashReceiptProc(q, cash_receipt_type, cash_receipt_value);
2645    },
2646
2647    'openChangeOrderAddress': function(q) {
2648      openChangeOrderAddress(q);
2649    },
2650    'changeDelivAddressCountrySelect' : function(q) {
2651      changeDelivAddressCountrySelect(q);
2652    },
2653    "openChangeCVSAddress": function(cvs, order_no){
2654      openChangeCVSAddress(cvs, order_no);
2655    },
2656    "updateCVSAddress": function(data){
2657      updateCVSAddress(data);
2658    },
2659    "digitalFileDownload": function(prod_no, order_idx, is_expired) {
2660      digitalFileDownloadByProdOrder(prod_no, order_idx, is_expired);
2661    },
2662    siteRegularChangeAddressDropDown: function() {
2663      siteRegularChangeAddressDropDown();
2664    },
2665    isDefaultAddress: function() {
2666      isDefaultAddress();
2667    },
2668    setRegularlyAddressMemo: function(...props) {
2669      setRegularlyAddressMemo(...props);
2670    },
2671    changeRegularlyAddressInDropDown: function(...props) {
2672      changeRegularlyAddressInDropDown(...props);
2673    },
2674    showModifyRegularAddressModal: function(...props) {
2675      showModifyRegularAddressModal(...props);
2676    },
2677    renderRegularlyAddressModalContents: function(...props) {
2678      renderRegularlyAddressModalContents(...props);
2679    },
2680    toggleRegularAddressListAddSection: function(...props) {
2681      toggleRegularAddressListAddSection(...props);
2682    },
2683    openUpdateRegularlyAddress: function(...props) {
2684      openUpdateRegularlyAddress(...props);
2685    },
2686    updateRegularlyAddressAjax: function() {
2687      updateRegularlyAddressAjax();
2688    },
2689    disableOtherItems: function(...props) {
2690      disableOtherItems(...props);
2691    },
2692    checkAddShippingList: function() {
2693      checkAddShippingList();
2694    },
2695    updateShippingAddress: function(...props) {
2696      updateShippingAddress(...props);
2697    },
2698    deleteShippingAddress: function(...props) {
2699      deleteShippingAddress(...props);
2700    },
2701    loadMoreAddressList: function() {
2702      loadMoreAddressList();
2703    },
2704    addRegularlyAddressValidation: function() {
2705      addRegularlyAddressValidation();
2706    },
2707    C3_getOrderList : function(type){
2708        getOrderList(type, true);
2709    },
2710
2711    C3_withdrawExchangeOrder: function({orderCode,orderSectionCode,orderSectionItemCode,qty}){
2712        // 교환요청 철회
2713		omsWithdrawReturnOrder({orderCode,orderSectionCode,orderSectionItemCode,qty,flag:true});
2714    },
2715    C3_withdrawReturnOrder: function({orderCode,orderSectionCode,orderSectionItemCode,qty}){
2716        // 반품요청 철회
2717	    omsWithdrawReturnOrder({orderCode,orderSectionCode,orderSectionItemCode,qty});
2718    },
2719    C3_withdrawCancelOrder: function({orderCode,orderSectionCode,orderSectionItemCode,qty}){
2720	  	// 취소요청 철회
2721	    omsWithdrawCancelOrder({orderCode,orderSectionCode,orderSectionItemCode,qty});
2722		},
2723    C3_showExchangeDetail: function(order_no, order_section_no, order_section_item_code){
2724        // 교환상세
2725	    omsShowExchangeDetail(order_no, order_section_no, order_section_item_code);
2726    },
2727    C3_showReturnDetail: function(order_no, order_section_no, order_section_item_code){
2728        // 반품상세
2729        omsShowReturnDetail(order_no, order_section_no, order_section_item_code);
2730    },
2731    C3_showCancelDetail : function(order_no, order_section_no, order_section_item_code){
2732        // 취소상세
2733		omsShowCancelDetail(order_no, order_section_no, order_section_item_code);
2734    },
2735    C3_digitalFileDownload: function(prod_no, order_idx, is_expired) {
2736        alert('Not implemented yet'); return;
2737    },
2738    C3_trackingParcel : function(parcelCompanyIdx,invoiceNo){
2739	    omsTrackingParcel(parcelCompanyIdx,invoiceNo);
2740    },
2741    C3_trackingParcelEcpay: function(code){
2742        alert('Not implemented yet'); return;
2743    },
2744	C3_orderConfirm: function(order_code, order_section_code){
2745		omsOrderConfirm(order_code, order_section_code);
2746	}
2747  }
2748}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.