PageSourceSearch

https://www.p-city.com/front/reservation/reservationStep1To2?RP_SEQ=12376

html p-city.com collected 2026-09-25 14:12:20 UTC 175,681 bytes, 4,669 lines download raw bytes

1
2
3
4
5
6
7
8
9
10
11
12<!DOCTYPE html>
13<!--[if IE 8]><html lang="ko" class="ie8"><![endif]-->
14<!--[if IE 9]><html lang="ko" class="ie9"><![endif]-->
15<!--[if IE 10]><html lang="ko" class="ie10"><![endif]-->
16<!--[if IE 11]><html lang="ko" class="ie11"><![endif]-->
17<!--[if gt IE 9]><!-->
18<html lang="ko">
19<!--<![endif]-->
20	<head>
21
22		
22<script type="text/javascript">
23		window.dataLayer = window.dataLayer || [];
24
25		dataLayer.push({
26		"user_id":"",
27		"is_login":"N",
28		"membership_rewards":"",
29		"membership_signature":"",
30		"membership_casino_point":"",
31		"membership_casino_club":""
32		});
33
34		</script>
34
35
36		<!-- Google Tag Manager -->
37		
37<script>
vendor: 339 bytes, lines 37-41
37(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
38		new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
39		j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
40		'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
41		})(window,document,'script','dataLayer','
41GTM-TWCG97T
vendor: 3 bytes, line 41
41');
41</script>
41
42		<!-- End Google Tag Manager -->
43
44		<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
45		<meta content="IE=edge" http-equiv="X-UA-Compatible">
46		<meta charset="utf-8">
47		<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
48		<link rel="icon" href="/favicon.ico" type="image/x-icon" />
49		<link rel="apple-touch-icon" sizes="180x180" href="/common/favicon/apple-touch-icon.png">
50		<link rel="icon" type="image/png" sizes="32x32" href="/common/favicon/favicon-32x32.png">
51		<link rel="icon" type="image/png" sizes="16x16" href="/common/favicon/favicon-16x16.png">
52		<link rel="manifest" href="/common/favicon/site.webmanifest">
53		<link rel="mask-icon" href="/common/favicon/safari-pinned-tab.svg" color="#96856e">
54		<meta name="msapplication-TileColor" content="#ffffff">
55		<meta name="theme-color" content="#ffffff">
56		<meta name="keywords" content="Paradise city, p-city, p city, pcity, 파라다이스시티, 피시티, 파라다이스씨티, 피씨티, 영종도 복합리조트, 영종도 카지노, 영종도 호텔, 영종도 리조트, vkfkekdltmtlxl">
57		<meta name="description" content="아트테인먼트 리조트 파라다이스시티로 초대합니다. Check-in to Fantasy, Check-in to Paradise!">
58
59		<title>파라다이스시티 홈페이지</title>
60		
61		
61<script src="/pcPub/static/js/common.js"               type="text/javascript" ></script>
61
62		
62<script src="/resource/front/inc/js/common.js"         type="text/javascript" charset="utf-8"></script>
62
63		
63<script src="/resource/front/inc/js/underscore-min.js" type="text/javascript" charset="utf-8"></script>
63
64
65		<link href="/pcPub/static/css/reset.css?v=147" rel="stylesheet" />
66
67		
68		<link href="/pcPub/static/css/common.css?v=147" rel="stylesheet" />
69		<link href="/pcPub/static/css/contents.css?v=147" rel="stylesheet" />
70		<link href="/pcPub/static/css/renewal.css?v=147" rel="stylesheet" />
71		
71<script type="text/javascript" src="/pcPub/static/js/ui.js?v=147"></script>
71
72		
73
74		<!--[if lt IE 9]>
75		
75<script type="text/javascript">
76			document.createElement("header");
77			document.createElement("nav");
78			document.createElement("section");
79			document.createElement("article");
80			document.createElement("aside");
81			document.createElement("footer");
82		</script>
82
83		<![endif]-->
84
85		<!-- data-->
86		
86<script src="/resource/front/inc/js/data/KO/json.data.global.js" type="text/javascript" charset="utf-8"></script>
86
87		
87<script src="/common/js/check.js"></script>
87
88		
88<script src="/common/js/form.js"></script>
88
89		
89<script src="/common/js/string.js"></script>
89
90		
90<script src="/common/js/analytics.js"></script>
90
91		
91<script src="/common/js/offerPopup.js"></script>
91
92
93		
93<script src="/common/js/common.js?v=147"></script>
93
94
95
96		
96<script src="/resource/front/js/front.js?v=147"></script>
96
97	</head>
98
99	<body class="reservation">
100		
101		<!-- Google Tag Manager (noscript) -->
vendor: 71 bytes, lines 101-102
101
102		<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
102GTM-TWCG97T
vendor: 86 bytes, lines 102-103
102" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
103		
103<!-- End Google Tag Manager (noscript) -->
104		
105		
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126<link href="/pcPub/static/css/offer_new.css?v=147" rel="stylesheet" />
127<!-- 헤더영역 -->
128<header id="headerWrap">
129	<h1><a href="/">paradise city</a></h1>
130	
131
132
133
134
135
136
137
138
139<!-- 헤더영역 -->
140<header id="headerWrap">
141	<h1><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/" data-name="로고"></a></h1>
142	<!-- GNB 영역 Start 2021.08.23 -->
143	<nav class="gnb">
144		<ul>
145			<li>
146			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/event/event">EXPERIENCE</a>
147			<div class="gnbDepth2">
148				<div>
149				<ul>
150					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/event/event">EVENTS</a></li>
151					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/activities/around/paradisecity">PARADISE CITY 추천코스</a></li>
152					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/activities/around/localarea?division=cos">LOCAL AREA 추천코스</a></li>
153				</ul>
154				</div>
155			</div>
156			</li>
157			<li>
158			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/hotel/overview">HOTEL</a>
159			<div class="gnbDepth2">
160				<div>
161				<ul>
162					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/hotel/overview">Overview</a></li>
163					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/hotel/room/list">객실</a></li>
164					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/hotel/facility/list">부대시설</a></li>
165				</ul>
166				</div>
167			</div>
168			</li>
169			<li>
170			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining">DINING</a>
171			<div class="gnbDepth2">
172				<div>
173				<ul>
174					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining">호텔 다이닝</a></li>
175					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining?SC_CATE=2">플라자 다이닝</a></li>
176					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining?SC_CATE=3">LOUNGE &amp; BAR</a></li>
177					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining?SC_CATE=4">BAKERY</a></li>
178				</ul>
179				</div>
180			</div>
181			</li>
182			<li>
183
184			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/overview">CASINO</a>
185			<div class="gnbDepth2">
186				<div>
187				<ul>
188					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/overview">Overview</a></li>
189					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/operation">이용안내</a></li>
190	
191					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/jackpot">잭팟 히스토리</a></li>
192					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/gameGuide">게임가이드</a></li>
193					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/dining?SC_CATE=5">RESTAURANT &amp; BAR</a></li>
194					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/facility">시설안내</a></li>
195					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/casino/slotRanking">잭팟 현황</a></li>
196				</ul>
197				</div>
198			</div>
199			</li>
200
201			<li>
202			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/cimer/overview">ART-TAINMENT</a>
203			<div class="gnbDepth2">
204				<div>
205				<ul>
206					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/cimer/overview">CIMER</a></li>
207					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/wonderbox/overview">WONDERBOX</a></li>
208					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/chroma/overview">CHROMA</a></li>
209					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/plaza/overview">SHOPPING PLAZA</a></li>
210					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artSpace/overview">PARADISE ART SPACE</a></li>
211					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/art">ART COLLECTION</a></li>
212				</ul>
213				</div>
214			</div>
215			</li>
216
217			<li>
218			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/convention/overview">MEETING &amp; WEDDING</a>
219			<div class="gnbDepth2">
220				<div>
221				<ul>
222					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/convention/overview">MEETING &amp; EVENT</a></li>
223					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/convention/wedding">Wedding</a></li>
224					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/convention/party">Family Event</a></li>
225					<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/studio/overview">STUDIO PARADISE</a></li>
226				</ul>
227				</div>
228			</div>
229			</li>
230			<li class="apGnb">
231			<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artParadiso/overview" data-name="ART PARADISO"></a>
232			<div class="gnbDepth2">
233				<div>
234					<ul>
235						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artParadiso/overview">Overview</a></li>
236						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artParadiso/room/list">객실</a></li>
237						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artParadiso/dining/list">DINING &amp; BAR</a></li>
238						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/artParadiso/facility/list">부대시설</a></li>
239						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/reservation?PCD=AP">OFFERS</a></li>
240						<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/event/event?SBU_CD=000003">Events</a></li>
241					</ul>
242				</div>
243			</div>
244			</li>
245			<li class="apGnb allmenuBtn">
246				<a class="bgnoneI" onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/hotel/hyatt" data-name="HYATT REGENCY">
247					<img class="hyatt" src="/pcPub/static/images/renewal/HYI_PSSGNB_HYI_basic.svg" />
248				</a>
249				<div class="gnbDepth2">
250				</div>
251			</li>
252
253		</ul>
254	</nav>
255
256	<div class="topLink">
257	<div class="more">
258		<a href="javascript:void(0);" class="topMore">MORE</a>
259		<ul>
260
261			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="javascript:jsLoginRefer();">로그인</a></li>
262			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="javascript:jsJoinStep1('N');">회원가입</a></li>
263
264			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/auth/front/mypage/reservation">예약 확인</a></li>
265			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/customerservice/overview">고객지원</a></li>
266			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/memnotice/membership">멤버십</a></li>
267
268		</ul>
269	</div>
270
271	<div class="dropdown eshop">
272		<a href="javascript:void(0);">E-SHOP</a>
273		<ul>
274			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/pcityeshop/overview?TYPE=GOURMET">GOURMET</a></li>
275			<li><a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/pcityeshop/overview?TYPE=LIFESTYLE">LIFESTYLE</a></li>
276		</ul>
277	</div>
278
279	<div class="dropdown language">
280		<a href="javascript:void(0);">
281
282KR
283
284		</a>
285		<ul>
286			<li><a href="javascript:jsChangeLang('KO');">KR</a></li>
287			<li><a href="javascript:jsChangeLang('EN');">EN</a></li>
288			<li><a href="javascript:jsChangeLang('ZNCN');">CN</a></li>
289			<li><a href="javascript:jsChangeLang('JA');">JP</a></li>
290			<li><a href="javascript:jsChangeLang('ZNTW');">TW</a></li>
291		</ul>
292	</div>
293	<div class="offer">
294		<a onclick="javascript:gnbClick(this);" href="javascript:void(0);" data-href="/front/reservation" class="btn btnFull">예약하기</a>
295	</div>
296	</div>
297	<!-- GNB 영역 End 2021.08.23 -->
298	<div class="bgDepth"></div>
299</header>
300<!-- //헤더영역 -->
301<script type="text/javascript">
302function jsJoinStep1(flg) {
303	if (window.dataLayer) {
304		window.dataLayer.push({
305			event: "click_sign_up",
306			is_pop_up: flg
307		});
308	}
309	document.location.href="/front/member/joinStep1";
310}
311function gnbClick(obj) {
312	let arr = new Array();
313	let dp2 = $(obj).closest(".gnbDepth2");
314	let name = "";
315	//Depth 판단
316	if (dp2.length > 0) {
317		let dp1 = dp2.siblings("a[data-href]");
318		arr.push(dp1.data("name") ? dp1.data("name") : toNotNull(dp1.text()).trim().toUpperCase());
319	}
320	arr.push($(obj).data("name") ? $(obj).data("name") : toNotNull($(obj).text()).trim().toUpperCase());
321
322	if (window.dataLayer) {
323		window.dataLayer.push({
324			event: "click_gnb",
325			menu_name: arr.join(" - ")
326		});
327	}
328	if ($(obj).data("href")) {
329		document.location.href=$(obj).data("href");
330	}
331}
332// 로그인시 이전 화면 넘겨주기 위한 파라미터 
333function jsLoginRefer(p_url){
334	let reqUri = p_url || location.pathname;
335	if (reqUri.startsWith("http:") || reqUri.startsWith("https:")) {
336		reqUri = "/";
337	}
338	let actionUrl = p_url || "/front/login";
339	if (actionUrl.startsWith("http:") || actionUrl.startsWith("https:")) {
340		actionUrl = "/";
341	}
342	let _form = $(document.frm_login_refer);
343	if (_form.length == 0) {
344		$("body").append($("<form>").attr({name:"frm_login_refer",method:"post",action:actionUrl}));
345		_form = $(document.frm_login_refer);
346	}
347	_form.empty();
348	try {
349
350			_form.append($("<input>").attr({type:"hidden",name:"currentPage",value:"RESSRC"}));
351
352			_form.append($("<input>").attr({type:"hidden",name:"RP_SEQ",value:"12376"}));
353
354		if (isNullOrEmpty(p_url)) {
355			_form.append($("<input>").attr({type:"hidden",name:"REQ_URI",value:reqUri}));
356		} else {
357			_form.find("input[name=REQ_URI]").remove();
358			_form.attr("action", reqUri);
359		}
360		_form.submit();
361	} catch(e) {
362		document.location.href = "/front/login";
363	}
364}
365function jsChangeLang(lang) {
366	if($.session){
367		$.session.clear();
368	}
369	location.href = "/?language=" + lang;
370}
371</script>
371
372	<div class="bgDepth"></div>
373</header>
374<!-- //헤더영역 -->
375
376
377<div class="reservationAside">
378	<section class="reservationSection">
379		<div class="productHeader">
380			<h1>
381				<span>Summary</span>
382			</h1>
383			<a href="javascript:jsAllDelFromCart();" class="btnDeleteAll">전체삭제</a>
384		</div>
385		<div class="productWrap mCustomScrollbar" data-mcs-theme="dark">
386			<div class="productNone" style="display:none;">
387				담긴 상품이 없습니다.
388			</div>
389			<div class="productListBox" style="display:none;">
390			
391			</div>
392		</div>
393
394		<!-- 토탈 설정 -->
395		<div class="productFooter">
396			<dl>
397				<dt>총액</dt>
398				<dd id="f_total">원</dd>
399			</dl>
400			
401			<dl>
402				<dt>할인액</dt>
403				<dd id="f_discount" class="txtRed">원</dd>
404			</dl>
405
406			
407			
408			<dl>
409				<dt>포인트</dt>
410				<dd id="f_point">P</dd>
411			</dl>
412		</div>
413		
414		<div class="productTotal amt">
415			<dl>
416				<dt>최종금액</dt>
417				<dd id="f_final">
418					<span></span>
419					원
420				</dd>
421			</dl>
422		</div>
423
424		<!-- 2020.02.04 원연정 최종금액 하단의 문구 추가 -->
425		<div class="productTotal">
426			<dl><dd style="font-weight: 200;">*VAT 포함</dd></dl>
427		</div>
428		<!-- //2020.02.04 원연정 최종금액 하단의 문구 추가 -->
429		<div class="smartChoiceWrap">
430			<span class="tooltipCont">
431				<span class="inf"></span>
432				<span class="des">예약을 위해<br/>상세설정을 진행해주세요.</span>
433			</span>
434		</div>
435		<button class="btn btnFull" disabled="disabled" onclick="javascript:jsSettingView();">
436			<span>상세설정 하기</span>
437		</button>
438
439	</section>
440</div>
441<!-- Side Form 영역 -->
442<form id="frmSidePage" name="frmSidePage" method="post">
443	<input type="hidden" name="TAB_CD" value=""/> <!-- 탭 구분 -->
444	<input type="hidden" name="CHECK_OUT" value=""/>
445	<input type="hidden" name="CHECK_IN" value=""/>
446	<input type="hidden" name="A_COUNT" value=""/>
447	<input type="hidden" name="B_COUNT" value=""/>
448	<input type="hidden" name="LOAD_TY" value=""/>
449</form>
450<!-- //Side Form 영역 -->
451
452
453<script type="text/javascript">
454//화면전환 관련 상태값
455var initPageFlag  = true;  //초기화면 표시 플래그
456var loginCallFlag = false; //로그인 전환 플래그
457
458//Date Range Picker 상태값
459var drpOpenFlag   = false; //날짜 팝업 OPEN 상태
460var drpChangeFlag = false; //날짜 변경여부(callback 함수 호출 시점)
461var drpApplyFlag  = false; //날짜 적용 여부(적용 버튼 클릭 후)
462//ELEMENT LOAD
463$(document).ready(function() {
464	$(window).off("mousewheel"); //GNB SCROLL EVENT 삭제
465	$("#headerWrap").css("z-index", "11"); //Z-index 조정 (GNB)
466	//Z-index 조정
467	//초기 VIEW 설정
468	jsSectionView("none");
469	//초기 DATA 설정
470	jsInitDataSet();
471	//예약 관련 페이지에서 EVENT 설정 부분이 있으면 호출
472	if (typeof jsEventSet == 'function') jsEventSet();
473	//예약 관련 페이지에서Value 설정 부분이 있으면 호출
474	if (typeof jsJSPValueSet == 'function') jsJSPValueSet();
475	//예약 관련 페이지에서 3단계 화면인 경우 호출
476	if (typeof jsInitJsonInfo == 'function') jsInitJsonInfo();
477
478	//TAB_CD 설정
479	var allLen = $("article.productItem").length;
480	var tgtData = $("article.productItem").eq(allLen - 1).data();
481	if (allLen > 0) {
482		if (tgtData.OFFER_TYPE == "TA") {
483			$("#frmSidePage").find("input[name=TAB_CD]").val("HTL");
484		} else {
485			$("#frmSidePage").find("input[name=TAB_CD]").val("PKG");
486		}
487	}
488
489	$(document).on('mousedown', 'div.selectBox.itemCnt .ui-select-options a', function() {
490		$(this).parents('.ui-select-options').find('li.on').removeClass('on');
491		$(this).parent().addClass('on');
492	});
493});
494//초기 로딩 시 값 변동이 필요한지 여부 확인용 전역 변수
495$initUpdateCnt = 0;
496//RESOURCE LOAD
497$(window).load(function(){
498	//console.log("Side IN load ::::: ");
499	//초기 화면로딩 종료 함수 호출
500	if (typeof jsLoadComplete == 'function') jsLoadComplete();
501	//초기화면 로딩 종료
502	initPageFlag = false;
503	
504	//최초 로딩시 1번만 업데이트(값의 변동이 필요할 때)
505	if ($initUpdateCnt > 0) {
506		//console.log("Side IN load 01 ::::: ");
507		jsPreSaveJsonData();
508		$initUpdateCnt = 0;
509	}
510	
511	//화면 최초 리사이징
512	$(window).trigger('resize');
513});
514
515//*예약 관련 공통 Function START*//
516//요약상품목록 화면 설정 > changeFlag : none/add/del)
517function jsSectionView(changeFlag) {
518	
519	sessionStorage.setItem("G_CHG_FLG"  , "");
520	//우측메뉴 상품 목록 수
521	var articleLen = $('article.productItem').length;
522	
523	//최초 화면 로드 시점
524	if ("none" == changeFlag) {
525		//요약영역에 담긴게 하나도 없으면
526		if (articleLen == 0) {
527			//담긴 상품이 없습니다.
528			$('div.productNone').css("display", "table-cell");
529		} else {
530			//요약영역 내용 활성화
531			$('div.productListBox').show();
532			
533			//하단 버튼영역 활성화(search)
534			$("section.reservationSection > button.btn.btnFull").prop('disabled', false);
535			
536		}
537		sessionStorage.setItem("G_CHG_FLG"  , "none");
538	//상품 추가 시점
539	} else if ("add" == changeFlag) {
540		if (articleLen > 0) {
541			$('div.productNone').hide();
542			$('div.productListBox').show();
543			//하단 버튼영역 활성화
544			$("section.reservationSection > button.btn.btnFull").prop('disabled', false);
545		}
546		sessionStorage.setItem("G_CHG_FLG"  , "add");
547	//상품 삭제 시점
548	} else if ("del" == changeFlag) {
549		if (articleLen == 0) {
550			$('div.productListBox').hide();
551			$('div.productNone').css("display", "table-cell");
552			//하단 버튼영역 비활성화
553			$("section.reservationSection > button.btn.btnFull").prop('disabled', true);
554		} else {
555			
556		}
557		sessionStorage.setItem("G_CHG_FLG"  , "del");
558	} else if ("mod" == changeFlag) {
559		$("section.reservationSection > button.btn.btnFull").prop('disabled', jsDisabledPayment());
560		sessionStorage.setItem("G_CHG_FLG"  , "mod");
561	}
562}
563
564//상품 검색 화면 이동
565function jsSearchView() {
566
567	$("#frmSidePage").attr("action", "/front/reservation");
568	$("#frmSidePage").submit();
569}
570
571//상품 설정 화면 이동
572function jsSettingView() {
573	
574	var settingViewNo = $("section.reservationSection > button.btn.btnFull").prop('disabled');
575	
576	if(!settingViewNo) {
577		//점검 시간 확인 2019.04.29
578		$.ajax({
579			url : "/front/reservation/chkSvcTime"
580			, method : "post"
581			, data : {MSG_CD : "alert.checkTimeFixed"}
582			, success : function(data, stat, xhr) {
583				if (data.chkSvcTimeFlg == "Y") {
584					alert(data.errorMsg);
585				} else {
586					$("#frmSidePage").attr("action", "/front/reservation/reservationStep2");
587					$("#frmSidePage").submit();
588				}
589			}
590		});
591	}
592}
593//로그인 여부 확인
594function jsChkIsLogin() {
595	var isLogin = false;
596
597	//data 전송
598	$.ajax({
599		url : "/front/reservation/chkIsLogin"
600		, method : "post"
601		, async : false
602		, success : function(data, stat, xhr) {
603			if (data.result == "success") {
604				isLogin =  true;
605			}
606		}
607	});
608
609	return isLogin
610}
611
612//점검 시간 확인 2019.04.29
613function jsChkSvcTime() {
614	var isSvcTime = false;
615
616	//data 전송
617	$.ajax({
618		url : "/front/reservation/chkSvcTime"
619		, method : "post"
620		, data : {MSG_CD:"alert.checkTimeFixed"}
621		, async : false
622		, success : function(data, stat, xhr) {
623			if (data.chkSvcTimeFlg == "Y") {
624				isSvcTime = true;
625				alert(data.errorMsg);
626			}
627		}
628	});
629
630	return isSvcTime;
631}
632//상품 결제 화면 이동
633function jsPaymentView() {
634	if(!jsDisabledPayment()) {
635		//점검 시간 확인 2019.04.29
636		$.ajax({
637			url : "/front/reservation/chkSvcTime"
638			, method : "post"
639			, data : {MSG_CD:"alert.checkTimeFixed"}
640			, async : false
641			, success : function(data, stat, xhr) {
642				if (data.chkSvcTimeFlg == "Y") {
643					alert(data.errorMsg);
644				} else {
645					if (jsChkIsLogin()) {
646						//로그인 유저면 상품 결제화면으로 이동
647						jsGoPayment();
648					} else {
649						// 비로그인 유저면 로그인 팝업
650						layerPopOpen("#loginPop");
651					}
652				}
653			}
654		});
655	}
656}
657
658//3단계 이동
659function jsGoPayment() {
660	$("#frmSidePage").attr("action", "/front/reservation/reservationStep3");
661	$("#frmSidePage").submit();
662}
663
664//초기 ELEMENT 데이터 설정
665function jsInitDataSet() {
666	//총액 정보 설정
667	$("div.productTotal.amt").data({});
668	//요약목록 확인
669	$('article.productItem').each(function(index) {
670		//DB 조회한  요약 정보  취득
671		var productItem = $(this).find(".summaryItemData").data("product_item");
672		$(this).find(".productListH").data("sbu_cd", productItem["SBU_CD"]);
673		delete productItem["SBU_CD"];
674		//요약 정보를 각 요약 목록의 요소에 설정
675		$(this).data(productItem);
676		//요약 정보 요소를 삭제
677		$(this).find(".summaryItemData").remove();
678		
679		
680	});
681	//최종 금액 설정
682	jsDrawFinalAmt($("div.productTotal.amt").data());
683	
684}
685
686
687//상품 설정 문구 취득
688function jsGetSettingText(offerType, offerTypeCd, index) {
689	var text = "";
690	//HOTEL PARADISE
691	if ("TA" == offerType) {
692		if ("000001" == offerTypeCd) {
693		if (1 == index) text = "체크인 / 체크아웃";if (2 == index) text = "성인 / 어린이 / 유아";if (3 == index) text = "객실";if (4 == index) text = "베드타입";
694		} else if ("000002" == offerTypeCd) {
695		if (1 == index) text = "체크인 / 체크아웃";if (2 == index) text = "성인";if (3 == index) text = "객실";if (4 == index) text = "베드타입";
696		}
697	} else if ("TB" == offerType) {
698		if (1 == index) text = "성인 / 어린이";if (2 == index) text = "";if (3 == index) text = "";if (4 == index) text = "";
699	} else if ("TC" == offerType) {
700		if ("000004" == offerTypeCd) {
701		if (1 == index) text = "날짜";if (2 == index) text = "티켓";if (3 == index) text = "대인 / 소인";
702		} else if ("000005" == offerTypeCd) {
703		if (1 == index) text = "날짜";if (2 == index) text = "티켓";if (3 == index) text = "남성 / 여성";
704		} else if ("000006" == offerTypeCd) {
705		if (1 == index) text = "날짜";if (2 == index) text = "티켓";if (3 == index) text = "대인 / 소인";
706		}
707	} else if ("TD" == offerType) {
708		if ("000007" == offerTypeCd) {
709		if (1 == index) text = "날짜";if (2 == index) text = "시간";if (3 == index) text = "층 & 위치";
710		} else if ("000008" == offerTypeCd) {
711		if (1 == index) text = "날짜";if (2 == index) text = "시간";if (3 == index) text = "층 & 위치";
712		} else if ("000009" == offerTypeCd) {
713		if (1 == index) text = "날짜";if (2 == index) text = "층 & 구역";
714		}
715	} else if ("TE" == offerType) {
716		if (1 == index) text = "날짜";if (2 == index) text = "상품";if (3 == index) text = "상품수량";
717	}
718	return text;
719}
720
721//결제하기 버튼 활성화 여부 결정
722function jsDisabledPayment() {
723	//리턴 플래그
724	var rtnFlag = true;
725
726	//상품설정완료 COUNT
727	var settedCnt = 0;
728	//최종금액이 설정되면, 전체 등록한 상품이 모두 필수설정을 완료하였는지 확인
729	$(".totalAmt").each(function(index) {
730		if(jsNumber($(this).text()) > 0) {
731			settedCnt++;
732		}
733	});
734
735	//모든 필수 설정이 완료되면 결제정보 입력하기 버튼 활성화
736	if ($(".totalAmt").length == settedCnt && settedCnt > 0) rtnFlag = false;
737
738	return rtnFlag;
739}
740
741//우측메뉴 변동시 : 현 상태를 JSON으로 변환해 DB 저장
742function jsPreSaveJsonData(flag, func, proc) {
743	//종료 플래그
744	var returnOk = false;
745	//우측메뉴 Object
746	var sideObj = new Object();
747	//우측메뉴의 상품목록을  보존할 Array 변수
748	var itemArray = new Array();
749	//우측메뉴에 저장된 상품 목록
750	var itemList = $("div.productListBox").find("article.productItem");
751	//요청사항 입력 가능 플래그
752	var AIFlag = false;
753
754	//상품목록에 담긴 상품이 1개이상이면 필요 Data를 추출
755	if (itemList.length > 0) {
756		for(var i=0; i<itemList.length; i++) {
757			//상품정보
758			var itemInfo = $(itemList[i]);
759			
760			//Offer Object에 현재 설정된 상품정보를 Set
761			itemInfo.data().OFFER_ORD = i;
762			if (itemInfo.data().OFFER_TYPE == "TA") {
763				AIFlag = true;
764			}
765			//
766			itemArray.push(itemInfo.data());
767		}
768	}
769	
770
771	//우측메뉴 Object Data Set
772	sideObj.OFFER = itemArray;
773	sideObj.OFFER_PRICE = {MBR_POINT:jsNumber($("#f_point").text())*-1};
774
775	//JsonInfo Submit
776	var jsonInfo = JSON.stringify(sideObj);
777	if ("" != toNotNull(jsonInfo)) {
778		let async = !!flag
779		if (async) {
780			fullLoding($("#container"));
781		}
782		//data 전송
783		$.ajax({
784			url : "/front/reservation/preSaveJsonData",
785			method : "post",
786			async : async,
787			data : {JSON_INFO : JSON.stringify(sideObj)},
788			success : function(data, stat, xhr) {
789				//반환된 JSON DATA
790				var rtnOfferAll = "";
791				var rtnOfferSize = 0;
792				if (!isNullOrEmpty(data.JSON_INFO)) {
793					rtnOfferAll = JSON.parse(data.JSON_INFO);
794					rtnOfferSize = rtnOfferAll.OFFER.length;
795				}
796				
797				//반환된 데이터로 요약정보 교체
798				for (var i = 0; i < rtnOfferSize; i++) {
799					//데이터 갱신
800					$("article.productItem").eq(i).data(rtnOfferAll.OFFER[i]);
801					//할인정보 작성
802					jsDrawDiscountInfo(i, rtnOfferAll.OFFER[i].OFFER_CONT);
803				}
804				//최종 금액 표기
805				jsDrawFinalAmt(rtnOfferAll.OFFER_PRICE);
806				//쿠폰이 있으면, 쿠폰 재적용
807				if (typeof jsOffCpnElement == 'function') jsOffCpnElement();
808				if (typeof jsAplyCpnElement == 'function') jsAplyCpnElement();
809				//프로세스 종료 확인
810				returnOk = true;
811			},
812			complete : function () {
813				if (async) {
814					if (typeof func == "function") func.apply(this, [proc]);
815					fullLodingClose();
816				}
817			}
818		});
819	}
820	return returnOk;
821}
822
823//할인정보 작성
824function jsDrawDiscountInfo(index, offerCont) {
825	//금액 정보
826	var priceInfo = offerCont["PRICE_INFO"];
827	var mbrDiscArr = new Array(); //할인금액
828	var dcRateArr = new Array(); //할인율
829	var mbrGubunArr = new Array(); //등급구분
830	var mbrNameArr = new Array(); //등급상세
831	//금액정보 Set
832	if (!isNullOrEmpty(priceInfo["MBR_DISC_ARR"])) {
833		mbrDiscArr = priceInfo["MBR_DISC_ARR"];
834		dcRateArr = priceInfo["DC_RATE_ARR"];
835		mbrGubunArr = priceInfo["MBR_GUBUN_ARR"];
836		mbrNameArr = priceInfo["MBR_NAME_ARR"];
837	} else if (!isNullOrEmpty(priceInfo["MBR_DISC"])){
838		mbrDiscArr.push(priceInfo["MBR_DISC"]);
839		dcRateArr.push(priceInfo["DC_RATE"]);
840		mbrGubunArr.push(priceInfo["MBR_GUBUN"]);
841		mbrNameArr.push(priceInfo["MBR_NAME"]);
842	}
843	//금액정보 Element(정가, 할인할 금액, 할인된 금액)
844	var dlList = $("article.productItem").eq(index).find("div.productListC > div.casyBox > dl");
845	//할인정보 초기화
846	dlList.not(dlList.eq(0)).remove();
847
848	//할인영역 초기화 (3단계 한정)
849	$("tr.discountList table.discount tbody tr.disItm_"+index).each(function() {
850		if ($(this).data("offer_type") == "TC" || $(this).data("offer_type") == "TE") $(this).remove();
851	});
852
853	//오퍼 정보
854	var offerData = $("article.productItem").eq(index).data();
855	var offerType = offerData["OFFER_TYPE"];
856	var offerName = offerData["OFFER_NAME"];
857	
858	//할인 후 가격
859	var discAmt = priceInfo["DISC_AMT"];
860	//할인 갯수
861	var discLength = mbrDiscArr.length;
862	//할인액 TEXT
863	var mbrDiscTxt = "멤버십 할인";
864	//할인 후 금액 TEXT
865	var discAmtTxt = "할인 후 금액";
866	//할인정보 작성
867	for (var i = discLength-1; i >= 0; i--) {
868		var mbrDisc = mbrDiscArr[i];
869		var dcRate = dcRateArr[i];
870		var mbrGubun = mbrGubunArr[i];
871		var mbrName = mbrNameArr[i];
872		var txt1 = "";
873		if (i == 0) {
874			txt1 = mbrDiscTxt;
875			dlList.closest("div.casyBox").append($("<dl>").addClass("total").append($("<dt>").text(discAmtTxt)).append($("<dd>").text(jsToStringAmt(discAmt))));
876		}
877		//할인 뱃지, Tootip
878		var mbrBadge = $("<span>").addClass("mark " + capitalizeStr(mbrName)).attr("data-tooltip", "mk" + index + "_" + i).text(mbrGubun.substring(0,1));
879		var mbrTooltip = $("<div>").addClass("tooltipBox").attr("id", "mk" + index + "_" + i).append($("<p>").text("PARADISE " + mbrGubun + " " + mbrName));
880		var mbrDiscEle = $("<dl>").append($("<dt>").text(txt1)).append($("<dd>").addClass("txtRed mbrDisc").text("-" + jsToStringAmt(mbrDisc) + " "));
881		mbrDiscEle.find("dd.txtRed.mbrDisc").append(mbrBadge).append(mbrTooltip);
882		dlList.after(mbrDiscEle);
883	
884		//TC 유형만 갱신
885		if ("TC" == offerType || "TE" == offerType) {
886			//엘리먼트 작성
887			var step3Elem = "";
888				step3Elem +="<tr class='disItm_" + index + "' data-offer_type='" + offerType + "'>"; 
889				step3Elem +=    "<td class='tl'>" + offerName + "</td>";
890				step3Elem +=    "<td class='tc'></td>";
891				step3Elem +=    "<td class='" + jsGetMbrGradeType(mbrName) + "'>SIGNATURE " +  mbrName + " " + dcRate + "%</td>";
892				step3Elem +=    "<td><span>- " + jsToStringAmt(mbrDisc) + "</span></td>";
893				step3Elem +="</tr>";
894			//0번째
895			if (index == 0) {
896				$("tr.discountList table.discount tbody").prepend(step3Elem);
897			//나머지
898			} else {
899				$("tr.discountList table.discount tbody tr.disItm_"+ (index-1) + ":last").after(step3Elem);
900			}
901		}
902	}
903	tooltip();
904}
905function jsGetMbrGradeType(mbrName) {
906	mbrName = toNotNull(mbrName).toUpperCase(); 
907	var type = "";
908	if ("RED" == mbrName) {
909		type = "type1";
910	} else if ("ORANGE" == mbrName) {
911		type = "type2";
912	} else if ("PURPLE" == mbrName) {
913		type = "type4";
914	} else if ("GOLD" == mbrName) {
915		type = "type6";
916	}
917	return type;
918}
919//상품삭제(단건)
920function jsDelFromCart(obj) {
921	//선택된 상품
922	var article = $(obj).closest('article');
923	
924	var LOAD_TY   = sessionStorage.getItem("LOAD_TY") != "" ? sessionStorage.getItem("LOAD_TY") : "";
925	var CHECK_IN  = sessionStorage.getItem("CHECK_IN") != "" ? sessionStorage.getItem("CHECK_IN") : "";
926	var CHECK_OUT = sessionStorage.getItem("CHECK_OUT") != "" ? sessionStorage.getItem("CHECK_OUT") : "";
927	var A_COUNT   = sessionStorage.getItem("G_A_COUNT") != "" ? sessionStorage.getItem("G_A_COUNT") : "";
928	var B_COUNT   = sessionStorage.getItem("G_B_COUNT") != "" ? sessionStorage.getItem("G_B_COUNT") : "";
929
930	remove_from_cart(article);
931	
932
933	//현재 담긴 목록 최하단 오퍼 유형 확인
934	var allLen = $("article.productItem").length;
935	//현재 담겨있는게 1개 초과이면 마지막 삭제 이후 TAB_CD 설정
936	if (allLen > 1) {
937		//멤버십 할인 내역 삭제
938		$("tr.discountList table.discount tbody tr.disItm_"+article.index()).remove();
939		//쿠폰 상품영역 삭제
940		$("#cpnApplyTo").find("p.text").eq(article.index()).remove();
941		//쿠폰 목록영역 삭제
942		$("#cpnApplyFr").find("div.cpn").eq(article.index()).remove();
943		//멤버십 할인 내역 재정렬
944		$("tr.discountList table.discount tbody tr[class^=disItm_]").each(function(i){
945			var cls = $(this).attr("class");
946			var clsOrd = jsNumber(toNotNull($(this).attr("class")).split("_")[1]);
947			if (clsOrd > article.index()) {
948				$(this).removeClass(cls).addClass("disItm_" + (clsOrd-1))
949			}
950		});
951		//우측메뉴 가운데 선택된 상품 삭제
952		article.remove();
953		//쿠폰이 있으면, 쿠폰 재적용
954		if (typeof sortTgtCpnOrd == 'function') sortTgtCpnOrd();
955		if (typeof jsOffCpnElement == 'function') jsOffCpnElement();
956		if (typeof jsAplyCpnElement == 'function') jsAplyCpnElement();
957		
958		var tgtData = $("article.productItem").eq($("article.productItem").length - 1).data();
959		if (tgtData.OFFER_TYPE == "TA") {
960			$("#frmSidePage").find("input[name=TAB_CD]").val("HTL");
961		} else {
962			$("#frmSidePage").find("input[name=TAB_CD]").val("PKG");
963		}
964	//현재 담겨있는게 1개면 TAB_CD 설정 후 마지막 삭제
965	} else {
966		var tgtData = $("article.productItem").eq(allLen - 1).data();
967		if (tgtData.OFFER_TYPE == "TA") {
968			$("#frmSidePage").find("input[name=TAB_CD]").val("HTL");
969		} else {
970			$("#frmSidePage").find("input[name=TAB_CD]").val("PKG");
971		}
972		//우측메뉴 가운데 선택된 상품 삭제
973		article.remove();
974	}
975	
976	$("#frmSidePage").find("input[name=LOAD_TY]").val(LOAD_TY);
977	$("#frmSidePage").find("input[name=CHECK_IN]").val(CHECK_IN);
978	$("#frmSidePage").find("input[name=CHECK_OUT]").val(CHECK_OUT);
979	$("#frmSidePage").find("input[name=A_COUNT]").val(A_COUNT);
980	$("#frmSidePage").find("input[name=B_COUNT]").val(B_COUNT);
981
982	//우측메뉴 데이터 저장
983	jsPreSaveJsonData(true, jsSectionView, "del");
984}
985
986//상품삭제(전체)
987function jsAllDelFromCart() {
988	//삭제 확인
989	if ($("div.productListBox > article").length == 0) {
990		alert("삭제할 상품이 없습니다.");
991		return;
992	} else {
993		if (!confirm("모든 상품이 삭제됩니다.")) return;
994	}
995	remove_from_cart();
996	
997
998	//TAB_CD 설정 후 전체 삭제
999	var allLen = $("article.productItem").length;
1000	var tgtData = $("article.productItem").eq(allLen - 1).data();
1001	if (tgtData.OFFER_TYPE == "TA") {
1002		$("#frmSidePage").find("input[name=TAB_CD]").val("HTL");
1003	} else {
1004		$("#frmSidePage").find("input[name=TAB_CD]").val("PKG");
1005	}
1006
1007	//우측메뉴 전체 삭제(Side)
1008	$('article.productItem').remove();
1009
1010	//우측메뉴 데이터 저장
1011	jsPreSaveJsonData();
1012
1013	//화면 전환 (전체삭제)
1014	jsSectionView("del");
1015}
1016function remove_from_cart(obj) {
1017	if (window.dataLayer) {
1018		let button_type = "";
1019		let tgt = new Array();
1020		if (!isNullOrEmpty(obj)) {
1021			button_type = "삭제(단일)";
1022			tgt.push(obj.data());
1023		} else {
1024			button_type = "삭제(전체)";
1025			$("article.productItem").each(function(){tgt.push($(this).data())});
1026		}
1027		let _sbuNm = {
1028			"000001" : "호텔 파라다이스",
1029			"000002" : "아트파라디소",
1030			"000004" : "씨메르",
1031			"000006" : "원더박스"
1032		};
1033		let items = new Array();
1034		for (let i = 0; i < tgt.length; i++) {
1035			let ord = tgt[i]["OFFER_ORD"];
1036			let acnt = jsNumber(tgt[i]["OFFER_CONT"]["ACNT"]);
1037			let fcnt = jsNumber(tgt[i]["OFFER_CONT"]["FCNT"]);
1038			let bcnt = jsNumber(tgt[i]["OFFER_CONT"]["BCNT"]);
1039			let icnt = jsNumber(tgt[i]["OFFER_CONT"]["ITEMCNT"]);
1040			let quantity = tgt[i]["OFFER_TYPE"] == "TA" ? 1 : (acnt + fcnt + bcnt + icnt);
1041			let item_category = tgt[i]["OFFER_TYPE"] == "TA" ? "호텔" : "엔터테인먼트";
1042			let item_category2 = tgt[i]["OFFER_TYPE"] == "TC" ? "티켓" : "패키지";
1043			let item = {
1044				facility_name : _sbuNm[$("article.productItem > .productListH").eq(ord).data("sbu_cd")],
1045				price : tgt[i]["OFFER_CONT"]["PRICE_INFO"]["TOTAL_AMT"],
1046				quantity : quantity,
1047				item_id : tgt[i]["RP_SEQ"],
1048				item_name : tgt[i]["OFFER_NAME"],
1049				item_category : item_category,
1050				item_category2 : item_category2
1051			}
1052			items.push(item);
1053		}
1054		window.dataLayer.push({
1055			event: "remove_from_cart",
1056			currency: "KRW",
1057			button_type: button_type,
1058			items: items
1059		});
1060	}
1061}
1062/**
1063//데이터 타입 변경  : 문자(숫자가 아닌게 포함된경우 제거) -> 숫자
1064function jsNumber(amtStr) {
1065	return Number(toNotNull(amtStr).toString().replace(/[^0-9]/g,""));
1066}
1067*/
1068
1069//금액환산 : 숫자 -> 문자 + 단위
1070function jsToStringAmt(amt, exchange) {
1071	if (isNullOrEmpty(exchange)) exchange  = "원";  //금액 단위
1072
1073	if (toNotNull(amt) == "" || isNaN(amt)) {
1074		return "0 " + exchange;
1075	} else {
1076		return addCommaStr(amt.toString()) + " " + exchange;
1077	}
1078}
1079
1080//YYYY + 월(이름) > YYYYMM
1081function jsGetDateLen6(monthName, year, isFrom){
1082	var d = Date.parse(monthName + "1," + year);
1083
1084	//Parameter가 유효하면, 해당 값을 convert
1085	if (!isNaN(d)){
1086		var monthNum = new Date(d).getMonth() + 1;
1087		var monthStr = monthNum < 10 ? "0" + monthNum : monthNum.toString();
1088		return year + monthStr;
1089	}
1090
1091	//Parmeter가 유효하지 않으면 기본값 설정 : from > 현재 달, to > 다음달
1092	var date = new Date();
1093	if (isFrom) return moment(date).format("YYYYMMDD").substring(0,6);
1094	else        return moment(date.setMonth(date.getMonth()+1)).format("YYYYMMDD").substring(0,6);
1095}
1096
1097/**
1098//날짜 형식 확인(YYYY.MM.DD)
1099function isDateLen10(d) {
1100	var re = /^(19|20)\d{2}.(0[1-9]|1[012]).(0[1-9]|[12][0-9]|3[0-1])$/;
1101	return re.test(d);
1102}
1103*/
1104
1105//날짜STR(YYYY-MM-DD) -> 숫자 (YYYYMMDD)
1106function formatDate(date) {
1107	var d     = new Date(date)
1108	var month = '' + (d.getMonth() + 1)
1109	var day   = '' + d.getDate()
1110	var year  = d.getFullYear();
1111
1112	if (month.length < 2) month = '0' + month;
1113	if (day.length < 2) day = '0' + day;
1114
1115	return Number(year + month + day);
1116}
1117
1118/*
1119//박수 계산
1120function jsCalcPerDay(fromDate, toDate) {
1121	if (isDateLen10(fromDate) && isDateLen10(toDate)) {
1122		return moment(replaceAll(toDate, ".", "-"),'YYYY-MM-DD').diff(replaceAll(fromDate, ".", "-"),'day');
1123	}
1124	return 0;
1125}
1126
1127//문자열 치환
1128function replaceAll(str, searchStr, replaceStr) {
1129	return toNotNull(str).split(searchStr).join(replaceStr);
1130}
1131
1132//문자열 자릿수 증가 (0 -> 000)
1133function pad(n, width) {
1134	n = n + '';
1135// 	return n;
1136	return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
1137}
1138*/
1139
1140//*예약 관련 공통 Function END  *//
1141
1142//*예약 관련 공통 Function (ui.js 연계) START*//
1143//selectUI - 값 변경시 이벤트
1144function jsChangeSelectUi(eleObj) {
1145	var resSelectId = eleObj.closest(".ui-select-wrapper").find("select").attr("id");
1146	var url = window.location.href;
1147
1148	//3단계 화면 별도 처리
1149	if (url.indexOf("front/reservation/reservationStep3") > -1) {
1150		return jsSelectVal(eleObj);
1151	}
1152	//인기순, 최신순, 마감시간순 정렬순서 변경
1153	else if (resSelectId == "sortOrdHTL" || resSelectId == "sortOrdPKG") {
1154		if (window.dataLayer) {
1155			window.dataLayer.push({
1156				event: "click_filter",
1157				filter_category: resSelectId == "sortOrdHTL" ? "HOTEL" : "ENTERTAINMENT",
1158				filter_name: jsNumber(eleObj.data("value")) == 0 ? "추천순" : jsNumber(eleObj.data("value")) == 1 ? "높은 가격순" : "낮은 가격순"
1159			});
1160		}
1161		jsRefresh(eleObj.data("value"));
1162		return true;
1163	}
1164	//오퍼 예약문의 선택
1165	else if (resSelectId == "QUESTION") {
1166		return true;
1167	}
1168	//'KO' 전화번호 선택
1169	else if (resSelectId == "TEL1") {
1170		return true;
1171	}
1172	else if (resSelectId == "seltype" || resSelectId == "selRmTypeCd"){
1173		return true;
1174	}
1175	//예약 전용 처리(담기)
1176	else {
1177		return jsSetInfoToCart(eleObj);
1178	}
1179	
1180}
1181
1182//selectUI - HTML ELEMENT 재생성 이벤트
1183function jsRemakeSelectUi(eleObj, selOpt) {
1184	var tgtArr = selOpt.TGT;
1185	var isVal  = ("VAL"  in selOpt && typeof selOpt.VAL  === 'object') ? true : false;
1186	var isVal2 = ("VAL2" in selOpt && typeof selOpt.VAL2 === 'object') ? true : false;
1187	for(var i = 0; i < tgtArr.length; i++) {
1188		// SELECT BOX를 생성할 Ul 태그
1189		var targetUl = eleObj.find("div.selectBox."+tgtArr[i]).find("ul");
1190		// SELECT BOX를 생성할 Ul 초기화
1191		targetUl.empty();
1192
1193		// SELECT BOX의 활성화 여부가 TRUE인 경우
1194		if (selOpt.ABL[i]) {
1195			// SELECT BOX재생성
1196			var liLength = (typeof selOpt.LEN === 'object') ? selOpt.LEN[i] : selOpt.LEN;
1197			var startTxt = (typeof selOpt.STT === 'object') ? selOpt.STT[i] : selOpt.STT;
1198
1199			// SELECT BOX VALUE 설정
1200			if (isVal) {
1201				for(var j = 0; j <= selOpt.VAL.length; j++) {
1202					if (!isNullOrEmpty(startTxt) && j==0) {
1203						targetUl.append($("<li>").append($("<a>").addClass("ui-select-option").attr("data-value", "").text(startTxt)));
1204					} else {
1205						var aTag = $("<a>").addClass("ui-select-option").attr("data-value", selOpt.VAL[j-1]).text(selOpt.TXT[j-1]);
1206						if (isVal2) aTag.attr("data-value2", selOpt.VAL2[j-1]);
1207						targetUl.append($("<li>").append(aTag));
1208					}
1209				}
1210			} else {
1211				for(var j = selOpt.STR; j <= liLength; j++) {
1212					if (!isNullOrEmpty(startTxt) && j==0) {
1213						targetUl.append($("<li>").append($("<a>").addClass("ui-select-option").attr("data-value", j).text(startTxt)));
1214					} else {
1215						targetUl.append($("<li>").append($("<a>").addClass("ui-select-option").attr("data-value", j).text(j+selOpt.TXT)));
1216					}
1217				}
1218			}
1219
1220			// 선택지가 한개 이상 존재하는 경우 선택된 값을 확인
1221			if (targetUl.find("a.ui-select-option").length) {
1222				// 선택된 값이 없으면 첫번째 값을 기본값
1223				if (isNullOrEmpty(selOpt.SEL[i])) {
1224					targetUl.find("a.ui-select-option").eq(0).addClass("selection");
1225					targetUl.siblings("a.ui-select-trigger").text(targetUl.find("a.ui-select-option").eq(0).text());
1226				} else {
1227					targetUl.find("a.ui-select-option[data-value='"+selOpt.SEL[i]+"']").addClass("selection");
1228					targetUl.siblings("a.ui-select-trigger").text(targetUl.find("a.ui-select-option[data-value='"+selOpt.SEL[i]+"']").text());
1229				}
1230				// SELECT BOX 활성화
1231				eleObj.find("div.selectBox."+tgtArr[i]).removeClass("disabled");
1232			}
1233		} else {
1234			//선택지 초기화
1235			targetUl.siblings("a.ui-select-trigger").text("");
1236			//SELECT BOX 비활성화
1237			eleObj.find("div.selectBox."+tgtArr[i]).addClass("disabled");
1238		}
1239	}
1240}
1241
1242
1243//DateRangePicker 달력 Open상태 변경
1244function jsDrpOpenFlag(flag) {
1245	drpOpenFlag   = flag;
1246}
1247//DateRangePicker 달력 Open 후 자동선택
1248function jsDrpAutoClick(target, obj) {
1249	//해당상품
1250	var resBox = $(target).closest("div.reservationBox");
1251	//장바구니 정보
1252	var itemData = $("article.productItem").eq($("div.reservationBox").index(resBox)).data() || {};
1253	//상품에 지정된 박수 (기간)
1254	var thisPeriod = resBox.data("period");
1255	//1박을 초과하는 상품의 경우 자동선택 실행
1256	if (jsNumber(thisPeriod) > 1) {
1257		var loadingClose = false;
1258		fullLoding($("#container")); //로딩바 활성화
1259
1260		//첫번째 선택한 달
1261		var firstSelect = moment(obj.date1).format("YYYYMMDD");
1262
1263		//실제 선택되어야 하는 일자 목록
1264		var targetDateArr = new Array();
1265		var targetDateStr = "";
1266		for (var i = 0; i < jsNumber(thisPeriod); i++) {
1267			var tgtDate  = moment(firstSelect, "YYYYMMDD").add(moment.duration(i,'days')).format("YYYYMMDD");
1268			targetDateArr.push(tgtDate);
1269		}
1270
1271		//달력 초기화용 기준 월 (당월, 당월 + 1개월)
1272		var dateDef     = moment(new Date()).format("YYYYMMDD");
1273		var dateDefNext = moment(dateDef, "YYYYMMDD").add(moment.duration(1,'months')).format("YYYYMMDD");
1274		
1275		
1276		//연박일자 숙박가능 여부 확인
1277		$.ajax({
1278			url : "/front/reservation/selectChkContinueMonth"
1279			, method  : "post"
1280			, data    : {RATEDATE_STR : targetDateArr.join(","), SALESTYPE_SEQ : resBox.data("salestype_seq"), OFFER_TYPE_CD : itemData["OFFER_TYPE_CD"]}
1281			, success : function(data, stat, xhr) {
1282				if (stat == "success") {
1283					//로딩바 닫기 플래그 활성화
1284					loadingClose = true;
1285					var errMsg = "해당 일자는 선택할 수 없습니다.";
1286					//정상 처리시 : 연박상품 예약 가능
1287					if (data.result == "success") {
1288						var lastDate = moment(targetDateArr[targetDateArr.length-1], "YYYYMMDD").add(moment.duration(1,'days')).format("YYYYMMDD");
1289						resBox.find(".calendar").data('dateRangePicker').setDateRange(targetDateArr[0], lastDate);
1290						jsSetInfoToCart(resBox.find(".calendar"));
1291					//숙박가능일자가 HMS데이터와 일치하지 않을 경우
1292					} else if (data.result == "fail") {
1293						alert(replaceAll(errMsg +  " {0}박 전용상품입니다.", "{0}", thisPeriod));
1294						resBox.find(".calendar").data('dateRangePicker').clear();
1295						resBox.find(".calendar").data('dateRangePicker').resetMonthsView()
1296						resBox.find(".calendar").data('dateRangePicker').close();
1297
1298						//예약 가능 일자 목록 조회 (기본값 설정)
1299						$.ajax({
1300							url : "/front/reservation/detailLoadDate"
1301							, method : "post"
1302							, async : false
1303							, data : {SALESTYPE_SEQ : resBox.data("salestype_seq"), FROM_DATE : dateDef.substring(0,6), TO_DATE : dateDefNext.substring(0,6)}
1304							, success : function(data, stat, xhr) {
1305								if (stat == "success") {
1306									if (data.result != null) {
1307										if (data.result == "success") {
1308											//예약 가능 일자 표시용 배열에 PUSH
1309											var resAbleDateArr = new Array();
1310											for(var i=0; i < data.rs.length; i++) resAbleDateArr.push(data.rs[i].RATEDATE);
1311											resBox.find("div.inp.calendar").data("resAbleDateArr", resAbleDateArr);
1312										}
1313									} else {
1314										alert(data.message);
1315									}
1316								}
1317							}
1318						});
1319
1320					} else {
1321						alert(errMsg);
1322					}
1323				}
1324			}
1325		});
1326
1327		//JQuery EVENT 대기
1328		var drpTimer = setInterval(function() {
1329			//로딩바 닫기
1330			if (loadingClose) {
1331				//JQuery EVENT 대기시간 초기화
1332				clearInterval(drpTimer);
1333				fullLodingClose();
1334			}
1335		}, 100);
1336	}
1337}
1338
1339//DateRangePicker Open check
1340function jsCheckDrpOpened() {
1341	//달력이 열려있는 경우 달력을 닫는다.
1342	if(drpOpenFlag) {
1343		$("div.inp.calendar").each(function(index) {
1344			$(this).data('dateRangePicker').close();
1345		});
1346	}
1347}
1348
1349//DateRangePicker 입력값 변경 중 처리
1350function jsDrpChanging(obj,target) {
1351	if (target.indexOf("#TA") > -1) {
1352		if (moment(obj.date1).format("YYYYMMDD") == moment(obj.date2).format("YYYYMMDD")) {
1353			alert("체크인과 체크아웃은 동일한 날짜로 설정하실 수 없습니다.");
1354			$(target).data("dateRangePicker").clear();
1355		}
1356	}
1357}
1358
1359//DateRangePicker Change 후 Callback 함수 호출
1360function jsDrpChanged(eleObj) {
1361	// 날짜 팝업이 닽혀있을 경우만 Close Callback 호출
1362	if (!drpOpenFlag) {
1363		jsDrpClosed(eleObj);
1364	}
1365}
1366
1367//DateRangePicker 입력값 변동에 따른 Change 상태 변경
1368function jsDrpChangeFlag(flag) {
1369	drpChangeFlag = flag;
1370}
1371
1372//DateRangePicker Close 후 Callback 함수 호출
1373function jsDrpClosed(eleObj) {
1374	//싱글 달력이 아닐때만 닫혔을 때 우측메뉴 반영
1375	if (!eleObj.hasClass("single")) {
1376		//CHANGE EVENT가 있을 경우 Callback 함수 호출
1377		if (drpChangeFlag) {
1378			//우측메뉴에 반영
1379			if (jsSetInfoToCart(eleObj)) {
1380				//우측메뉴 정상 반영 시 날짜 변경여부 초기화
1381				drpChangeFlag = false;
1382			}
1383		}
1384	//싱글 달력인 경우
1385	} else {
1386		//적용이 안된 경우
1387		if (!drpApplyFlag) {
1388			//달력 입력값 복원
1389			jsRecoverCalendar(eleObj);
1390		}
1391	}
1392}
1393
1394//DateRangePicker setValue 이벤트 중 처리
1395function jsDrpSetValue(eleObj) {
1396
1397}
1398
1399//DateRangePicker 적용 버튼 클릭 후 이벤트 처리
1400function jsDrpApply(flag, eleObj) {
1401	drpApplyFlag = flag;
1402	if(drpApplyFlag) {
1403		jsSetInfoToCart(eleObj);
1404	}
1405}
1406
1407//*예약 관련 공통 Function (ui.js 연계) END*//
1408
1409
1410function getDateTime() {
1411	var dateTime = "";
1412	
1413	$.ajax({
1414		url : "/front/reservation/getDateTime"
1415		, method : "post"
1416		, async : false
1417		, success : function(data, stat, xhr) {
1418			if (stat == "success") {
1419				if (data.result == "success") {
1420					dateTime = data.today;
1421				}
1422			}
1423		}
1424	});
1425	return dateTime;
1426}
1427
1428//*예약 관련 공통 Function STEP1 START*//
1429//상품 담기(상품선택 화면)
1430function jsAddToCart(obj, step2Flag) {
1431	//예약하기 버튼
1432	var resBtn = $(obj);
1433	//상품Key(RP_SEQ)
1434	var tgtRpSeq = jsNumber(resBtn.attr("id"));
1435	//설정항목 유형
1436	var tgtOfferType = resBtn.data("offer_type");
1437	//설정항목 유형 상세코드
1438	var tgtOfferTypeCd = resBtn.data("offer_type_cd");
1439	//SBU
1440	var tgtSbuCd = resBtn.data("sbu_cd");
1441	//상품명(OfferName)
1442	var tgtOfferTitle = resBtn.data("rp_name");
1443
1444	//0.article 생성
1445	var article = $('<article>').addClass("productItem");
1446
1447	//공통 설정 항목 추가
1448	article.data({RP_SEQ : jsNumber(tgtRpSeq), OFFER_TYPE : tgtOfferType, OFFER_TYPE_CD : tgtOfferTypeCd});
1449
1450	//설정정보 생성 : 추가 설정 항목 (2019.08.22 > 날짜 검색 시 날짜 등록)
1451	var offerCont = new Object();
1452	//설정된 날짜(날짜 설정 시)
1453	var settedCal = "";
1454	//연박 상품 여부 (연박일정 초과 검색 시 알림)
1455	var isPeriodAlert = false;
1456	//호텔 검색인 경우, 검색 시 입력한 정보 추가 설정
1457	if (tgtOfferType == "TA") {
1458		var CHECK_IN;
1459		var CHECK_OUT;
1460		var A_COUNT;
1461		var B_COUNT;
1462		
1463		if ("Y" != resBtn.data("detail_yn")) {
1464			CHECK_IN = $srcHTL.CHECK_IN;
1465			CHECK_OUT = $srcHTL.CHECK_OUT;
1466			A_COUNT = $srcHTL.A_COUNT;
1467			B_COUNT = $srcHTL.C_COUNT;
1468		} else {
1469			CHECK_IN = sessionStorage.getItem("G_CHECK_IN");
1470			CHECK_OUT = sessionStorage.getItem("G_CHECK_OUT");
1471			A_COUNT = sessionStorage.getItem("G_A_COUNT");
1472			B_COUNT = sessionStorage.getItem("G_B_COUNT");
1473			let data = $("h2.offerNm").data();
1474			A_COUNT = A_COUNT > data["limit_adult"] ? 2 : A_COUNT;
1475			B_COUNT = B_COUNT > data["limit_child"] ? 0 : B_COUNT;
1476		}
1477			//숙박예정일이 정상적이면 날짜 설정
1478			if (isDateLen10(CHECK_IN) && isDateLen10(CHECK_OUT)) {
1479				//숙박예정일 확인(검색 시 설정한 날짜)
1480				var srcChkIn = moment(String(jsNumber(CHECK_IN))).format("YYYY.MM.DD");
1481				var srcChkOut = moment(String(jsNumber(CHECK_OUT))).format("YYYY.MM.DD");
1482				//공통 정보 설정
1483				offerCont.CHECK_IN = srcChkIn;
1484				//전체 숙박 예정일 확인
1485				var perday = jsCalcPerDay(srcChkIn, srcChkOut);
1486				//연박 상품 여부 확인(연박상품의 경우 초일 + 연박일 기본 설정)
1487				var period = jsNumber(resBtn.data("period"));
1488				if (period > 1) {
1489					offerCont.CHECK_OUT = moment(String(jsNumber(CHECK_IN))).add(period, 'days').format("YYYY.MM.DD");
1490					//전체 숙박일이 연박일보다 클 경우 알림 활성화
1491					if (perday > period) {
1492						isPeriodAlert = true;
1493						perday = jsCalcPerDay(offerCont.CHECK_IN, offerCont.CHECK_OUT);
1494					}
1495				} else {
1496					//연박상품이 아닐 경우, 검색 시 설정한 날짜에서 그대로 체크아웃 일자 등록
1497					offerCont.CHECK_OUT = srcChkOut;
1498				}
1499				offerCont.PER_DAY = perday;
1500				settedCal = offerCont.CHECK_IN + " ~ " + offerCont.CHECK_OUT;
1501			}
1502			//인원 설정
1503			var aCnt = jsNumber(A_COUNT); //성인
1504			var cCnt = jsNumber(B_COUNT); //어린이
1505			if(aCnt > 0) {
1506				offerCont.A_COUNT = aCnt;
1507			} else {
1508				delete offerCont.A_COUNT;
1509			}
1510			if(cCnt > 0) {
1511				offerCont.C_COUNT = cCnt;
1512			} else {
1513				delete offerCont.C_COUNT;
1514			}
1515	} else if ((tgtOfferType == "TC" || tgtOfferType == "TE") &&  "Y" != resBtn.data("detail_yn")) {
1516		//이용예정일이 정상적이면 날짜 설정
1517		if (isDateLen10($srcPKG.RES_DATE)) {
1518			var srcResDate = moment(String(jsNumber($srcPKG.RES_DATE))).format("YYYY.MM.DD");
1519			//이용 예정일 확인
1520			offerCont.RES_DATE = srcResDate;
1521			settedCal = offerCont.RES_DATE;
1522		}
1523	}
1524	//설정정보 설정
1525	article.data().OFFER_CONT = offerCont;
1526
1527	//1.상품 기본정보 설정
1528	var offerTitleDiv = $('<div>').addClass("productListH");
1529	var offerTitleH2 = $('<h2>').append($('<span>').text(tgtOfferTitle));
1530	var offerDelBtn = $('<a>').attr({"class":"btnDelete", onclick:"javascript:jsDelFromCart(this)"});
1531	offerTitleDiv.append(offerTitleH2).append(offerDelBtn);
1532
1533	//패키지 상품여부 확인
1534	var packageYn = "Y";
1535	//일반 상품여부 확인
1536	var commonYn = "N";
1537	//추가옵션여부 확인
1538	var optionYn = "Y";
1539
1540	//2.상품상세정보 설정
1541	var offerDtlDiv = $('<div>').addClass("productListC");
1542	var offerDtlPTxt1 = jsGetSettingText(tgtOfferType, tgtOfferTypeCd, 1); //세부 설정항목1
1543	var offerDtlPTxt2 = jsGetSettingText(tgtOfferType, tgtOfferTypeCd, 2); //세부 설정항목2
1544	var offerDtlPTxt3 = jsGetSettingText(tgtOfferType, tgtOfferTypeCd, 3); //세부 설정항목3
1545	var offerDtlPTxt4 = jsGetSettingText(tgtOfferType, tgtOfferTypeCd, 4); //세부 설정항목4
1546	
1547
1548	//인원수 설정
1549	var cntArr = new Array();
1550	//객실일 경우 (hotel paradise)
1551	if (tgtOfferType == "TA") {
1552		var aCnt = jsNumber(offerCont.A_COUNT);
1553		var cCnt = jsNumber(offerCont.C_COUNT);
1554		if (aCnt > 0) cntArr.push("성인 " + aCnt);
1555		if (cCnt > 0) cntArr.push("어린이 " + cCnt);
1556		if (cntArr.length > 0) {
1557			offerDtlPTxt2 = cntArr.join(" / ");
1558		}
1559	}
1560	//객실상품 라벨 : 호텔유형(TA)만 등록
1561	var h3Label = "";
1562	if (tgtOfferTypeCd == "000001") {
1563		h3Label = "HOTEL PARADISE";
1564	} else if (tgtOfferTypeCd == "000002") {
1565		h3Label = "ART PARADISO";
1566	}
1567	offerDtlDiv.append($('<h3>').text(h3Label));
1568
1569	//설정항목1 (2019.08.22 > 날짜 검색 시 날짜 등록)
1570	if ("" != offerDtlPTxt1) {
1571		if ("" != settedCal) {
1572			offerDtlPTxt1 = settedCal;
1573		}
1574		offerDtlDiv.append($('<p>').text(offerDtlPTxt1));
1575	}
1576	//설정항목2
1577	if ("" != offerDtlPTxt2) {
1578		offerDtlDiv.append($('<p>').text(offerDtlPTxt2));
1579	}
1580	
1581	//설정항목3
1582	if ("" != offerDtlPTxt3) {
1583		offerDtlDiv.append($('<p>').text(offerDtlPTxt3));
1584	}
1585	//설정항목4
1586	if ("" != offerDtlPTxt4) {
1587		offerDtlDiv.append($('<p>').text(offerDtlPTxt4));
1588	}
1589
1590	//상품 하나당 세부 금액
1591	var offerTotalAmtTit = "총액";
1592	var offerCasyBox = $('<div>').addClass("casyBox");
1593	var offerCasyDl = $('<dl>').append($('<dt>').text(offerTotalAmtTit)).append($('<dd>').text(jsToStringAmt(0)));
1594	offerDtlDiv.append(offerCasyBox.append(offerCasyDl));
1595
1596	//카트에 담기
1597	article = article.append(offerTitleDiv).append(offerDtlDiv);
1598	$('div.productListBox').append(article);
1599
1600	//우측메뉴 데이터 저장
1601	if (jsPreSaveJsonData()) {
1602		//요약영역 초기화면 설정
1603		jsSectionView("add");
1604
1605		if (isPeriodAlert) {
1606			var period = jsNumber(resBtn.data("period"));
1607			
1608			alert("해당 상품은 " + period + "박 전용상품으로\n"+ period + "박 구매 화면으로 이동됩니다.\n" + period + "박 이상 동일 상품 이용을 원하실 경우, 상품 추가 구매 바랍니다.");
1609			
1610		}
1611		if (window.dataLayer) {
1612			let is_searched_main = sessionStorage.getItem("G_LOAD_TY") == "Search" ? "Y" : "N";
1613			let is_searched_reserve = sessionStorage.getItem("G_LOAD_TY") == "search_tab" ? "Y" : "N";
1614			let facility_name = tgtOfferTypeCd == "000001" ? "호텔 파라다이스" : tgtOfferTypeCd == "000002" ? "아트 파라디소" : tgtSbuCd == "000004" ? "씨메르" : tgtSbuCd == "000006" ? "원더박스" : "";
1615			let item = {
1616				is_searched: sessionStorage.getItem("G_LOAD_TY") ? "Y" : "N",
1617				facility_name: facility_name,
1618				item_id: tgtRpSeq,
1619				item_name: tgtOfferTitle,
1620				item_category: tgtOfferType == "TA" ? "호텔" : "엔터테인먼트",
1621				item_category2: tgtOfferType == "TC" ? "티켓" : "패키지",
1622			};
1623			if (item["is_searched"] == "Y") {
1624				if (article.data("OFFER_CONT")["CHECK_IN"]) {
1625					item["check_in_date"] = article.data("OFFER_CONT")["CHECK_IN"];
1626				}
1627				if (article.data("OFFER_CONT")["CHECK_OUT"]) {
1628					item["check_out_date"] = article.data("OFFER_CONT")["CHECK_OUT"];
1629				}
1630				if (article.data("OFFER_CONT")["A_COUNT"]) {
1631					item["num_of_adult"] = article.data("OFFER_CONT")["A_COUNT"];
1632				}
1633				if (article.data("OFFER_CONT")["C_COUNT"]) {
1634					item["num_of_child"] = article.data("OFFER_CONT")["C_COUNT"];
1635				}
1636			}
1637			window.dataLayer.push({
1638				event: "add_to_cart",
1639				currency: "KRW",
1640				button_type: step2Flag == true ? "바로 예약하기" : "담기",
1641				items: [item]
1642			});
1643		}
1644		//이동이 필요한 경우는 페이지 이동
1645		if (step2Flag) {
1646			document.location.href = "/front/reservation/reservationStep2";
1647		}
1648	}
1649}
1650//뱃지 타입, 상품개수에 따른 담기 유효성 체크
1651function jsChkAddToCart(obj,step2Flag) {
1652	//console.log("jsChkAddToCart ::::: " + obj);
1653	
1654	//상품 KEY (HP)
1655	var rpSeq = jsNumber($(obj).attr("id"));
1656	//뱃지유형
1657	var badge = "";
1658	var type2 = $(obj).parent("div.cover").siblings("p.clearFixed").find("span.type2").data();
1659	if (!isNullOrEmpty(type2)) badge = toNotNull(type2.badge_type_cd);
1660
1661	//우측메뉴에 저장된 상품 목록
1662	var itemList  = $("div.productListBox").find("article.productItem");
1663	var jsonInfo = "";
1664	//상품목록에 담긴 상품이 1개이상이면 필요 Data를 추출
1665	if (itemList.length > 0) {
1666		var itemArray = new Array();
1667		for(var i=0; i<itemList.length; i++) {
1668			var itemInfo = $(itemList[i]);  //상품정보
1669			//Offer Object에 현재 설정된 상품정보를 Set
1670			itemInfo.data().OFFER_ORD  = i; //정렬순서
1671			itemArray.push(itemInfo.data());
1672		}
1673		var object = new Object();
1674			object.OFFER = itemArray;
1675		var jsonInfo = JSON.stringify(object);
1676	}
1677	
1678	var param = null;
1679	if ("Y" == $(obj).data("detail_yn")) {
1680		param = {BADGE_TYPE_CD : $(obj).data("badge2"), JSON_INFO : jsonInfo, RP_SEQ : rpSeq};
1681	} else {
1682		param = {BADGE_TYPE_CD : badge, JSON_INFO : jsonInfo, RP_SEQ : rpSeq};
1683	}
1684	
1685	var tabCd = $('.tapBox li.on').data('cd');
1686	var target = $('#srcCal' + tabCd);
1687	
1688
1689	if(tabCd == 'HTL' && target.find('input').eq(0).val().split('~').length == 2) {
1690		var dateArr = target.find('input').eq(0).val().split('~');
1691
1692		if(target.find('input').eq(0).val() != '') {
1693			//alert("in ::::: 01");
1694			param.ST_DT = dateArr[0].replaceAll(' ', '');
1695			param.ED_DT = dateArr[1].replaceAll(' ', '');
1696		} else {
1697			//alert("in ::::: 02");
1698			param.ST_DT = moment().format('YYYY.MM.DD');
1699			param.ED_DT = moment().add(1, 'day').format('YYYY.MM.DD');
1700		}
1701		
1702	}
1703	
1704	param.ST_DT = moment().format('YYYY.MM.DD');
1705	param.ED_DT = moment().add(1, 'day').format('YYYY.MM.DD');
1706	
1707	//console.log(param.ST_DT);
1708	//console.log(param.ED_DT);
1709
1710	//로딩바 비활성화 상태에서만
1711	if ($(".fullLoding").length == 0) {
1712		//로딩바 활성화
1713		fullLoding($("#container"));
1714	}
1715	//상품 담기 유효성 체크
1716	$.ajax({
1717		url : "/front/reservation/chkAddToCart"
1718		, method : "post"
1719		, data : param
1720		, success : function(data, stat, xhr) {
1721			if (stat == "success") {
1722				if (data.error == null) {
1723					//카드 담기
1724					if (data.chkAddToCart) {
1725						jsAddToCart(obj, step2Flag);
1726					} else if (data.errorMsg) {
1727						if(data.errorCode == 'RES_STEP1_T00001'){  //전화예약 일 경우
1728							jsTelPopOpen(data["resTelNum"]);
1729						} else {
1730							alert(data.errorMsg);
1731						}
1732						return false;
1733					}
1734				}
1735			}
1736		}
1737		, complete : function() {
1738			fullLodingClose();
1739		}
1740	});
1741}
1742
1743//2020-05-27
1744//OFFER 예약문의 기능 개발
1745function jsChkReservation(obj) {
1746	//팝업열기
1747	layerPopOpen("#INQUIRYPOP");
1748
1749	var offer_type_cd = $(obj).attr("data-offer_type_cd");
1750	var offer_type_nm = "";
1751	if ( offer_type_cd == "000001" ) {
1752		offer_type_nm = "Hotel Paradise";
1753
1754	} else if ( offer_type_cd == "000002" ) {
1755		offer_type_nm = "Hotel Art Paradiso";
1756
1757	} else if ( offer_type_cd == "000003" ) {
1758		offer_type_nm = "Art Space";
1759
1760	} else if ( offer_type_cd == "000004" ) {
1761		offer_type_nm = "Cimer";
1762
1763	} else if ( offer_type_cd == "000005" ) {
1764		offer_type_nm = "Chroma";
1765
1766	} else if ( offer_type_cd == "000006" ) {
1767		offer_type_nm = "Wonderbox";
1768
1769	}
1770	selectVal("#QUESTION", offer_type_nm);
1771	$("#VIEW_CD").selectVal("M");
1772}
1773//예약방법 보기 URL 호출(예약 불가 상품)
1774function jsResMethodView(url) {
1775	window.open(url,'_blank');
1776}
1777//TRANSFER : 유효성 체크 후 팝업 호출
1778function jsResTransferPage(obj) {
1779	$.ajax({
1780		url : "/front/reservation/chkReservationTransfer"
1781		, method : "post"
1782		, async : false
1783		, data : {RP_SEQ : jsNumber($(obj).attr("id"))}
1784		, success : function(data, stat, xhr) {
1785			if (stat == "success") {
1786				if (data.result == "success") {
1787					//해당 상품이 없는 경우
1788					if (data.resultCode == "EMPTY") {
1789
1790					//해당 상품이 있는 경우
1791					} else if (data.resultCode == "EXIST") {
1792						window.open("/front/reservation/reservationTransfer?RP_SEQ=" + jsNumber($(obj).attr("id")));
1793					//입력값이 불량한 경우
1794					} else if (data.resultCode == "INVALID") {
1795
1796					}
1797				}
1798			}
1799		}
1800	});
1801}
1802//*예약 관련 공통 Function STEP1 END  *//
1803
1804
1805//*예약 관련 공통 Function STEP2 START*//
1806//상품 설정(상품설정 화면 : 정상 반영 시 true)
1807function jsSetInfoToCart(eleObj) {
1808	var rtnFlag = true;
1809	var rtnChgFlag = false;
1810	var resBox = eleObj.closest("div.reservationBox");//예약상품 상세 ELEMENT
1811	var tgtIndex = $("div.reservationBox").index(resBox);//우측메뉴 Index(정렬순서)
1812	var itemInfo = $("article.productItem").eq(tgtIndex);//담은상품 요약정보 ELEMENT
1813	var offerType = itemInfo.data().OFFER_TYPE;
1814	var offerTypeCd = itemInfo.data().OFFER_TYPE_CD;
1815
1816	//상품설정정보가 하나도 없으면 , 상품설정정보 추가
1817	if (!("OFFER_CONT" in itemInfo.data())) itemInfo.data("OFFER_CONT",{});
1818
1819	var pTag = itemInfo.find("div.productListC").find("p");
1820	var offerCont = itemInfo.data().OFFER_CONT;
1821
1822	//호텔상품
1823	if (offerType == "TA") {
1824		if(eleObj.hasClass("calendar")) {
1825			//우측메뉴 상품 기본정보 P태그 Index (1. 체크인&체크아웃)
1826			var pIndex = 1;
1827			//입력값 변경확인용 Param
1828			var param  = jsGetParamObject(eleObj, "CALENDAR");
1829			//객실 선택 초기화가 필요한 경우(값이 변경되었을 때)
1830			rtnFlag = jsIsChange(resBox, param);
1831			if (rtnFlag) {
1832				if (param.CHECK_IN.length > 0 && param.CHECK_OUT.length > 0) {
1833					//날짜가 설정되었으면 설정값 우측메뉴에 설정
1834					pTag.eq(pIndex-1).text(param.STAY_TERM.join(" ~ "));
1835					offerCont.CHECK_IN = param.CHECK_IN;
1836					offerCont.CHECK_OUT = param.CHECK_OUT;
1837					offerCont.PER_DAY = jsCalcPerDay(param.CHECK_IN, param.CHECK_OUT);
1838
1839					//인원 설정 기본 값 확인
1840					let titArr = new Array();
1841					if (offerCont.A_COUNT > 0) titArr.push("성인" + " " + offerCont.A_COUNT);
1842					if (offerCont.C_COUNT > 0) titArr.push("어린이" + " " + offerCont.C_COUNT);
1843					if (offerCont.B_COUNT > 0) titArr.push("유아" + " " + offerCont.B_COUNT);
1844
1845					//설정된 인원 수에 따른 문구 변경
1846					if (titArr.length == 0) {
1847						let aCount = jsNumber(resBox.find(".selectChoice").find("select.selectBox.aCnt").val());
1848						let cCount = jsNumber(resBox.find(".selectChoice").find("select.selectBox.cCnt").val());
1849						let bCount = jsNumber(resBox.find(".selectChoice").find("select.selectBox.bCnt").val());
1850						if (aCount > 0) titArr.push("성인" + " " + aCount);
1851						if (cCount > 0) titArr.push("어린이" + " " + cCount);
1852						if (bCount > 0) titArr.push("유아" + " " + bCount);
1853					}
1854					if (titArr.length > 0) {
1855						pTag.eq(pIndex).text(titArr.join(" / "));
1856					}
1857				} else {
1858					//초기화되었으면 우측메뉴에 기본값 설정
1859					pTag.eq(pIndex-1).text(jsGetSettingText(offerType, offerTypeCd, pIndex));
1860					delete offerCont.CHECK_IN;
1861					delete offerCont.CHECK_OUT;
1862					delete offerCont.PER_DAY;
1863				}
1864				//객실 상품 옵션 조회
1865				jsMappingAllList(resBox, true);
1866			}
1867		} else if (eleObj.hasClass("ui-select-option")) {
1868			//객실 인원 선택
1869			if (eleObj.closest("div.selectChoice").length) {
1870				//우측메뉴 상품 기본정보 P태그 Index (2. 인원)
1871				let pIndex = 2;
1872				//입력값 변경확인용 Param
1873				let param = jsGetParamObject(eleObj, "STAYPEOPLE");
1874				//입력값 변동 확인
1875				rtnFlag = jsIsChange(resBox, param);
1876				if (rtnFlag) {
1877					//유효한 인원정보를 저장
1878					let targetObj = param.TARGET.substring(0,1).toUpperCase() + "_COUNT";
1879					//인원 변경
1880					offerCont[targetObj] = param.CHG_VAL;
1881
1882					//문구 정보
1883					let titArr = new Array();
1884					if (offerCont.A_COUNT > 0) titArr.push("성인" + " " + offerCont.A_COUNT);
1885					if (offerCont.C_COUNT > 0) titArr.push("어린이" + " " + offerCont.C_COUNT);
1886					if (offerCont.B_COUNT > 0) titArr.push("유아" + " " + offerCont.B_COUNT);
1887
1888					//설정된 인원 수에 따른 문구 변경
1889					if (titArr.length > 0) {
1890						pTag.eq(pIndex-1).text(titArr.join(" / "));
1891					} else {
1892						pTag.eq(pIndex-1).text(jsGetSettingText(offerType, offerTypeCd, pIndex));
1893					}
1894
1895					//객실선택이 가능한 상태면 추가옵션에 대한 설정
1896					if (resBox.find("div.roomSelectBox").length > 0) {
1897						//조식 설정
1898						jsBreakfastView(eleObj, true);
1899						//현재 등록된 옵션이 있으면 초기화
1900						jsInitAddOption(resBox, "ADDPEOPLE");
1901						//옵션 등록
1902						jsAddOptionToCart(eleObj, jsGetParamObject(resBox, "ADDPEOPLE"));
1903					}
1904				}
1905			//옵션 변경(조식)
1906			} else if (eleObj.closest("div.optionSelectBox").length) {
1907				var key = eleObj.closest("div.optionSelectBox").data("key");
1908				if (!isNullOrEmpty(key)) {
1909					var optParam = jsGetParamObject(eleObj, key);
1910					rtnFlag = jsIsChange(resBox, optParam);
1911					if (rtnFlag) {
1912						//현재 등록된 옵션이 있으면 초기화
1913						jsInitAddOption(resBox, key);
1914						//옵션 등록
1915						jsAddOptionToCart(eleObj, optParam);
1916					}
1917				//Key가 없으면
1918				} else {
1919					//어메니티 대상 확인
1920					let raSeq = eleObj.closest("div.selectBox").prev("select").data("ra_seq");
1921					//어메니티 선택 수량
1922					let tgtCnt = eleObj.data("value");
1923					//어메니티 재고 수량 확인
1924					rtnFlag = jsSelectAmenityAvail(resBox, raSeq, tgtCnt);
1925					//어메니티 설정 값 확인
1926					if (!("ADD_OPT" in  offerCont)) {
1927						//Amenity 기본값 설정
1928						offerCont["ADD_OPT"] = {"AMENITY":{}};
1929					} else {
1930						if (!("AMENITY" in offerCont["ADD_OPT"])) {
1931							offerCont["ADD_OPT"]["AMENITY"] = new Object();
1932						}
1933					}
1934					//재고가 있으면 Data set
1935					if (rtnFlag) {
1936						//수량 설정
1937						if (tgtCnt > 0) {
1938							offerCont["ADD_OPT"]["AMENITY"][raSeq] = tgtCnt;
1939						} else {
1940							delete offerCont["ADD_OPT"]["AMENITY"][raSeq];
1941						}
1942					} else {
1943						delete offerCont["ADD_OPT"]["AMENITY"][raSeq];
1944					}
1945				}
1946			}
1947		} else if (eleObj.is("input:radio") && eleObj.closest("div.roomSelectBox").length) {
1948			//객실 정보(객실,침대)
1949			var param = jsGetParamObject(eleObj, "ROOMINFO");
1950				rtnFlag = jsIsChange(resBox, param);
1951			if (rtnFlag) {
1952				//우측메뉴 상품 기본정보 P태그 Index (3. 객실)
1953				var pIndex = 4;
1954				//객실정보 저장
1955				offerCont.RR_ROOM_CATEGORY = param.RR_ROOM_CATEGORY;
1956				offerCont.RR_ROOM_TYPE     = param.RR_ROOM_TYPE;
1957				offerCont.RR_SEQ           = param.RR_SEQ;
1958				offerCont.RMTYPE           = param.RMTYPE;
1959				//문구 설정
1960				pTag.eq(pIndex-1).text(param.RR_ROOM_TYPE_NM);
1961
1962				//우측메뉴 상품 기본정보 P태그 Index (4. 침대)
1963				pIndex = 5;
1964				//침대정보 저장
1965				offerCont.RR_BED_TYPE = param.RR_BED_TYPE;
1966				//문구 설정
1967				pTag.eq(pIndex-1).text(param.RR_BED_TYPE_NM);
1968
1969				//상품 금액정보 저장
1970				jsCalcProdAmt(resBox, itemInfo, offerCont, param);
1971
1972				//인원추가 관련 파리미터
1973				var optParam = jsGetParamObject(resBox, "ADDPEOPLE");
1974				//현재 등록된 인원추가가 있으면 초기화
1975				jsInitAddOption(resBox, "ADDPEOPLE");
1976				//인원추가 발생시 옵션 추가
1977				jsAddOptionToCart(eleObj, optParam);
1978			}
1979		//2021.12.09 : 객실 상품 옵션 선택 (NEW)
1980		} else if (eleObj.hasClass("prdOpt") && !isNullOrEmpty(eleObj.data("salestype_seq"))) {
1981			var pIndex = 3;
1982			//상품 정보 저장
1983			offerCont.SALESTYPE_SEQ = eleObj.data("salestype_seq");
1984			offerCont.MAPPING_CD = eleObj.find("h2.optTyNm").data("mapping_cd");
1985			//문구 설정
1986			pTag.eq(pIndex-1).text(eleObj.find("h2.optTyNm").text());
1987
1988			//객실 선택 초기화
1989			delete offerCont.RR_ROOM_CATEGORY;
1990			delete offerCont.RR_ROOM_TYPE;
1991			delete offerCont.RR_SEQ;
1992			delete offerCont.RMTYPE;
1993			delete offerCont.RR_BED_TYPE;
1994			//객실문구 초기화
1995			pIndex = 4;
1996			pTag.eq(pIndex-1).text(jsGetSettingText(offerType, offerTypeCd, pIndex-1));
1997			pIndex = 5;
1998			pTag.eq(pIndex-1).text(jsGetSettingText(offerType, offerTypeCd, pIndex-1));
1999
2000			//상품 금액정보 저장
2001			jsCalcProdAmt(resBox, itemInfo, offerCont, {});
2002			//추가옵션 초기화
2003			jsInitAddOption(resBox);
2004		}
2005	//패키지 상품1. 아트스페이스 입장권
2006	} else if ("TB" == offerType) {
2007		//1. 입장권 수 설정
2008		var TGTCLS   = eleObj.closest("div.ui-select-wrapper").find("select").data("gpkg_cls");
2009		var TGTCNT   = eleObj.data("value");
2010		var cntTot   = 0;
2011		var tkCntArr = new Array();
2012		var param    = new Object();
2013		offerCont.PLUCOD = eleObj.closest("div.ui-select-wrapper").find("select").data("plucod");
2014		eleObj.closest("div.selectChoice").find("select").each(function(index){
2015			var PLUCOD  = $(this).data("plucod");
2016			var GPKGCLS = $(this).data("gpkg_cls");
2017			var A1_AMT  = $(this).data("a1_amt");
2018			//개별 금액정보
2019			eval("offerCont." + GPKGCLS + "PRC=" + A1_AMT);
2020			//개별 수량정보
2021			if (GPKGCLS == TGTCLS) {
2022				TGTCNT  = !isNullOrEmpty(TGTCNT) ? TGTCNT : 0;
2023				eval("offerCont." + GPKGCLS + "CNT=" + TGTCNT);
2024			} else {
2025				var OTH = $(this).next("div.selectBox").find("a.ui-select-option.selection");
2026				var CNT  = !isNullOrEmpty(OTH.data("value")) ? OTH.data("value") : 0;
2027				eval("offerCont." + GPKGCLS + "CNT=" + CNT);
2028			}
2029			var cnt = eval("offerCont." + GPKGCLS + "CNT");
2030			cntTot  = cntTot + (isNaN(cnt) ? 0 : cnt);
2031			if (cnt > 0) {
2032				param.A1_AMT = (param.A1_AMT || 0) + (A1_AMT * cnt);
2033				tkCntArr.push(jsGetPeopleLabel(GPKGCLS) + cnt);
2034			}
2035		});
2036		if (cntTot > 0) {
2037			pTag.eq(0).text(tkCntArr.join(" / "));
2038		} else {
2039			pTag.eq(0).text(jsGetSettingText(offerType, offerTypeCd, 1));
2040		}
2041		//상품 금액정보 저장
2042		jsCalcProdAmt(resBox, itemInfo, offerCont, param);
2043	//패키지 상품2. CIMER,CHROMA,WONDERBOX 입장권
2044	} else if ("TC" == offerType) {
2045
2046	//영업장 상품(크로마 테이블, 선베드, 카바나)
2047	} else if ("TD" == offerType) {
2048		//CALENDAR 계열
2049		if(eleObj.hasClass("calendar single")) {
2050			//1. 날짜
2051			pIndex = 1;
2052			//입력값 변경확인용 Param
2053			var param  = jsGetParamObject(eleObj, "CALENDAR");
2054			//날짜 변경이 확인 되면 날짜변경
2055			rtnFlag = jsIsChange(resBox, param);
2056			if (rtnFlag) {
2057				//상품 금액정보 초기화
2058				param.A1_AMT = 0;
2059				jsCalcProdAmt(resBox, itemInfo, offerCont, param);
2060
2061				//유효한 데이터인 경우 새로 설정
2062				if (!isNullOrEmpty(param.RES_DATE)) {
2063					//날짜 정보 설정
2064					offerCont.RES_DATE = param.RES_DATE;
2065					//날짜 문구 설정
2066					pTag.eq(pIndex-1).text(param.RES_DATE);
2067
2068					//DEPT_CD 설정 : 크로마는 변경값 영업장 코드가 개별임으로 제외
2069					if (offerTypeCd != "000009") {
2070						//상품 설정정보 초기화 (구역 정보)
2071						offerCont.DEPT_CD = toNotNull(resBox.find("div.tapBox").data().dept_cd);
2072						jsGetAvailableArea(resBox, param);
2073						//시간 문구 설정 >
2074						var timeTxt = offerTypeCd == "000007" ? "4" : "6"
2075						timeTxt = timeTxt + jsGetSettingText(offerType, offerTypeCd, 2);
2076						pTag.eq(pIndex).text(timeTxt);
2077					} else {
2078						//크로마 테이블의 경우 날짜별 구역 가격정보 입력
2079						param.KEY = "AREA";
2080						jsGetAvailableArea(resBox, param);
2081					}
2082				}
2083			} else {
2084				//변경이 없는 경우 달력 복원
2085				jsRecoverCalendar(eleObj);
2086			}
2087		//SELECT BOX 계열
2088		} else if (eleObj.hasClass("ui-select-option")) {
2089			//층 설정인 경우
2090			if (eleObj.closest("div.selectBox").hasClass("avFloor")) {
2091				//위치 선택 SELECT BOX 생성 ()
2092				var tableGrpArr = (eleObj.data("value" )).split(",");
2093				var rackRateArr = (eleObj.data("value2")).split(",");
2094				var textArr = new Array();
2095				for (var i = 0; i < tableGrpArr.length; i++) {
2096					textArr.push(tableGrpArr[i] + "번");
2097				}
2098
2099				var selOpt = {
2100						 VAL  : tableGrpArr
2101						,VAL2 : rackRateArr
2102						,TXT  : textArr
2103						,TGT  : ["avArea"]
2104						,SEL  : [""]
2105						,ABL  : [true]
2106						,STT  : ["선택"]
2107					};
2108
2109				var choice  = eleObj.closest("div.section").find("dl.positionSelect");
2110				jsRemakeSelectUi(choice, selOpt);
2111
2112			//구역 설정의 경우
2113			} else if (eleObj.closest("div.selectBox").hasClass("avArea")) {
2114				pIndex = 3;
2115				//변경 가능 여부 확인
2116				var param = jsGetParamObject(eleObj, "AREA");
2117				rtnFlag = jsIsChange(resBox, param);
2118				if (rtnFlag) {
2119					//전체 구역 확인
2120					var section    = new Array();
2121					var sectionNm  = new Array();
2122					var A1_AMT     = 0;
2123					var divSection = resBox.find("div.section")
2124					divSection.each(function(i){
2125						var thisVal = $(this).find("div.selectBox.avArea").find(".selection").data("value");    //TABLENO
2126						var thisAmt = $(this).find("div.selectBox.avArea").find(".selection").data("value2");   //RACKRATE
2127						//변경될 값
2128						if (i == param.TGT_IDX) {
2129							if (!isNullOrEmpty(param.TABLENO)){
2130								section.push(param.TABLENO);
2131								sectionNm.push(param.TABLENM);
2132							}
2133							$(this).find(":text").eq(0).val(param.TABLENM);
2134							$(this).find(":text").eq(1).val(param.TABLEAMT);
2135							A1_AMT = A1_AMT + jsNumber(param.TABLEAMT);
2136						//현재 등록된 값
2137						} else if (!isNullOrEmpty(thisVal)) {
2138							section.push(pad(thisVal, 3));
2139							var floor   = jsNumber($(this).find("div.selectBox.avFloor").find(".selection").text());
2140							var floorNm = floor + "층" + thisVal + "번";
2141							sectionNm.push(floorNm);
2142							$(this).find(":text").eq(0).val(floorNm);
2143							$(this).find(":text").eq(1).val(jsToStringAmt(thisAmt));
2144							A1_AMT = A1_AMT + jsNumber(thisAmt);
2145						}
2146					});
2147					param.A1_AMT = A1_AMT;
2148					offerCont.TABLENO = section.join(",");
2149					//구역 문구 설정
2150					if (!isNullOrEmpty(offerCont.TABLENO)) {
2151						offerCont.TABLENM = sectionNm.join(" / ");
2152						pTag.eq(pIndex-1).text(sectionNm.join(" / "));
2153					} else {
2154						offerCont.TABLENM = sectionNm.join(" / ");
2155						pTag.eq(pIndex-1).text(jsGetSettingText(offerType, offerTypeCd, pIndex));
2156					}
2157					//상품 금액정보 저장
2158					jsCalcProdAmt(resBox, itemInfo, offerCont, param);
2159				}
2160			}
2161		}
2162	//패키지 상품3. 비투숙 패키지
2163	} else if ("TE" == offerType) {
2164
2165	}
2166
2167	//버튼 전환
2168	jsSectionView("mod");
2169
2170	//초기로딩시점과 로그인 콜 시점이 아니면,
2171	if (!initPageFlag && !loginCallFlag) {
2172		//입력값 변동이 유효할 때 JSON DATA 저장 (정상변경 OR 보정변경)
2173		if (rtnFlag || rtnChgFlag) {
2174			
2175			let step = "";
2176			if (eleObj.closest(".calendar").length > 0) {
2177				step = "체크인 & 체크아웃";
2178			} else if (eleObj.closest(".selectBox.aCnt").length > 0) {
2179				step = "성인 수";
2180			} else if (eleObj.closest(".selectBox.cCnt").length > 0) {
2181				step = "어린이 수";
2182			} else if (eleObj.closest(".selectBox.bCnt").length > 0) {
2183				step = "유아 수";
2184			} else if (eleObj.closest(".roomInfo").length > 0) {
2185				step = "객실 선택";
2186			} else if (eleObj.closest(".amenity").length > 0) {
2187				step = "객실 대여품";
2188			}
2189			if (window.dataLayer && step) {
2190				window.dataLayer.push({
2191					event: "add_payment_info",
2192					currency: "KRW",
2193					step: step,
2194					items: [{
2195						facility_name: offerTypeCd == "000001" ? "호텔 파라다이스" : "호텔 아트파라디소",
2196						quantity: 1,
2197						item_id: itemInfo.data().RP_SEQ,
2198						item_name: itemInfo.data().OFFER_NAME,
2199						item_category: "호텔",
2200						item_category2: "패키지"
2201					}]
2202				});
2203			}
2204			jsPreSaveJsonData();
2205		}
2206	}
2207
2208	return rtnFlag;
2209}
2210
2211//영업장 시간, 층/위치 초기화
2212function jsInitAvailable(resBox, target) {
2213	var index   = $("div.reservationBox").index(resBox);
2214	var summary = $("article.productItem").eq(index);
2215	var pTag    = summary.find("div.productListC > p");
2216
2217	//전체 문구 초기화
2218	if (isNullOrEmpty(target)) {
2219		pTag.each(function(idx) {pTag.eq(idx).text(jsGetSettingText(summary.data().OFFER_TYPE, summary.data().OFFER_TYPE_CD, idx+1));});
2220	//시간, 층/위치 문구 초기화 (CIMER)
2221	} else if ("CALENDAR" == target){
2222		pTag.eq(1).text(jsGetSettingText(summary.data().OFFER_TYPE, summary.data().OFFER_TYPE_CD, 2));
2223		pTag.eq(2).text(jsGetSettingText(summary.data().OFFER_TYPE, summary.data().OFFER_TYPE_CD, 3));
2224	//층/위치 문구 초기화 (CHROMA)
2225	} else if ("AREA" == target){
2226		pTag.eq(1).text(jsGetSettingText(summary.data().OFFER_TYPE, summary.data().OFFER_TYPE_CD, 2));
2227	}
2228
2229	//ELEMENT 초기화(층/위치) > 셀렉트박스(크로마 테이블은 SKIP)
2230	if ("000009" != summary.data().OFFER_TYPE_CD) {
2231		//데이터 초기화
2232		if (!isNullOrEmpty(summary.data().OFFER_CONT)) {
2233			//구역 초기화가 아닐 경우만 시간 초기화
2234			if ("AREA" != target) {
2235				//delete summary.data().OFFER_CONT.FR_TIME;
2236				//delete summary.data().OFFER_CONT.TO_TIME;
2237				delete summary.data().OFFER_CONT.MEALTIME;
2238				delete summary.data().OFFER_CONT.TABLENO;
2239			} else {
2240				summary.data().OFFER_CONT = {RES_DATE : summary.data().OFFER_CONT.RES_DATE};
2241			}
2242		}
2243
2244		var selectBox = $("div.reservationBox").eq(index).find("div.selectBox.avArea");
2245		selectBox.each(function(i){
2246			if (i == selectBox.length-1) {
2247				//선택지 초기화
2248				$(this).find("ul").empty();
2249				//선택사항 초기화
2250				$(this).find("a.ui-select-trigger").text("");
2251				//SELECT BOX 비활성화
2252				$(this).addClass("disabled");
2253			} else {
2254				$(this).closest("div.section").remove();
2255			}
2256		});
2257	} else {
2258		//초기 로딩시에는 데이터 초기화를 SKIP
2259		if (!initPageFlag) summary.data().OFFER_CONT = {RES_DATE : summary.data().OFFER_CONT.RES_DATE};
2260	}
2261
2262	//INPUT
2263	$("div.reservationBox").eq(index).find("div.section").find(":text").val("");
2264}
2265
2266//입장권 수량변동
2267function jsChangeTktCnt(resBox, eleObj, pTag, pIndex, itemInfo) {
2268	//변동 엘리먼트가 없는 경우
2269	if (eleObj == null) {
2270		var selectBox = resBox.find("div.cntTypeC").eq(0).find("div.selectBox");
2271		selectBox.each(function(){
2272			if (isNullOrEmpty(eleObj) && !$(this).hasClass("disabled")) {
2273				eleObj = $(this).find("a.ui-select-option").eq(0);
2274			}
2275		});
2276		//활성화된 값이 하나도 없으면 selectbox 전체를 파라미터로 설정
2277		if (isNullOrEmpty(eleObj)) eleObj =selectBox.eq(0);
2278	}
2279	//오퍼 설정정보 확인
2280	var offerCont = itemInfo.data().OFFER_CONT;
2281	var param = jsGetParamObject(eleObj, "ITEMINFO");
2282	var tkCntArr = new Array();
2283	var cntTot = 0;
2284
2285	//설정정보 저장
2286	param.RES_DATE = offerCont.RES_DATE
2287	for (var i=0; i<param.CNT_NM_ARR.length; i++) {
2288		var cntNm = param.CNT_NM_ARR[i];
2289		var prcNm = param.CNT_NM_ARR[i].replace("CNT","PRC")
2290		eval("offerCont." + cntNm + "=param." + cntNm);
2291		eval("offerCont." + prcNm + "=param." + prcNm);
2292		var cnt = eval("param."+cntNm+" || 0");
2293		if (cnt > 0) tkCntArr.push(jsGetPeopleLabel(cntNm.substring(0,1)) + " " + cnt);
2294		cntTot = cntTot + (isNaN(cnt) ? 0 : cnt);
2295	}
2296	
2297	console.log(pIndex);
2298	if (cntTot > 0) {
2299		pTag.eq(pIndex-1).text(tkCntArr.join(" / "));
2300	} else {
2301		pTag.eq(pIndex-1).text(jsGetSettingText(itemInfo.data().OFFER_TYPE, itemInfo.data().OFFER_TYPE_CD, pIndex-1));
2302	}
2303
2304	//금액 계산정보 저장
2305	jsCalcProdAmt(resBox, itemInfo, offerCont, param);
2306}
2307
2308//상품 금액정보 저장
2309function jsCalcProdAmt(resBox, itemInfo, offerCont, param) {
2310	//금액정보 최초 설정시 금액정보obj 생성
2311	if (!("PRICE_INFO" in offerCont)) offerCont.PRICE_INFO = new Object();
2312
2313	//상품 금액정보 설정
2314	if (!("A1_AMT" in param) || isNullOrEmpty(param.A1_AMT)) {
2315		offerCont.PRICE_INFO.TOTAL_AMT = 0;
2316	} else {
2317		offerCont.PRICE_INFO.TOTAL_AMT = param.A1_AMT;
2318	}
2319
2320	//총액 TEXT
2321	itemInfo.find("div.productListC > div.casyBox").find("dd.totalAmt").text(jsToStringAmt(param.A1_AMT));
2322
2323	//금액 ELEMENT 초기화
2324	var dlList = itemInfo.find("div.productListC > div.casyBox > dl");
2325	dlList.not(dlList.eq(0)).remove();
2326	
2327}
2328
2329//객실, 조식 할인정보 취득
2330function jsSelectMbrGradeBenefits(idx, listType) {
2331	var data = $('article.productItem').eq(idx).data();
2332	var gradeData;
2333	if ("OFFER_CONT" in data) {
2334		if (data.OFFER_TYPE == "TA") {
2335			var fromDate   = toNotNull(data.OFFER_CONT.CHECK_IN);
2336			var toDate     = toNotNull(data.OFFER_CONT.CHECK_OUT);
2337			var deptCdList = new Array();
2338			if (data.OFFER_TYPE_CD == "000001") {
2339				deptCdList = ["021"];
2340			} else {
2341				deptCdList = ["202"];
2342			}
2343			var submitData = {FROM_DATE:fromDate, TO_DATE:toDate, DEPT_CD_LIST:deptCdList};
2344			var gradeList  = selectMbrGradeBenefits(submitData);
2345			gradeData  = jsGetGradeData(gradeList, deptCdList);
2346		}
2347	}
2348
2349	return listType ? gradeList : gradeData;
2350}
2351
2352//할인율 취득 : CONTROLLER
2353function selectMbrGradeBenefits(submitData) {
2354	var gradeList;
2355
2356	//data 전송
2357	$.ajax({
2358		url : "/front/reservation/selectMbrGradeBenefits"
2359		, method : "post"
2360		, async : false
2361		, data : submitData
2362		, success : function(data, stat, xhr) {
2363			if (stat == "success") {
2364				if (data.result != null) {
2365					if (data.result == "success") {
2366						gradeList = data.rs;
2367						//gradeList = deduplicationMbrGradeBenefits(data.rs);
2368					}
2369				} else {
2370					alert(data.message);
2371				}
2372			}
2373		}
2374	});
2375
2376	return gradeList;
2377}
2378
2379//등급별 할인정보 취득
2380function jsGetGradeData(gradeList, deptCdArr) {
2381	var gradeData = new Object();
2382
2383	if(!isNullOrEmpty(gradeList)) {
2384		for (var i=0; i<deptCdArr.length; i++) {
2385			for (var j=0; j<gradeList.length; j++) {
2386				if (deptCdArr[i] == gradeList[j].DEPT_CD) {
2387					//001 객실 > 추후 066으로 변경 예정
2388					if ("066" == gradeList[j].DEPT_CD) {
2389						gradeData.rm_dc        = gradeList[j].DC_RATE
2390						gradeData.rm_mbr_grade = gradeList[j].MBER_DC_CODE_NM;
2391					//호텔 조식 > 021 고정
2392					} else if ("021" == gradeList[j].DEPT_CD) {
2393						gradeData.bf_dc        = gradeList[j].DC_RATE
2394						gradeData.bf_mbr_grade = gradeList[j].MBER_DC_CODE_NM;
2395					//아트파라디소 조식
2396					} else if ("202" == gradeList[j].DEPT_CD) {
2397						gradeData.bf_dc        = gradeList[j].DC_RATE
2398						gradeData.bf_mbr_grade = gradeList[j].MBER_DC_CODE_NM;
2399					}
2400				}
2401			}
2402		}
2403	}
2404	return gradeData;
2405}
2406
2407//Object Param 생성
2408function jsGetParamObject(eleObj, key) {
2409	var object = new Object();
2410	if ("CALENDAR" == key) {
2411		//더블유형 : TYPE_A : 호텔유형
2412		if (!eleObj.hasClass("single")) {
2413			//체크인 & 체크아웃 기간
2414			var stayTerm     = toNotNull(eleObj.find(":text").val()).replace(/(\s*)/g,"").split("~");
2415			object.STAY_TERM = stayTerm;
2416			object.CHECK_IN  = toNotNull(stayTerm[0]); //체크인
2417			object.CHECK_OUT = toNotNull(stayTerm[1]); //체크아웃
2418		//싱글유형 : TICKET
2419		} else {
2420			var summaryIdx  = $("div.reservationBox").index(eleObj.closest("div.reservationBox"));
2421			var summaryData = $("article.productItem").eq(summaryIdx).data();
2422			object.RES_DATE = eleObj.find(":text").val();
2423		}
2424	} else if ("STAYPEOPLE" == key || "BREAKFAST" == key) {
2425		let tgtClass = toNotNull(eleObj.closest("div.selectBox").attr("class")).split(" ")[1];
2426		if (!isNullOrEmpty(tgtClass)) {
2427			//선택지 리스트(SELECT BOX)
2428			let selectBoxList;
2429			//지정된 요소(클래스 명)
2430			if ("STAYPEOPLE" == key) {
2431				selectBoxList = eleObj.closest("div.selectChoice").find("div.selectBox");
2432			} else if ("BREAKFAST" == key) {
2433				selectBoxList = eleObj.closest("div.optionSelectBox[data-key='BREAKFAST']").find("div.selectBox");
2434			}
2435			object.TARGET = tgtClass;
2436			object.CHG_VAL = eleObj.data("value");
2437			selectBoxList.each(function(index) {
2438				let thisVal = $(this).find("a.ui-select-option.selection").data("value") || 0;  //undefine 주의
2439				if ($(this).hasClass(tgtClass)) {
2440					object[object.TARGET] = thisVal;
2441
2442				} else {
2443					let otherClass = toNotNull($(this).attr("class")).split(" ")[1];
2444					if (!isNullOrEmpty(otherClass)) object[otherClass] = thisVal;
2445
2446				}
2447			});
2448		}
2449	} else if ("ROOMINFO" == key) {
2450		var roomInfo = eleObj.closest("div.radioBox").data();
2451		object = roomInfo;
2452		if ($("section.reservationSection").data("rm_dc") > 0)
2453		object.DC_RATE = $("section.reservationSection").data("rm_dc");
2454	} else if ("ADDPEOPLE" == key) {
2455		object = eleObj.data();
2456		object.ITEM_IDX = eleObj.index();
2457	} else if ("TICKET" == key) {
2458		object.PLUCOD = eleObj.data("value");
2459		if (!isNullOrEmpty(eleObj.data("value"))) {
2460			object.TICKET_NAME = eleObj.text();
2461		} else {
2462			object.TICKET_NAME = "";
2463		}
2464	} else if ("ITEMINFO" == key) {
2465		//인원 설정 영역 확인
2466		var dlList = eleObj.closest("div.clearFixed").find("dl.type2");;
2467		//인원구분 영역 타겟팅 클래스
2468		var tgtClass = eleObj.closest("dl.type2").find("dt").attr("class");
2469		//전체 합산 금액
2470		var itemAmt = 0;
2471		//인원 구분 KEY 배열
2472		var cntNmArr = new Array();
2473		dlList.each(function(index) {
2474			if ($(this).find("dt").attr("class").indexOf("_Price") > -1) {
2475				var unitPrice = jsNumber($(this).find("dt").data().ITEM_PRICE);
2476				var dtClass   = $(this).find("dt").attr("class");
2477				if (tgtClass == dtClass) {
2478					cntNmArr.push(tgtClass.substring(0,1) + "CNT");
2479					eval("object."+tgtClass.substring(0,1)+"CNT="+jsNumber(eleObj.data("value")));
2480					itemAmt = itemAmt + (jsNumber(eleObj.data("value")) * unitPrice);
2481				} else {
2482					var selection    = $(this).find("a.ui-select-option.selection");
2483					var selectionVal = (selection.length > 0) ? jsNumber(selection.data("value")) : 0;
2484					cntNmArr.push(dtClass.substring(0,1) + "CNT");
2485					eval("object."+dtClass.substring(0,1)+"CNT="+jsNumber(selectionVal));
2486					itemAmt = itemAmt + (selectionVal * unitPrice);
2487				}
2488				eval("object."+dtClass.substring(0,1)+"PRC="+unitPrice);
2489			}
2490		});
2491		object.CNT_NM_ARR = cntNmArr;
2492		object.A1_AMT     = itemAmt;
2493	} else if ("AREA" == key) {
2494		var resBox  = eleObj.closest("div.reservationBox");
2495		var section = resBox.find("div.section");
2496		var floor   = jsNumber(eleObj.closest("div.section").find("div.selectBox.avFloor").find(".selection").text());
2497		object.TGT_IDX  = section.index(eleObj.closest("div.section"));
2498		object.TABLENM  = isNullOrEmpty(eleObj.data("value")) ? "" : floor + "층 " + eleObj.text();
2499		object.TABLENO  = isNullOrEmpty(eleObj.data("value")) ? "" : pad(eleObj.data("value"),3);
2500		object.TABLEAMT = isNullOrEmpty(eleObj.data("value")) ? "" : jsToStringAmt(eleObj.data("value2"));
2501	} else if ("TICKET_CNT" == key) {
2502		var dlList   = eleObj.closest("div.clearFixed").find("dl.type2");
2503		var tgtClass = eleObj.closest("dl.type2").find("dt").attr("class");
2504		var otherSum = 0;
2505		dlList.each(function(index) {
2506			if ($(this).find("dt").attr("class").indexOf("_Price") > -1) {
2507				var unitPrice = jsNumber($(this).find("dt").data().ITEM_PRICE);
2508				var dtClass   = $(this).find("dt").attr("class");
2509				if (tgtClass != dtClass) {
2510					var selection    = $(this).find("a.ui-select-option.selection");
2511					var selectionVal = (selection.length > 0) ? selection.data("value") : 0;
2512					otherSum = otherSum + selectionVal;
2513				}
2514			}
2515		});
2516		object.TGT_TKT_CNT = jsNumber(eleObj.data("value"));
2517		object.OTH_TKT_CNT = otherSum;
2518	}
2519
2520	object.KEY = key;
2521
2522	return object;
2523}
2524
2525//입력값 변동 확인
2526function jsIsChange(resBox, param) {
2527	// 비로그인 -> 로그인 전환시는 값 변동 체크를 하지 않음
2528	if (loginCallFlag) return true;
2529
2530	//변경가능한 값인지 여부
2531	let isChange = initPageFlag;
2532	//예약상품 요약목록
2533	let summaryIdx = $("div.reservationBox").index(resBox);
2534	let summary = $("article.productItem").eq(summaryIdx);
2535	//입력값 변경여부 확인
2536	if (param.KEY == "CALENDAR") { //달력
2537		//객실
2538		if (summary.data().OFFER_TYPE == "TA") {
2539			//투숙기간(체크인, 체크아웃)
2540			var checkIn  = toNotNull(summary.data().OFFER_CONT.CHECK_IN);
2541			var checkOut = toNotNull(summary.data().OFFER_CONT.CHECK_OUT);
2542			if (checkIn  != param.CHECK_IN || checkOut != param.CHECK_OUT) {
2543				isChange = true;
2544			}
2545		//패키지(입장권, 비투숙)
2546		} else if (summary.data().OFFER_TYPE == "TC" || summary.data().OFFER_TYPE == "TE") {
2547			//유효성 체크 : 날짜 선택 여부
2548			var dateTime = getDateTime();
2549			var nServerTime = jsNumber(toNotNull(dateTime).substring(8,14)); 
2550			//날짜가 선택되었는지 확인
2551			if (isNullOrEmpty(param.RES_DATE)){
2552				alert("날짜를 선택해주세요.");
2553			//1.서버시간 취득되고, 2.서버일자 기준으로 당일, 3.당일예약 허용시간보다 서버시간이 크면
2554			} else if (!isNullOrEmpty(dateTime)
2555					&& toNotNull(dateTime).substring(0,8) == replaceAll(param.RES_DATE,".","")
2556					&& nServerTime > jsGetResEnableTime(summary.data().OFFER_TYPE_CD)) {
2557				alert("당일상품은 구매하실 수 없습니다.");
2558				//초기 로딩시 업데이트 카운트 증가
2559				if (initPageFlag) $initUpdateCnt++;
2560				isChange = true;
2561			//나머지 유효성 정보 확인
2562			} else {
2563				//유효성 체크 : 패키지 상품 유효성 확인
2564				param.TGT_IDX = summaryIdx;
2565				if (summary.data().OFFER_TYPE == "TC") {
2566					param.RP_SEQ = summary.data().RP_SEQ;
2567					param.PLUCOD = summary.data().OFFER_CONT.PLUCOD;
2568					//유효한 티켓 정보 취득(2019.08.26)
2569					jsGetAvailableFlag(param);
2570				} else {
2571					//유효한 비투숙 패키지 유효정보 취득
2572					jsGetAvailableInfo(param);
2573				}
2574				//패키지 상품 대하여는 변경 즉시 반영(2019.08.26)
2575				isChange = true;
2576			}
2577		//영업장
2578		} else if (summary.data().OFFER_TYPE == "TD") {
2579			//유효성 체크 : 유효 정보 취득
2580			param.RP_SEQ  = summary.data().RP_SEQ;
2581			param.TGT_IDX = summaryIdx;
2582			// 공통 체크
2583			if (isNullOrEmpty(param.RES_DATE)){
2584				alert("날짜를 선택해주세요.");
2585			} else if (moment(new Date()).format("YYYYMMDD") == replaceAll(param.RES_DATE,".","")) {
2586				alert("당일상품은 구매하실 수 없습니다.");
2587			//시메르
2588			} else if (summary.data().OFFER_TYPE_CD == "000007" || summary.data().OFFER_TYPE_CD == "000008") {
2589				isChange = true;
2590			//크로마
2591			} else if (summary.data().OFFER_TYPE_CD == "000009") {
2592				isChange = true;
2593			}
2594		}
2595	} else if (param.KEY == "STAYPEOPLE") {
2596		// 투숙인원 > 변경되지 않은 나머지 인원의 총 합
2597		let remainSum = param.aCnt + param.cCnt + param.bCnt - param[param.TARGET];
2598
2599		//최대 투숙 가능 기준인원 초과 시
2600		if (remainSum + param.CHG_VAL > resBox.data()["std_max_cnt"]) {
2601			alert("객실은 최대 {0}인까지 수용 가능합니다.".replace("{0}", resBox.data()["std_max_cnt"]));
2602			isChange = false;
2603		} else if (param[param.TARGET] != param.CHG_VAL) {
2604			isChange = true;
2605		}
2606	} else if (param.KEY == "ROOMINFO") {
2607		var rrSeq = toNotNull(summary.data().OFFER_CONT.RR_SEQ);
2608		if (rrSeq != param.RR_SEQ) {
2609			isChange = true;
2610		}
2611		if (loginCallFlag) isChange = true;
2612	} else if (param.KEY == "BREAKFAST") {
2613		if (param[param.TARGET] != param.CHG_VAL) {
2614			isChange = true;
2615		}
2616	} else if (param.KEY == "TICKET"){
2617		/*
2618		var plucod = toNotNull(summary.data().OFFER_CONT.PLUCOD);
2619		if (plucod != param.PLUCOD) {
2620			isChange = true;
2621		}
2622		*/
2623		//입장권의 경우는 변경 시 무조건 저장(입장권 변경 시 마다 달력을 새로고침 할 필요가 있음, 2019.08.26)
2624		isChange = true;
2625	} else if (param.KEY == "AREA") {
2626		//현재 선택 값
2627		var currVal    = "";
2628		var section    = new Array();
2629		var divSection = resBox.find("div.section");
2630		divSection.each(function(i){
2631			var val  = $(this).find("div.selectBox.avArea").find(".selection").data("value");
2632			var pVal = !isNullOrEmpty(val) ? pad(val, 3) : val;
2633			if (i == param.TGT_IDX) currVal = pVal;
2634			if (pVal.length > 0)    section.push(pVal);
2635		});
2636		//전체 구역 확인
2637		var tbArr = new Array();
2638		if ("TABLENO" in summary.data().OFFER_CONT && summary.data().OFFER_CONT.TABLENO.length > 0) {
2639			tbArr = summary.data().OFFER_CONT.TABLENO.split(",");
2640		}
2641		//현재 화면의 모든 값의 수가 등록된 데이터의 수와 동일한지 확인
2642		if (tbArr.length != section.length) {
2643			//다르면 적용
2644			isChange = true;
2645		//동일하면 추가체크
2646		} else {
2647			if (currVal != param.TABLENO) {
2648				//등록된 데이터의 배열에 변경할 값이 포함되어 있는지 확인
2649				if ($.inArray(param.TABLENO, tbArr) == -1) {
2650					//포함되어있지 않으면, 변경 가능
2651					isChange = true;
2652				} else if (!isNullOrEmpty(param.TABLENO)) {
2653					alert("동일한 위치에 대하여 예약 1건당 1개씩만 구매 가능합니다.");
2654				}
2655			}
2656		}
2657	} else if (param.KEY == "TICKET_CNT") {
2658		if (param.TGT_TKT_CNT + param.OTH_TKT_CNT > 10){
2659			alert("예약가능 수량을 초과하였습니다.");
2660		} else {
2661			isChange = true;
2662		}
2663	}
2664
2665	return isChange;
2666}
2667
2668//금액계산(상품별 총액 - 정가)
2669function jsCalcListAmt(offerCont, amt) {
2670	return (amt || 0) * jsCalcPerDay(offerCont.CHECK_IN, offerCont.CHECK_OUT);
2671}
2672
2673
2674//최종 금액 표기
2675function jsDrawFinalAmt(OFFER_PRICE) {
2676	//설정된 금액 확인
2677	var finalAmtInfo = new Object();
2678
2679	if (!isNullOrEmpty(OFFER_PRICE)) {
2680		finalAmtInfo.TOTAL_AMT = OFFER_PRICE.TOTAL_AMT;
2681		finalAmtInfo.MBR_DISC  = OFFER_PRICE.MBR_DISC;
2682		finalAmtInfo.MBR_POINT = OFFER_PRICE.MBR_POINT;
2683		finalAmtInfo.DISC_AMT  = OFFER_PRICE.DISC_AMT;
2684	} else {
2685		finalAmtInfo.TOTAL_AMT = 0;
2686		finalAmtInfo.MBR_DISC  = 0;
2687		finalAmtInfo.MBR_POINT = 0;
2688		finalAmtInfo.DISC_AMT  = 0;
2689	}
2690
2691	$("div.productTotal.amt").data(finalAmtInfo);
2692
2693	//금액이 하나라도 설정되면 총액,할인액,포인트,최종금액 설정
2694	if (finalAmtInfo.TOTAL_AMT > 0) {
2695		$("#f_total").text(jsToStringAmt(finalAmtInfo.TOTAL_AMT));
2696		if (finalAmtInfo.MBR_DISC > 0) {
2697			$("#f_discount").text("- " + jsToStringAmt(finalAmtInfo.MBR_DISC));
2698		} else {
2699			$("#f_discount").text(jsToStringAmt(finalAmtInfo.MBR_DISC));
2700		}
2701		if (finalAmtInfo.MBR_POINT > 0 ) {
2702			$("#f_point").text( "- " + jsToStringAmt(finalAmtInfo.MBR_POINT, "P"));
2703			$("#USE_POINT").val(jsToStringAmt(finalAmtInfo.MBR_POINT, "P"))
2704		} else {
2705			$("#f_point").text(" P");
2706			$("#USE_POINT").val("");
2707		}
2708		$("#f_final").find("span").text(addCommaStr(finalAmtInfo.DISC_AMT.toString()));
2709	//설정된 금액이 없으면 총액,할인액,포인트,최종금액 초기화
2710	} else {
2711		$("#f_total").text(jsToStringAmt(0));
2712		$("#f_discount").text(jsToStringAmt(0));
2713		$("#f_point").text(jsToStringAmt(0));
2714		$("#USE_POINT").val("");
2715		$("#f_final").find("span").text("");
2716	}
2717}
2718
2719
2720function jsSelectGetPriceInfo() {
2721	$.ajax({
2722		url : "/front/reservation/selectGetPriceInfo"
2723		, method : "post"
2724		, async : false
2725		, success : function(data, stat, xhr) {
2726			if (stat == "success") {
2727				var offerPrice = new Object();
2728				if (data.result == "success") {
2729					offerPrice.TOTAL_AMT = data.TOTAL_AMT;
2730					offerPrice.MBR_DISC = data.MBR_DISC;
2731					offerPrice.MBR_POINT = data.MBR_POINT;
2732					offerPrice.DISC_AMT = data.DISC_AMT;
2733					offerPrice.DC = { AMT: this.dcAmtArr, GRADE : this.gradeList };
2734					jsDrawFinalAmt(offerPrice);
2735				} else if (data.result == "skip") { 
2736					var offerPrice = $("div.productTotal.amt").data();
2737					if ($("div.productTotal.amt").data() != null) {
2738						if ($("div.productTotal.amt").MBR_POINT > 0) {  
2739							alert("정상적인 접근경로가 아닙니다.");
2740							document.location.href = "/front/reservation";
2741						}
2742					}
2743				} else {
2744					alert("정상적인 접근경로가 아닙니다.");
2745					document.location.href = "/front/reservation";
2746				}
2747			}
2748		}
2749	});
2750}
2751
2752//포인트 사용
2753function jsPointChange(val, allFlag){
2754	var procFinish = false;
2755
2756	jsCpnParamSet();
2757
2758	//data 전송
2759	$.ajax({
2760		url : "/front/reservation/preSaveJsonPoint"
2761		, method : "post"
2762		, async : false
2763		, data : {POINT : val, ALL_FLAG : allFlag, CPN_JSON : $("#form1").find("input[name=CPN_JSON]").val()}
2764		, success : function(data, stat, xhr) {
2765			//JSON Return 확인
2766			var OFFER_ALL = new Object();
2767			var OFFER = new Array();
2768			var OFFER_PRICE = new Object();
2769			if (!isNullOrEmpty(data.OFFER)) {
2770				OFFER_ALL = JSON.parse(data.OFFER);
2771				OFFER = OFFER_ALL["OFFER"]
2772				OFFER_PRICE = OFFER_ALL["OFFER_PRICE"];
2773			}
2774			//사용가능 포인트 확인
2775			var available_pnt = jsNumber(data.available_pnt);
2776			if (available_pnt > 0 && $("p.myPoint").find("span").length > 0) {
2777				var org = jsNumber($("p.myPoint").find("span").text())
2778				//사용가능 포인트가 변경되었으면 해당 포인트를 사용가능한 포인트로 변경
2779				if (org != available_pnt) {
2780					$("p.myPoint").find("span").text("총" + addCommaStr(String(available_pnt)) + "P");
2781				}
2782			}
2783			//result 분기
2784			if (data.result == "success") {
2785				//전체 금액 설정
2786				jsDrawFinalAmt(OFFER_PRICE, OFFER);
2787				procFinish = true;
2788			} else if (data.result == "dayoverpnt") {
2789				alert("일일 사용 허용 포인트를 초과하셨습니다." + "\n(" + "일일 사용 허용 포인트 : 3,000,000 P" + ")");
2790				//전체 금액 설정(포인트 초기화)
2791				jsDrawFinalAmt(OFFER_PRICE);
2792			} else if (data.result == "overpnt") {
2793				alert("사용가능한 포인트가 부족 합니다.");
2794				//전체 금액 설정(포인트 초기화)
2795				jsDrawFinalAmt(OFFER_PRICE);
2796			} else if (data.result == "onlypnt") {
2797				alert("전액 포인트 결제는 불가합니다.");
2798				document.location.href = "/front/reservation";
2799			} else if (data.result == "nonepnt") {
2800				alert("사용 가능하신 포인트가 없습니다.");
2801				document.location.href = "/front/reservation";
2802			} else if (data.result == "sessionInvalid") {
2803				alert("정상적인 접근경로가 아닙니다.");
2804				document.location.href = "/front/reservation";
2805			} else if (data.result == "timeout") {
2806				document.location.href = "/front/reservation";
2807			} else if (data.result == "limitPnt") {
2808				var msg = "포인트 결제 불가 상품이 포함되어 있습니다.";
2809				if (data.maxUsablePnt > 0)  {
2810					addMsg = "해당 결제 건에서 |PTV| P 이상 사용하실 수 없습니다.";
2811					var arr = addMsg.split("|");
2812					addMsg = "";
2813					for (var i = 0; i < arr.length; i++) {
2814						if (arr[i] == "PTV") {
2815							addMsg += addCommaStr(String(data.maxUsablePnt)); 
2816						} else {
2817							addMsg += arr[i];
2818						}
2819					}
2820					msg += ("\n(" + addMsg + ")");
2821				}
2822				alert(msg);
2823				//전체 금액 설정(포인트 초기화)
2824				jsDrawFinalAmt(OFFER_PRICE);
2825			}
2826			//쿠폰이 있으면, 쿠폰 재적용
2827			if (typeof jsOffCpnElement == 'function') jsOffCpnElement();
2828			if (typeof jsAplyCpnElement == 'function') jsAplyCpnElement();
2829			jsDiscountView();
2830		}
2831	});
2832
2833	return procFinish;
2834}
2835
2836//옵션 초기화 버튼 클릭
2837function jsClickInitAddOption(obj) {
2838	var summary = $(obj).closest("article.productItem");
2839	var summIdx = $("article.productItem").index(summary);
2840	var resBox  = $("div.reservationBox").eq(summIdx);
2841	var dataKey = $(obj).closest("div.optionListWrap").data("key");
2842
2843	//옵션 초기화  >> 추후 분기 처리시 : if ("BREAKFAST" == dataKey)
2844	var optBox = resBox.find("div.optionSelectBox");
2845	var optSel = optBox.find("div.selectBox");
2846
2847	//모든 select box 선택값 초기화
2848	optSel.each(function(i){
2849		//select box 첫번째 선택지 (LI)
2850		var optLi = $(this).find("ul.ui-select-options").find("li");
2851		//선택지 초기화(remove selection class)
2852		optLi.each(function(j){
2853			$(this).find("a").removeClass("selection");
2854		});
2855		//기본값 설정
2856		optLi.eq(0).find("a").addClass("selection");
2857		//선택값 TEXT 문구 초기화
2858		$(this).find("a.ui-select-trigger").text(optLi.eq(0).find("a").text());
2859	});
2860
2861	//추가옵션 초기화
2862	jsInitAddOption(resBox, dataKey);
2863
2864	//설정값 저장
2865	jsPreSaveJsonData();
2866}
2867
2868//상품설정(상품설정화면 : 옵션추가)  :: 확인필요
2869function jsAddOptionToCart(eleObj, optParam) {
2870	//이벤트가 발생할 HTML요소에서 취득할 수 있는 정보
2871	var resBox   = eleObj.closest("div.reservationBox");
2872	var option   = eleObj.closest("div.optionSelectBox");
2873	var itemInfo = $("article.productItem").eq(resBox.index());
2874
2875	//요약화면에 추가할 HTML요소 생성
2876	var optionListDiv = $('<div>').addClass("optionListWrap");
2877	var optionContDl  = $('<dl>').addClass("cont").append($('<dt>')).append($('<dd>'));
2878	var optionCasyBox = $('<div>').addClass("casyBox").append($('<dl>').append($('<dt>')).append($('<dd>')));
2879	optionListDiv.append(optionContDl).append(optionCasyBox);
2880
2881	//변경될 옵션에 대한 지정 key값 : 특정옵션이 있으면 해당옵션, 없으면 인원추가 관련
2882	var key = optParam.KEY;
2883	//추가옵션 구분자 속성 지정
2884	optionListDiv.attr("data-key", key);
2885	//상품상세정보
2886	var offerCont = itemInfo.data().OFFER_CONT;
2887	//옵션정보가 등록되어있지 않은 경우 신규 옵션정보 등록
2888	if (!("ADD_OPT" in offerCont)) offerCont.ADD_OPT = new Object();
2889	if (!(key in offerCont.ADD_OPT)) offerCont["ADD_OPT"][key] = new Object();
2890
2891	//옵션별 분류
2892	if("BREAKFAST" == key) { //조식
2893		//조식의 경우 옵션 삭제 버튼 추가
2894		var btnOptionClose = $("<a>").attr({onclick:"javascript:jsClickInitAddOption(this);", "class":"btnOptionClose"})
2895		optionCasyBox.prepend(btnOptionClose);
2896		//유효한 옵션 설정 정보를 저장
2897		$.each(optParam, function(key, value) {
2898			if (key.indexOf("Day") > -1 || key.indexOf("Cnt") > -1) {
2899				if (key == optParam.TARGET) {
2900					eval("offerCont.ADD_OPT.BREAKFAST." + optParam.TARGET.toUpperCase() + "=" + optParam.CHG_VAL);
2901				} else {
2902					eval("offerCont.ADD_OPT.BREAKFAST." + key.toUpperCase() + "=" + value);
2903				}
2904			}
2905		});
2906
2907		//조식 키값
2908		if (offerCont.ADD_OPT.BREAKFAST.ADAY > 0) offerCont.ADD_OPT.BREAKFAST.A_OPTKEY = resBox.data().adult_bf_roseq
2909		if (offerCont.ADD_OPT.BREAKFAST.CDAY > 0) offerCont.ADD_OPT.BREAKFAST.C_OPTKEY = resBox.data().child_bf_roseq
2910
2911		//조식 기본금액정보
2912		var listPriceInfo = {
2913			 adult : resBox.data().adult_bf_rpo_amt || 0
2914			,child : resBox.data().child_bf_rpo_amt || 0
2915		};
2916		//조식 금액 계산
2917		var breakfastAmtInfo  = jsCalcBreakfastAmt(itemInfo, listPriceInfo);
2918		//조식 금액정보 저장
2919		offerCont.ADD_OPT.BREAKFAST.PRICE_INFO = breakfastAmtInfo;
2920
2921		//조식 신청금액이 발생할 경우 조식영역 생성
2922		if (breakfastAmtInfo.TOTAL_AMT > 0) {
2923			optionListDiv.find("dl.cont > dt").text("조식추가");
2924			var pTxtArr = jsBreakfastTxt(offerCont.ADD_OPT.BREAKFAST);
2925			for (var i=0; i<pTxtArr.length; i++) {
2926				optionListDiv.find("dl.cont > dd").append($("<p>").text(pTxtArr[i]));
2927			}
2928			optionListDiv.find("div.casyBox").find("dl > dt").text("총액");
2929			optionListDiv.find("div.casyBox").find("dl > dd").addClass("totalAmt").text(jsToStringAmt(breakfastAmtInfo.TOTAL_AMT));
2930
2931			//할인정보가 있으면 해당 할인 설정
2932			if("MBR_DISC" in breakfastAmtInfo && breakfastAmtInfo.MBR_DISC > 0) {
2933				var dlList      = optionListDiv.find("div.casyBox").find("dl")
2934				dlList.not(dlList.eq(0)).remove();
2935
2936				var mbrDisc     = $("<dl>").append($("<dt>").text("멤버십 할인")).append($("<dd>").addClass("txtRed mbrDisc").text("- "+jsToStringAmt(breakfastAmtInfo.MBR_DISC)+" "));
2937				var discAmt     = $("<dl>").addClass("total").append($("<dt>").text("할인 후 금액")).append($("<dd>").text(jsToStringAmt(breakfastAmtInfo.DISC_AMT)));
2938				var gradeName   = capitalizeStr(breakfastAmtInfo.MBR_NAME);
2939				var gradeGubun  = breakfastAmtInfo.MBR_GUBUN;
2940				var mbrGradeArr = new Array();
2941				mbrGradeArr.push("PARADISE");
2942				mbrGradeArr.push(gradeGubun);
2943				mbrGradeArr.push(gradeName);
2944				var mbrBadge    = $("<span>").addClass("mark " + gradeName).attr("data-tooltip", "markBf" + itemInfo.index()).text(gradeGubun.substring(0,1));
2945				var mbrTooltip  = $("<div>").addClass("tooltipBox").attr("id", "markBf" + itemInfo.index()).append($("<p>").text(mbrGradeArr.join(" ")));
2946				mbrDisc.find("dd.txtRed.mbrDisc").append(mbrBadge).append(mbrTooltip);
2947
2948				optionListDiv.find("div.casyBox").append(mbrDisc).append(discAmt);
2949			}
2950			itemInfo.find("div.productListC").append(optionListDiv);
2951			tooltip();
2952		}
2953	} else if ("ADDPEOPLE" == key) {  //인원추가
2954		//인원 추가비용 발생정보 취득
2955		var addPeoAmtInfo = jsCalcAddPeoAmt(optParam);
2956		//인원 추가비용이 발생하면 추가옵션으로 등록
2957		resBox.find("div.roomSelectBox").find("div.cautionBox").remove();
2958		if(addPeoAmtInfo.addPeoAmtPerDay > 0) {
2959			//인원추가정보 설정(ELEMENT)
2960			var addPeoAmtStr = jsAddPeoAmtStr(addPeoAmtInfo);
2961
2962			//객실이 선택된 경우 추가인원 옵션 설정
2963			if ("RR_SEQ" in offerCont) {
2964				//인원추가정보 저장
2965				offerCont.ADD_OPT.ADDPEOPLE.ACNT      = addPeoAmtInfo.ACNT;
2966				offerCont.ADD_OPT.ADDPEOPLE.A_OPTKEY  = addPeoAmtInfo.A_OPTKEY;
2967				offerCont.ADD_OPT.ADDPEOPLE.CCNT      = addPeoAmtInfo.CCNT;
2968				offerCont.ADD_OPT.ADDPEOPLE.C_OPTKEY  = addPeoAmtInfo.C_OPTKEY;
2969				offerCont.ADD_OPT.ADDPEOPLE.TOTAL_AMT = addPeoAmtInfo.addPeoAmtTotal;
2970
2971				optionListDiv.find("dl.cont > dt").text("인원추가");
2972				optionListDiv.find("dl.cont > dd").append($("<p>").text(addPeoAmtStr));
2973				optionListDiv.find("div.casyBox").find("dl > dt").text("금액");
2974				optionListDiv.find("div.casyBox").find("dl > dd").addClass("bold totalAmt").text(jsToStringAmt(addPeoAmtInfo.addPeoAmtTotal));
2975				itemInfo.find("div.productListC > div.casyBox").after(optionListDiv);
2976			}
2977
2978			//객실 세부내용 조정(인원추가비용)
2979			var cautionTxt = addPeoAmtStr + " +"+jsToStringAmt(addPeoAmtInfo.addPeoAmtPerDay) + "/박"
2980			var caution = $("<div>").addClass("cautionBox").append($("<p>").addClass("singleText").text(cautionTxt));
2981			resBox.find("div.roomSelectBox").append(caution);
2982		}
2983	}
2984
2985	return true;
2986}
2987
2988//날짜 지정 시 티켓 정보 확인 (유효성 불량으로 인해 보정변경이 되어야할 경우 return true)
2989function jsGetAvailableFlag(param) {
2990	//보정변경 여부
2991	var rtnChgFlag = false;
2992	//선택된 오퍼 순번
2993	var idx = param.TGT_IDX;
2994	//선택된 장바구니 정보 확인
2995	var offer = $("article.productItem").eq(idx).data();
2996	//선택된 OFFER의 상세 정보
2997	param.OFFER_TYPE_CD = offer.OFFER_TYPE_CD;
2998	param.OFFER_TYPE = offer.OFFER_TYPE;
2999
3000	//취득 가능한 입장권 정보 취득
3001	$.ajax({
3002		url : "/front/reservation/getTicketInfo"
3003		, method : "post"
3004		, data : param
3005		, async : false
3006		, success : function(data, stat, xhr) {
3007			//예약 설정 정보 엘리먼트
3008			var resBox = $("div.reservationBox").eq(idx);
3009			//예약 설정 정보 선택지 엘리먼트 (날짜, 입장권, 인원구분)
3010			var choice = resBox.find("div.selectChoice");
3011			//정상 취득 시
3012			if (data.result == "success") {
3013				//최초 지정 상품 확인
3014				var defaultArr = new Array();
3015				//매진 상품 목록
3016				var soldOutArr = new Array();
3017				//매진 상품 문구
3018				var soldOutTxt = "";
3019				//매진 ELEM
3020				var soldOutEm = $("<em>").addClass("colorEmp pl5");
3021				//취득된 PKG 정보
3022				var pkgInfo = data.PKG_INFO;
3023				//입장권 선택지 영역
3024				var pkgElem = choice.find("div.tk" + param.OFFER_TYPE_CD + param.TGT_IDX);
3025				var pkgHidn = choice.find("select.tk" + param.OFFER_TYPE_CD + param.TGT_IDX);
3026				for (var i = 0; i < pkgInfo.length; i++) {
3027					var pkg = pkgElem.find("a[data-value=" + pkgInfo[i].PLUCOD + "]");
3028					//수량에 따른 입장권 선택지 활성화 여부 결정
3029					if (pkgInfo[i].QTY > 0 && pkgInfo[i].AMT > 0) {
3030						pkg.closest("li").removeClass("disabled");
3031						pkgElem.find("input[type=text]").prop('disabled', false);
3032						defaultArr.push(jsNumber(pkgInfo[i].PLUCOD));
3033					} else {
3034						//입장권 선택지 영역이 있으면 선택지 비활성화 + 매진 상품 목록에 추가
3035						if (pkgHidn.length > 0) {
3036							pkg.closest("li").addClass("disabled");
3037							soldOutArr.push(pkg.text());
3038						//입장권 선택지가 없는 경우, 비활성화는 PROPERTY로 설정 + 매진 상품 목록에 추가
3039						} else {
3040							pkgElem.find("input[type=text]").prop('disabled', true);
3041							soldOutArr.push(pkgElem.siblings("input[type=hidden]").data("ticket_name"));
3042						}
3043					}
3044				}
3045
3046				//매진상품 문구 초기화
3047				choice.find("em.colorEmp.pl5").remove();
3048				//비활성 영역이 있으면 해제
3049				pkgElem.removeClass("disabled");
3050
3051				//매진이 된 상품이 하나라도 있는지 확인
3052				if (soldOutArr.length > 0) {
3053					//매진이 있는지 확인1. 전체 매진
3054					if (soldOutArr.length == pkgInfo.length) {
3055						//매핑된 입장권이 복수
3056						if (soldOutArr.length > 1) {
3057							soldOutTxt = pkgInfo[0].RP_NAME;
3058						//매핑된 입장권이 단수
3059						} else {
3060							soldOutTxt = soldOutArr[0];
3061						}
3062					//매진이 있는지 확인3. 일부 매진
3063					} else {
3064						//매핑된 입장권이 복수
3065						if (soldOutArr.length > 1) {
3066							soldOutTxt = soldOutArr.join("/");
3067						//매핑된 입장권이 단수
3068						} else {
3069							soldOutTxt = soldOutArr[0];
3070						}
3071					}
3072					//매진 문구 삽입
3073					soldOutEm.text("해당 일자 " + soldOutTxt + " 매진");
3074					pkgElem.closest("dl.type2").find("div.ttWrap").after(soldOutEm);
3075				}
3076
3077				//입장권 인원 설정 관련 정보
3078				var infoOrg = data.TICKET_INFO
3079				var info = new Array();
3080
3081				//활성화 된 입장권 종류 갯수 확인 (1개인 경우 자동 설정)
3082				if (defaultArr.length == 1) {
3083					//입장권 선택지 선택여부 초기화
3084					pkgElem.find("a.ui-select-option").removeClass("selection");
3085					//1개만 있는 경우, 해당 입장권으로 기본값 설정
3086					offer.OFFER_CONT.PLUCOD = jsNumber(defaultArr[0]);
3087					//선택지 선택 클래스 추가
3088					pkgElem.find("a[data-value=" + offer.OFFER_CONT.PLUCOD + "]").addClass("selection");
3089					//선택지 선택 텍스트 활성화
3090					pkgElem.find("a.ui-select-trigger").text(pkgElem.find("a[data-value=" + offer.OFFER_CONT.PLUCOD + "]").text());
3091					//하단에 설정할 인원구분 기준 추출
3092					$.each(infoOrg, function(i, v) {
3093						if (v.PLUCOD == defaultArr[0]) {
3094							info.push(infoOrg[i]);
3095						}
3096					});
3097				//활성화 된 입장권 종류 갯수 확인 (1개초과인 경우, 기본값 설정)
3098				} else if (defaultArr.length > 1) {
3099					//입장권 지정이 있으면 하단 구분 활성화 : 지정된 입장권이 있는지 확인
3100					if ("PLUCOD" in offer.OFFER_CONT && !isNullOrEmpty(offer.OFFER_CONT.PLUCOD)) {
3101						//지정된 입장권이 매진이 아닌지 확인
3102						if ($.inArray(jsNumber(offer.OFFER_CONT.PLUCOD), defaultArr) > -1) {
3103							//입장권 선택지 선택여부 초기화
3104							pkgElem.find("a.ui-select-option").removeClass("selection");
3105							//매진이 아닌 경우 해당 입장권을 기본 값으로 설정
3106							pkgElem.find("a[data-value=" + offer.OFFER_CONT.PLUCOD + "]").addClass("selection");
3107							//선택지 선택 텍스트 활성화
3108							pkgElem.find("a.ui-select-trigger").text(pkgElem.find("a[data-value=" + offer.OFFER_CONT.PLUCOD + "]").text());
3109							//하단에 설정할 인원구분 기준 추출
3110							for (var i = 0; i < infoOrg.length; i++) {
3111								//지정된 입장권(PLUCOD) 기준으로 추출
3112								if (infoOrg[i].PLUCOD == offer.OFFER_CONT.PLUCOD) {
3113									info.push(infoOrg[i]);
3114								}
3115							}
3116						//해당입장권이 매진 되었을 경우
3117						} else {
3118							//보정 변경 확인
3119							rtnChgFlag = true;
3120						}
3121					}
3122				//활성화된 입장권이 하나도 없을 경우 전체 선택지 비활성화
3123				} else {
3124					//입장권 선택지 영역이 있으면
3125					if (pkgHidn.length > 0) {
3126						//전체 비활성
3127						pkgElem.addClass("disabled");
3128					}
3129					//보정 변경 확인
3130					rtnChgFlag = true;
3131				}
3132
3133				//보정 변경(입장권 상품 매진)이 필요한 경우 보정변경 진행
3134				if (rtnChgFlag) {
3135					//입장권 선택지 선택여부 초기화
3136					pkgElem.find("a.ui-select-option").removeClass("selection");
3137					//선택지 선택 클래스 추가 (기본 선택지로 변경)
3138					pkgElem.find("li").eq(0).find("a").addClass("selection");
3139					//선택지 선택 텍스트 활성화
3140					pkgElem.find("a.ui-select-trigger").text(pkgElem.find("li").eq(0).find("a").text());
3141					//선택지 숨김 셀렉트 값 변경
3142					pkgElem.closest(".ui-select-wrapper").find("select").val("");
3143					//PLUCOD 설정값 제거
3144					delete offer.OFFER_CONT.PLUCOD;
3145					//TICKET_NAME 설정값 제거
3146					delete offer.OFFER_CONT.TICKET_NAME;
3147					//초기 로딩시 업데이트 카운트 증가
3148					if (initPageFlag) $initUpdateCnt++;
3149				}
3150
3151				//날짜 변경시 수량 SELECT BOX 초기화(설정값 초기화)
3152				jsInitTicketCnt(choice);
3153
3154				//입장권 수량
3155				var qty = 0;
3156				//입장권 금액
3157				var amt = 0;
3158				//인원구분 상세정보 생성 시작
3159				for (var i=0; i<info.length; i++) {
3160					var abl = false;
3161					//금액 정보
3162					var price = choice.find("dt."+toNotNull(info[i].GPKG_CLASS)+"_Price");
3163					//금액 정보 설정
3164					price.data("ITEM_PRICE", info[i].AMT);
3165					//금액 텍스트 초기화
3166					price.text(price.text().split(" : ")[0]);
3167
3168					var target = "CLS_"+toNotNull(info[i].GPKG_CLASS);
3169					var start  = 0;
3170					var select = "";
3171					var stText = "입장권 매 수를 선택 해주세요.";
3172					
3173					//수량이 하나라도 있으면, 금액 TXT 설정
3174					if (info[i].QTY > 0 && info[i].AMT > 0) {
3175						abl = true;
3176						price.text(price.text() + " : " + jsToStringAmt(info[i].AMT));
3177						
3178					}
3179					//새로 만들 인원 구분 선택지 설정값 지정
3180					selOpt = {
3181						 LEN : info[i].QTY > 10 ? 10 : info[i].QTY
3182						,STR : start
3183						,TXT : "매"
3184						,TGT : [target]
3185						,SEL : [select]
3186						,ABL : [abl]
3187						,STT : [stText]
3188					};
3189					//인원 구분 선택지 생성
3190					jsRemakeSelectUi(choice, selOpt);
3191
3192					//선택 불가일 경우, 기본 TEXT 문구 설정
3193					if (!abl) {
3194						choice.find("div."+target).find("a.ui-select-trigger").text("예약가능한 수량이 없습니다.");
3195					}
3196					//수량 확인
3197					qty = qty + info[i].QTY;
3198					//금액 확인
3199					amt = amt + info[i].AMT;
3200				}
3201				//수량이 0이면서, 인원구분 상세정보 생성되었으면서, 매진상품이 있는 경우
3202				if ((qty == 0 || amt == 0 )&& info.length > 0 && !isNullorEmpty(soldOutTxt)) {
3203					alert("해당 일자에 구매할 수 있는 상품 재고가 없습니다." + "\n" + "[" + soldOutTxt +"]");
3204				}
3205			} else if ((data.result == "fail" && data.errcode == "overTime")    //당일예약 허용시간 외 예약 및
3206					|| (data.result == "error" && data.errcode == "expired")) { //다음날로 변경된 경우 예외처리
3207				//PLUCOD 설정값 제거
3208				delete offer.OFFER_CONT.PLUCOD;
3209				//TICKET_NAME 설정값 제거
3210				delete offer.OFFER_CONT.TICKET_NAME;
3211				//업데이트 카운트 증가
3212				$initUpdateCnt++;
3213				//날짜 변경시 수량 SELECT BOX 초기화
3214				jsInitTicketCnt(choice);
3215				//보정 변경 true
3216				rtnChgFlag = true;
3217			}
3218		}
3219	});
3220
3221	return rtnChgFlag;
3222}
3223
3224//키값이 일치하는 오브젝트 리턴
3225function getDetailObjByKey(arr, d, dv) {
3226	var result;
3227	var returnType = false;
3228
3229	$.each(arr, function(i, v) {
3230		returnType = false;
3231
3232		$.map(v, function(value, key) {
3233			if(key == d && value == dv)
3234				return returnType = true;
3235		});
3236
3237		if(returnType) return result = v;
3238	});
3239
3240	return result;
3241}
3242
3243//이용 가능 정보 확인(비투숙 패키지)
3244function jsGetAvailableInfo(param) {
3245	//보정변경 여부
3246	var rtnChgFlag = false;
3247	//선택된 장바구니 정보 확인
3248	var offer = $("article.productItem").eq(param.TGT_IDX).data();
3249	//현재 설정 중인 예약 영역 취득
3250	var resBox = $("div.reservationBox").eq(param.TGT_IDX);
3251	var choice = resBox.find("div.selectChoice");
3252	//추가 파라미터 설정
3253	param.PLUCOD = offer.OFFER_CONT.PLUCOD;
3254	param.RP_SEQ = offer.RP_SEQ;
3255	param.OFFER_TYPE = offer.OFFER_TYPE;
3256	param.OFFER_TYPE_CD = offer.OFFER_TYPE_CD;
3257
3258	//취득 가능한 비투숙 패키지 정보 취득
3259	$.ajax({
3260		url : "/front/reservation/getTicketInfo"
3261		, method : "post"
3262		, async : false
3263		, data : param
3264		, success : function(data, stat, xhr) {
3265			if (data.result == "success") {
3266				var info = data.TICKET_INFO;
3267				//검색된 상품명
3268				var rpName = info[0].RP_NAME;
3269				//검색된 수량
3270				var qty = 0;
3271				//활성화 여부
3272				var abl = amt == 0 ? false : true;
3273				if ($.isNumeric(info[0].QTY)) {
3274					qty = info[0].QTY
3275				} else {
3276					qty = jsNumber(info[0].QTY);
3277				}
3278				if (qty > 0) {
3279					abl = abl ? abl : false;
3280					qty = qty > 10 ? 10 : qty;
3281				} else {
3282					abl = false;
3283				}
3284				//검색된 금액
3285				var amt = jsNumber(info[0].AMT);
3286				
3287				//매진상품 문구 초기화
3288				choice.find("em.colorEmp.pl5").remove();
3289
3290				//수량 설정 선택지 생성 시작
3291				selOpt = {
3292					 LEN : qty
3293					,STR : 0
3294					,TXT : "매"
3295					,TGT : ["itemCnt"]
3296					,SEL : [""]
3297					,ABL : [abl]
3298					,STT : ["수량을 선택 해주세요."]
3299				};
3300
3301				jsRemakeSelectUi(choice, selOpt);
3302
3303				//금액 설정정보 갱신
3304				choice.data().ITEM_PRICE = info[0].AMT;
3305
3306				//선택 불가일 경우, 기본 TEXT 문구 설정
3307				if (!abl) {
3308					//매진 ELEM
3309					var soldOutEm = $("<em>").addClass("colorEmp pl5");
3310					//수량 선택지
3311					var selectDiv = choice.find("div.selectBox.itemCnt");
3312					//매진여부 및 선택지 문구 설정
3313					selectDiv.find("a.ui-select-trigger").text("예약가능한 수량이 없습니다.");
3314					//매진상품 재설정
3315					selectDiv.closest("dl.type2").find("span.sdTarget").append(soldOutEm.text("해당 일자 [" + rpName + "] 매진"));
3316					//수량 설정값 제거
3317					delete offer.OFFER_CONT.ITEMCNT;
3318					//금액 설정값 제거
3319					delete offer.OFFER_CONT.ITEMPRC;
3320					//수량 설정 문구 초기화
3321					//console.log($("article.productItem").eq(param.TGT_IDX).find("p"))
3322					$("article.productItem").eq(param.TGT_IDX).find("p").eq(1).text(jsGetSettingText(offer.OFFER_TYPE, offer.OFFER_TYPE_CD, 2));
3323					//초기 로딩시 업데이트 카운트 증가
3324					if (initPageFlag) $initUpdateCnt++;
3325					//알림메시지
3326					alert("해당 일자에 구매할 수 있는 상품 재고가 없습니다." + "\n" + "[" + rpName +"]");
3327				}
3328			} else if ((data.result == "fail" && data.errcode == "overTime")   //당일예약 허용시간 외 예약 및
3329					|| (data.result == "error" && data.errcode == "expired")) {//다음날로 변경된 경우 예외처리
3330
3331			}
3332		}
3333	});
3334	return rtnChgFlag;
3335}
3336
3337//카바나 선베드 예약 가능 시간 확인 > 미사용 > 2018.10.30
3338function jsGetAvailableTime (param, summary, ablflag) {
3339	//확인결과
3340	var rtnFlag = false;
3341	//SELECT BOX PARENT
3342	var choice = $("div.reservationBox").eq(param.TGT_IDX).find(".cimerSelectDate").eq(0);
3343	//선택된 값
3344	var selection = (summary.OFFER_CONT && summary.OFFER_CONT.MEALTIME) ? summary.OFFER_CONT.MEALTIME : "";
3345
3346	//데이터 확인
3347	$.ajax({
3348		url : "/front/reservation/getAvailableTime"
3349		, method : "post"
3350		, async : false
3351		, data : param
3352		, success : function(data, stat, xhr) {
3353			if (stat == "success") {
3354				var varArr = new Array();
3355				var txtArr = new Array();
3356				if (data.result == "success") {
3357					//카바나 선베드 예약 가능 시간이 있을 경우
3358					rtnFlag = true;
3359					var timeInfo = data.TIME_INFO;
3360					for (var i=0; i< timeInfo.length; i++) {
3361						varArr.push(timeInfo[i].MEALTIME);
3362						txtArr.push(jsFormatTerm(timeInfo[i].FR_TIME, timeInfo[i].TO_TIME));
3363					}
3364					//SELECT BOX 재성성
3365					var selOpt = {
3366						 VAL : varArr
3367						,TXT : txtArr
3368						,TGT : ["avTime"]
3369						,SEL : [selection]
3370						,ABL : [true]
3371						,STT : ["시간을 선택해주세요."]
3372					};
3373					jsRemakeSelectUi(choice, selOpt);
3374				}
3375			}
3376		}
3377	});
3378
3379	return rtnFlag;
3380}
3381
3382//선결제 금액 계산
3383function jsCalcPrepayment(amt) {
3384	amt = isNaN(amt) ? jsNumber(amt) : amt;
3385	return amt * 0.2;
3386}
3387
3388
3389//이용 가능 구역 확인 (정상조회/조회를 하지 않을 경우  : true, 조회 실패:false)
3390function jsGetAvailableArea(resBox, param) {
3391	//시간, 층&위치 초기화
3392	jsInitAvailable(resBox, param.KEY);
3393
3394	var rtnFlag     = false;
3395	var submitParam = new Object();
3396	var summary     = $("article.productItem").eq($("div.reservationBox").index(resBox));
3397	var summaryData = summary.data();
3398
3399	//추가 정보 설정
3400	submitParam.RP_SEQ        = summaryData.RP_SEQ;
3401	submitParam.OFFER_TYPE_CD = summaryData.OFFER_TYPE_CD;
3402	submitParam.RES_DATE      = summaryData.OFFER_CONT.RES_DATE;
3403
3404	//크로마 테이블
3405	if (submitParam.OFFER_TYPE_CD == "000009") {
3406	//시메르 (카바나, 선베드)
3407	} else {
3408		submitParam.DEPT_CD  = resBox.find("div.tapBox").data().dept_cd;
3409	}
3410
3411	$.ajax({
3412		url : "/front/reservation/getAvailableArea"
3413		, method : "post"
3414		, async : false
3415		, data : submitParam
3416		, success : function(data, stat, xhr) {
3417			if (stat == "success") {
3418				var abl     = false;
3419				var txtArr  = new Array();
3420				var varArr  = new Array();
3421				var varArr2 = new Array();
3422				if (data.result == "success") {
3423					abl = true;
3424					rtnFlag = true;
3425					var areaInfo = data.AREA_INFO;
3426					//크로마 테이블
3427					if (submitParam.OFFER_TYPE_CD == "000009") {
3428						//크로마 테이블 층별 TAB 가격표 갱신
3429						resBox.find("div.settingCasyInfo").each(function(){
3430							$(this).find("dd").each(function() {
3431								var ddCls = toNotNull($(this).attr("class"));
3432								for (var i=0; i <areaInfo.length; i++) {
3433									if (areaInfo[i].TABLE_GRP_CD == ddCls.replace("chTbl_", "")) {
3434										$(this).text(jsToStringAmt(areaInfo[i].RACK_RATE));
3435										$(this).data(areaInfo[i]);
3436									}
3437								}
3438							});
3439						});
3440					//시메르 : 카바나, 선베드
3441					} else {
3442						//층별 대표구역 Arr : TABLE_GRP_CD
3443						var TABLE_GRP_CD_ARR = new Array();
3444						//var FLOOR_ARR        = new Array();
3445						for (var i=0; i< areaInfo.length; i++) {
3446							//층별 대표구역 Arr 생성 (중복 제거)
3447							if (!isNullOrEmpty(areaInfo[i].TABLE_GRP_CD) && $.inArray(areaInfo[i].TABLE_GRP_CD, TABLE_GRP_CD_ARR) == -1) {
3448								TABLE_GRP_CD_ARR.push(areaInfo[i].TABLE_GRP_CD);
3449								//FLOOR_ARR.push(areaInfo[i].FLOOR);
3450								txtArr.push(areaInfo[i].FLOOR + "층 / " + areaInfo[i].TABLE_GRP_CD_DESC);
3451							}
3452						}
3453
3454						//대표구역에 대한 상세 정보 설정 (테이블 번호 > TABLENO, 금액 > RACK_RATE)
3455						for (var i=0; i< TABLE_GRP_CD_ARR.length; i++) {
3456							var arr1 = new Array();
3457							var arr2 = new Array();
3458							for (var j=0; j< areaInfo.length; j++) {
3459								if (TABLE_GRP_CD_ARR[i] == areaInfo[j].TABLE_GRP_CD) {
3460									arr1.push(areaInfo[j].TABLENO);
3461									arr2.push(areaInfo[j].RACK_RATE);
3462								}
3463							}
3464							varArr.push(arr1);
3465							varArr2.push(arr2);
3466						}
3467
3468						//층별 정보 설정 (SELECT BOX)
3469						var selOpt = {
3470							 VAL  : varArr
3471							,VAL2 : varArr2
3472							,TXT  : txtArr
3473							,TGT  : ["avFloor"]
3474							,SEL  : [""]
3475							,ABL  : [abl]
3476							,STT  : ["선택"]
3477						};
3478
3479						var choice  = resBox.find(".cimerSelectArea").eq(0);
3480						jsRemakeSelectUi(choice, selOpt);
3481
3482						//시간 정보 설정 (MEALTIME) > 미사용이지만, 설정만 해둠 2018.11.01
3483						summary.data().OFFER_CONT.MEALTIME = data.MEALTIME;
3484					}
3485				}
3486			}
3487		}
3488	});
3489
3490	return rtnFlag;
3491}
3492
3493//위치 삭제하기
3494function jsDeleteArea(obj) {
3495
3496	var resBox  = $(obj).closest("div.reservationBox");
3497	var rIndex  = $("div.reservationBox").index(resBox);
3498	var summary = $("article.productItem").eq(rIndex);
3499	var section = resBox.find("div.section")
3500
3501	if (section.length > 1) {
3502		//HTML ELEMENT 삭제
3503		$(obj).closest("div.section").remove();
3504
3505		//현재값 재 반영
3506		var eleObj = resBox.find("div.selectBox.avArea").eq(0).find(".selection");
3507		eleObj.click();
3508	}
3509}
3510
3511//위치 추가하기
3512function jsAddArea(obj) {
3513
3514	var resBox  = $(obj).closest("div.reservationBox");
3515	var rIndex  = $("div.reservationBox").index(resBox);
3516	var summary = $("article.productItem").eq(rIndex);
3517	var section = resBox.find("div.section")
3518
3519	if (section.length == 5) {
3520		alert("한 상품에서 추가 가능하신 구역은 5개 까지입니다.");
3521		return false;
3522	}
3523
3524	var clone = section.eq(0).clone();
3525
3526	//현재 설정된 값 확인
3527	section.each(function(idx){
3528		$(this).find("a.btn.small").find("span").text("삭제");
3529		$(this).find("a.btn.small").attr("onclick", "javascript:jsDeleteArea(this);");
3530	});
3531
3532	clone.find(":text").val("");
3533	clone.find("a.btn.small").find("span").text("추가");
3534	clone.find("a.btn.small").attr("onclick", "javascript:jsAddArea(this);");
3535
3536	clone.find("div.selectBox.avFloor").find("a.ui-select-option").removeClass("selection");
3537	clone.find("div.selectBox.avFloor").find("a.ui-select-option").eq(0).addClass("selection");
3538	clone.find("div.selectBox.avFloor").find("a.ui-select-trigger").text(clone.find("div.selectBox.avFloor").find("a.ui-select-option").eq(0).text());
3539
3540	clone.find("div.selectBox.avArea").addClass("disabled");
3541	clone.find("div.selectBox.avArea").find("ul").empty();
3542	clone.find("div.selectBox.avArea").find("ul").siblings("a.ui-select-trigger").text("");
3543
3544	/*
3545	clone.find("a.ui-select-option").removeClass("selection");
3546	clone.find("a.ui-select-option").eq(0).addClass("selection");
3547	clone.find("a.ui-select-trigger").text(clone.find("a.selection").text());
3548	*/
3549
3550	resBox.find(".cimerSelectArea").append(clone);
3551}
3552
3553//시간 형식 : HH:MI
3554function jsFormatTime(t) {
3555	var rtn = "";
3556	if (!isNullOrEmpty(t) && t.length == 4) {
3557		rtn = t.substring(0,2) + ":" + t.substring(2,4);
3558	}
3559	return rtn;
3560}
3561
3562//구역 형식 : > 테이블번호
3563function jsFormatArea(tn) {
3564	var rtn = "";
3565	rtn = tn + "번";
3566	return rtn;
3567}
3568
3569//시간형식 HH:MI - HH:MI
3570function jsFormatTerm(t1, t2) {
3571	var t1 = jsFormatTime(t1);
3572	var t2 = jsFormatTime(t2);
3573	var sp = " - ";
3574	if (isNullOrEmpty(t1) || isNullOrEmpty(t2)) {
3575		sp = "";
3576	}
3577	return t1 + sp + t2;
3578}
3579
3580//싱글 달력 입력값 복원
3581function jsRecoverCalendar(eleObj, refresh) {
3582	var resBox = eleObj.closest("div.reservationBox");
3583	var summaryIdx  = $("div.reservationBox").index(resBox);
3584	var summaryData = $("article.productItem").eq(summaryIdx).data();
3585	if ("OFFER_CONT" in summaryData) {
3586		var resDate = toNotNull(summaryData.OFFER_CONT.RES_DATE);
3587		if (isNullOrEmpty(resDate)) {
3588			eleObj.data('dateRangePicker').clear();
3589			eleObj.find(":text").val("");
3590		} else {
3591			eleObj.data('dateRangePicker').setDateRange(resDate, "");
3592		}
3593	} else {
3594		eleObj.data('dateRangePicker').clear();
3595		eleObj.find(":text").val("");
3596	}
3597	//달력에 설정 날짜가 있는지 확인
3598	if (!isNullOrEmpty(eleObj.data("resAbleDateArr"))) {
3599		var first = eleObj.data("resAbleDateArr")[0];
3600		if (!isNullOrEmpty(first)) {
3601			var calFrom = toNotNull(eleObj.find(".month1").find(".month-name").text()).split(" ");
3602			var tgtDate = jsGetDateLen6(calFrom[0], calFrom[1], true);
3603			if (first.indexOf(tgtDate) < 0) {
3604				refresh = true;
3605			}
3606		}
3607	}
3608	//달력 Refresh가 true이거나 현재 활성화된 달이 하나도 없는 경우
3609	if (refresh || eleObj.find("table.month1").find("div.valid").length == 0) {
3610		jsSelectMonthSingle(resBox, toNotNull(summaryData.OFFER_CONT.PLUCOD), summaryData.RP_SEQ);
3611	}
3612}
3613//인원 구분 라벨 취득
3614function jsGetPeopleLabel(peopleCls) {
3615	var label = "";
3616	if ("A" == peopleCls) {
3617		label = "대인";
3618	} else if ("B" == peopleCls || "F" == peopleCls) {
3619		label = "소인";
3620	} else if ("D" == peopleCls) {
3621		label = "남성";
3622	} else if ("E" == peopleCls) {
3623		label = "여성";
3624	} else if ("C" == peopleCls) {
3625		label = "유아";
3626	} else {
3627		label = "매";
3628	}
3629	return label;
3630}
3631//티켓 수량 초기화(SELECT BOX)
3632function jsInitTicketCnt(choice) {
3633	var idx = $("div.reservationBox").index(choice.closest("div.reservationBox"));
3634	var summaryData = $("article.productItem").eq(idx).data();
3635	var offerCont = summaryData.OFFER_CONT;
3636	var dlList = $("div.clearFixed").find("dl.type2");
3637	var selOptArr = new Array();
3638	dlList.each(function(index) {
3639		var clsNm = $(this).find("dt").attr("class");
3640		//인원 구분 설정
3641		if (!isNullOrEmpty(clsNm)) {
3642			if(clsNm.indexOf("_Price") > -1) {
3643				var target = clsNm.substring(0,1);
3644				//금액 정보
3645				var price = choice.find("dt."+target+"_Price");
3646				//금액 정보 설정
3647				price.data("ITEM_PRICE", 0);
3648				//금액 텍스트 초기화
3649				price.text(jsGetPeopleLabel(target));
3650				var selOpt = {LEN:0, STR:0, TXT:"", TGT:["CLS_" + target], SEL:[""], ABL:[false], STT:[""]};
3651				jsRemakeSelectUi(choice, selOpt);
3652				//인원수정보 초기화
3653				eval("offerCont."+target+"CNT=0");
3654			}
3655		}
3656	});
3657}
3658
3659//*예약 관련 공통 Function STEP2 END*//
3660</script>
3660
3661
3662<script type="text/javascript">
3663$(document).on("click", ".faqList.base .txtA a", function(){
3664	if (window.dataLayer) {
3665		window.dataLayer.push({
3666			event: "click_benefit_link",
3667			benefit_index: $(".faqList.base > li").index($(this).closest(".txtA").closest("li"))+1,
3668			benefit_product_type: "호텔 파라다이스",
3669			benefit_product_id: 12376,
3670			benefit_product_name: "ROOM & WONDERBOX",
3671			benefit_link_text: toNotNull($(this).text()).replace(/\s+/g, ' ').trim()
3672		});
3673	}
3674});
3675$(document).on("click", ".faqList.base .txtQ", function(){
3676	if (!$(this).hasClass("on") && window.dataLayer) {
3677		window.dataLayer.push({
3678			event: "click_benefit",
3679			benefit_index: $(".faqList.base > li").index($(this).closest("li")) + 1,
3680			benefit_name: $(this).find(".qustxt").text(),
3681			benefit_product_type: "호텔 파라다이스",
3682			benefit_product_id: 12376,
3683			benefit_product_name: "ROOM & WONDERBOX"
3684		});
3685	}
3686});
3687var test = { "2575970" : {} ,"0" : {} ,"0" : {} };
3688var year = 2026;
3689var month = 9;
3690var rpseq = 12376;
3691$(document).ready(function(){
3692	let _sbuNm = {
3693		"000001" : "호텔 파라다이스",
3694		"000002" : "아트파라디소",
3695		"000004" : "씨메르",
3696		"000006" : "원더박스"
3697	};
3698	if (window.dataLayer) {
3699		window.dataLayer.push({
3700			event: "view_item",
3701			currency: "KRW",
3702			service_type: "호텔 상품",
3703			items: [{
3704				facility_name: _sbuNm["000001"],
3705				item_id: 12376,
3706				item_name: "ROOM & WONDERBOX",
3707				item_category: "호텔",
3708				item_category2: "패키지"
3709			}]
3710		});
3711	}
3712
3713    $(document).on('click','.dailyP',function() {
3714        $('.priceDetailWrap').slideToggle();
3715    });
3716
3717    
3718        test["2575970"]["Deluxe"] = "RAD,PAD,GAD,RAT,PAT,GAT";
3719    
3720        test["2575970"]["Premier Deluxe"] = "RBD,PBD,GBD,RBT,PBT,GBT";
3721    
3722        test["2575970"]["Grand Premier Deluxe"] = "RCD,PCD,GCD,RCT,PCT,GCT";
3723    
3724        test["2575970"]["Corner Suite"] = "PCSD";
3725     
3726     
3727    
3728
3729    
3730    $("#seltype").next().on("click",".ui-select-option", function(){
3731        var val  = $(this).data("value") ; 
3732        $("#seltype").val($(this).data("value"));
3733        $("#selRmTypeCd").empty();
3734        if(val == "2575970"){
3735            
3736            selectRemoveThenMakeForInq("#selRmTypeCd",test["2575970"]);
3737            //selectVal("#selRmTypeCd","Deluxe");
3738        }else if(val == "0"){
3739            selectRemoveThenMakeForInq("#selRmTypeCd",test["0"]);
3740            //selectVal("#selRmTypeCd","Deluxe");
3741        }else if(val == "0"){
3742            selectRemoveThenMakeForInq("#selRmTypeCd",test["0"]);
3743        }
3744        jsgetCal(year,month);
3745    });
3746    
3747
3748    // 달력 최초 활성화 (옵션 선택)
3749    $("#seltype").next().find(".ui-select-option").eq(0).trigger("click")
3750
3751    // 아코디언 공통 이벤트 제거 
3752    var tt= $._data(document,"events").click;
3753    tt.forEach(function(i,index){
3754        if(i.selector == ".faqList .txtQ"){
3755              $._data(document,"events").click[index] = '';
3756        }
3757    });
3758
3759    $(document).on('click','.faqList .txtQ',function(){
3760        if($(this).hasClass("on")){
3761            $(this).removeClass('on').siblings(".txtA").slideUp("fast");
3762        }else{
3763            $(this).toggleClass('on').siblings(".txtA").slideToggle("fast");
3764        }
3765    });
3766
3767    if($("#seltype").find('option').length == 1){
3768        $(".select.option").css("display","none");
3769    }
3770    
3771    $(".cont .btnWrap").addClass("on"); // btnWrap +
3772    
3773    $(".cont .badge").addClass("on");
3774});
3775//예약 상세 > 예약하기 멀티 버튼 처리
3776function jsResBtnClick(obj, flag) {
3777	//담기인 경우
3778	if (flag) {
3779		//상품명 입력
3780		$(".tooltipCont").find(".inf").text($(obj).data("rp_name"));
3781		//툴팁 표시
3782		$(".tooltipCont").fadeIn(700).delay(2000).fadeOut(1000);
3783		//담기
3784		jsChkAddToCart(obj);
3785	//바로 예약하기 인 경우
3786	} else {
3787		jsChkAddToCart(obj,true);
3788	}
3789}
3790function selectRemoveThenMakeForInq(selector, list, defaultOpt1){
3791    var html = "";
3792    defaultOpt1 = '객실 선택';
3793
3794    if(defaultOpt1) {
3795        html += "<option value=''>" + defaultOpt1 + "</option>";
3796    }
3797    if(!$.isEmptyObject(list)) {
3798        for(key in list){
3799            html += "<option value="+list[key] +">"+key+"</option>";
3800        };
3801    }
3802    $(selector).text('');
3803    $(selector).append(html);
3804    
3805    var $select = $(selector);
3806    $select.next("div.selectBox").remove();
3807    
3808    if($select.parents('pre').length < 1){
3809        $select.css("display", "block");
3810        $(selector).show();
3811        
3812        var classes = $select.attr("class"),
3813            id      = $select.attr("id"),
3814            name    = $select.attr("name"),
3815            style   = $select.attr("style");
3816            
3817        var template  = '<div class="' + classes + '" style="' +  style + '">';
3818            template += '<a href="javascript:void(0);" class="ui-select-trigger">' + $select.find(':selected').text() + '</a>';
3819            template += '<ul class="ui-select-options">';
3820            $select.find("option").each(function(i){
3821                template += '<li><a href="javascript:void(0);" class="ui-select-option' + (i==0 ? ' selection"' : '"') + '" data-value="' + $(this).attr("value") + '">' + $(this).html() + '</a></li>';
3822            });
3823            template += '</ul></div>';
3824      
3825            $select.hide().after(template);
3826        if($select.is(':disabled')){
3827            $select.next('.selectBox').addClass('disabled');
3828        }
3829    }
3830    
3831    $select.next().on("mouseup",".ui-select-option", function(){
3832        var val  = $(this).data("value") ; 
3833        console.log(val);
3834          $select.val($(this).data("value"));
3835          jsgetCal(year,month);
3836     });
3837}
3838
3839
3840//select box 값 세팅 함수
3841function selectVal(id, val){
3842    var valueIdx;
3843    $(id).next().find('li').each(function(){
3844            if($(this).find('a').attr('data-value') == val){
3845                valueIdx = $(this).index();
3846            }
3847    });
3848
3849    var $select = $(id).next().find('li>a').eq(valueIdx).closest(".ui-select-wrapper").find("select");
3850
3851    $select.val(val);
3852    $(id).next().find('li>a').eq(valueIdx).addClass("selection").parent().siblings().find(".ui-select-option").removeClass("selection");
3853    $(id).next().find('li>a').eq(valueIdx).closest('.ui-select-options').hide().siblings(".ui-select-trigger").text($(id).next().find('li>a').eq(valueIdx).text());
3854}
3855function addoption(obj){
3856    $('#selRmTypeCd').append("<option value=''>선택</option>");
3857    for(key in obj){
3858        $('#selRmTypeCd').append("<option value="+key +">"+obj[key]+"</option>");
3859    };
3860}
3861
3862function jsShow() {
3863
3864}
3865function jssetmonth(flag){
3866    
3867    if(flag == "N"){
3868        month ++;
3869    }else{
3870        month --;
3871    }
3872    
3873    if(month > 12){
3874        month = 1;
3875        year ++;
3876    }else if(month < 1){
3877        month = 12;
3878        year --;
3879    }
3880    //달력 조회 
3881    jsgetCal(year,month)
3882    
3883}
3884
3885function jsgetCal(year,month){
3886    var param = {"RP_SEQ":rpseq,"SALESTYPE_SEQ":$("#seltype").val(),"YEAR":year,"MONTH":month,"RMTYPE_ALL":$("#selRmTypeCd").val()}
3887    var roomval = $("#selRmTypeCd").val();
3888    var str_url = "/front/reservation/getDetailCalendar";
3889    fullLoding($("#container"));
3890    $.ajax({
3891        url : str_url,
3892        method : "post",
3893        data :param,
3894        success : function(data, stat, xhr) {
3895            if (stat == "success") {
3896                // console.log(data.html);
3897                $("#caldate").text('');
3898                $('#caldate').append(data.html); 
3899                var yyyymm = "";
3900                if(month < 10){
3901                    yyyymm = year+".0"+month;
3902                }else{
3903                    yyyymm = year+"."+month;
3904                }
3905                $(".date .tit").text(yyyymm);
3906                
3907                var roomtype = {};
3908                
3909                if( data.room.RMTYPE_ALL){
3910                    for(var i=0;i < data.room.RMTYPE_ALL.length;i++){
3911                        roomtype[data.room.RR_TITLE[i]] =  data.room.RMTYPE_ALL[i];
3912                    }
3913                    selectRemoveThenMakeForInq("#selRmTypeCd",roomtype);
3914                    selectVal("#selRmTypeCd", data.selRoom.join());
3915                }
3916            }
3917        },
3918        complete : function() {
3919            fullLodingClose();
3920        }
3921    });
3922}
3923</script>
3923
3924
3925<section id="container" class="pb192i">
3926    <div class="reservationWrap">
3927
3928        <div class="area">
3929            <div class="cont t1 hd">
3930                <div class="jsSwiperMotion">
3931                    <div class="swiperWrap">
3932                        <ul>
3933                            <li><p><img src="https://www.p-city.com/upload_file/202512/1767147301615.jpg" alt="" /></p></li>
3934                            <li><p><img src="https://www.p-city.com/upload_file/202608/1787711600527.png" alt="" /></p></li>
3935                            <li><p><img src="https://www.p-city.com/upload_file/202608/1787711608639.jpg" alt="" /></p></li>
3936                            <li><p><img src="https://www.p-city.com/upload_file/202608/1787711627856.png" alt="" /></p></li>
3937                            <li><p><img src="https://www.p-city.com/upload_file/202608/1787711635452.jpg" alt="" /></p></li>
3938                            <li><p><img src="https://www.p-city.com/upload_file/202608/1787711646322.png" alt="" /></p></li>
3939                        </ul>
3940                    </div>
3941                    
3942                    <div class="btnArrow">
3943                        <a href="javascript:void(0);" class="btnLeft">좌측</a>
3944                        <a href="javascript:void(0);" class="btnRight">우측</a>
3945                    </div>
3946                    
3947                </div>
3948            </div>
3949            <div class="cont t1">
3950                <div class="titleWrap">
3951                    <h2 class="offerNm" data-limit_adult=3 data-limit_child=3>ROOM & WONDERBOX</h2>
3952                    <a href="javascript:void(1);" onclick="javascript:layerPopOpen('#sharePop1');" class="share">공유하기</a>
3953                    <div class="badge">
3954                    
3955                        
3956                        <span class="type1">핫딜</span>
3957                        
3958                        
3959                    
3960                    </div>
3961                </div>
3962                <div class="priceWrap">
3963                
3964                    <span class="amt">281,600</span>
3965                    <span class="unit">원 ~</span>
3966                    <p>* 일정, 객실 타입 등에 따라 금액이 상이할 수 있습니다.</p>
3967                
3968                </div>
3969                <div class="infoWrap">
3970                    <dl>
3971                        <dt>판매기간</dt>
3972                        <dd>2026.09.23 ~ 2026.10.01</dd>
3973                    </dl>
3974                    <dl>
3975                        <dt>투숙기간</dt>
3976                        <dd>2026.09.24 ~ 2026.10.01</dd>
3977                    </dl>
3978                
3979                    <dl>
3980                        <dt>문의</dt>
3981                        <dd>032-729-2000</dd>
3982                    </dl>
3983                
3984                </div>
3985                
3986                
3987                <div class="btnWrap">
3988                    
3989                    <div class="multi">
3990                        <a class="resBtn ty1" id="HP12376" data-detail_yn="Y" data-rp_name="ROOM & WONDERBOX" data-badge2="" data-offer_type="TA" data-offer_type_cd="000001" data-period="1" onclick="javascript:jsResBtnClick(this,true);"><span>담기</span></a>
3991                        <span></span>
3992                        <a class="resBtn ty2" id="HP12376" data-detail_yn="Y" data-rp_name="ROOM & WONDERBOX" data-badge2="" data-offer_type="TA" data-offer_type_cd="000001" data-period="1" onclick="javascript:jsResBtnClick(this);"><span>바로 예약하기</span></a>
3993                    </div>
3994                    
3995                </div>
3996                
3997            </div>
3998        </div>
3999        <div class="area">
4000
4001            <div class="preWrap mt40">오직 패밀리를 위한 완벽한 선택!<br/>온 가족이 신나게 즐길 수 있는 수영장, 키즈존, 플레이랩, 원더박스로 완성하는 패밀리 스테이를 즐겨보세요.</div>
4002
4003        </div>
4004    
4005    
4006
4007        <!-- 특별해택 -->
4008        
4009
4010        
4011
4012        
4013
4014        
4015        
4016        
4017        
4018        
4019
4020        
4021
4022        
4023        
4024        
4025
4026        
4027        
4028
4029        
4030            
4031            <h1 class="areaTitle">상품혜택</h1>
4032            
4033        <div class="area">
4034            <ul class="faqList base">
4035            
4036                <li>
4037                    <button class="txtQ">
4038                        <span class="qustxt">수영장 이용 (1회/성인 2인, 어린이 2인)</span>
4039                    </button>
4040                    <div class="txtA">
4041                        <div class="preWrap">- 수영장 혼잡 방지 및 어린이 안전을 위해 수영장 내 튜브 사용이 제한됩니다.<br/><a href="https://www.p-city.com/front/hotel/facility/list" target="_blank">- </a><u><a href="https://www.p-city.com/front/hotel/facility/list" target="_blank"><span style="color:#3498db"><u>수영장 운영일정 보기</u></span></a></u></div>
4042                    </div>
4043                </li>
4044             
4045                <li>
4046                    <button class="txtQ">
4047                        <span class="qustxt">원더박스 이용 (1회/성인 2인, 어린이 2인)</span>
4048                    </button>
4049                    <div class="txtA">
4050                        <div class="preWrap"><span style="color:#c0392b">- 체크인 당일 오후 12시부터 체크아웃 당일 운영 종료 시까지 이용 가능합니다.</span><br/>
4050- 호텔 객실 상품에 포함되어 있는 자유이용권은 상품을 구매한 투숙객에 한해 이용 가능하며 타인에게 양도할 수 없습니다.<br/>- 추가 이용 또는 추가 인원 발생 시 30% 할인이 적용됩니다.<br/>- 할인의 경우, 현장 발권 시 적용되며 타 이벤트 및 프로모션과 중복 할인이 불가합니다.<br/>- 현장 이용 상황에 따라 원더박스 이용 대기가 발생할 수 있습니다.<br/><a href="https://www.p-city.com/front/wonderbox/operation?seqParm=2" target="_blank">- <u><span style="color:#3498db"><u>원더박스 운영일정 및 이용안내 보기</u></span></u></a></div>
4051                    </div>
4052                </li>
4053             
4054                <li>
4055                    <button class="txtQ">
4056                        <span class="qustxt">키즈존 이용 (1회/성인 2인, 어린이 2인)</span>
4057                    </button>
4058                    <div class="txtA">
4059                        <div class="preWrap">- 키즈존은 부모님 동반 하에 0세부터 만 7세까지 이용 가능합니다.<br/>- 쾌적한 환경을 위하여 음식물 반입은 제한됩니다.<br/><a href="https://www.p-city.com/front/hotel/facility/view?FACILITY_NM=FacilityKidsZone" target="_blank">-<span style="color:#3498db"><u> 키즈존 이용안내 보기</u></span></a></div>
4060                    </div>
4061                </li>
4062             
4063                <li>
4064                    <button class="txtQ">
4065                        <span class="qustxt">플레이랩 이용 (1회/성인 2인, 어린이 2인)</span>
4066                    </button>
4067                    <div class="txtA">
4068                        <div class="preWrap">- 입장은 운영 종료 1시간 전까지며 1시간 이용 가능합니다.<br/>- 일부 게임에 한하여 연령 제한이 있을 수 있습니다.<br/><a href="https://www.p-city.com/front/hotel/facility/view?FACILITY_NM=FacilitySafariPark" target="_blank">- <span style="color:#3498db"><u>플레이랩 이용 안내 보기</u></span></a></div>
4069                    </div>
4070                </li>
4071             
4072                <li>
4073                    <button class="txtQ">
4074                        <span class="qustxt">피트니스 이용 (1회/성인 2인)</span>
4075                    </button>
4076                    <div class="txtA">
4077                        <div class="preWrap">- 피트니스는 만 16세 이상 고객에 한해 입장 가능합니다.<br/><a href="https://www.p-city.com/front/hotel/facility/view?FACILITY_NM=FacilityFitness" target="_blank">- <span style="color:#3498db"><u>피트니스 이용 안내 보기</u></span></a></div>
4078                    </div>
4079                </li>
4080             
4081                <li>
4082                    <button class="txtQ">
4083                        <span class="qustxt">더 스파 앳 파라다이스 &amp; 더 스칼프 컴포트 앳 파라다이스 할인</span>
4084                    </button>
4085                    <div class="txtA">
4086                        <div class="preWrap">- 더 스파 앳 파라다이스 에스틱 스파 20% 할인<br/>- 더 스칼프 컴포트 앳 파라다이스 두피 관리 10% 할인<br/><br/>- 사전 예약 후 이용할 수 있으며, 자세한 프로그램은 해당 영업장으로 문의해주시기 바랍니다.<br/>- 더 스파 : 032-729-2440 / 더 스칼프 컴포트 : 032-729-2185<br/><br/><a href="https://www.p-city.com/front/hotel/facility/view?FACILITY_NM=FacilityTheSpaAtParadise">-<span style="color:#3498db"><u> 더 스파 앳 파라다이스 이용 안내 보기</u></span></a><br/><a href="https://www.p-city.com/front/hotel/facility/view?FACILITY_NM=FacilityTheScalpParadise">-<span style="color:#3498db"><u> 더 스칼프 컴포트 앳 파라다이스 이용 안내 보기</u></span></a></div>
4087                    </div>
4088                </li>
4089             
4090            </ul>
4091        </div>
4092        
4093        
4094
4095        
4096        <div class="area">
4097            <div class="priceDetail">
4098                <p class="on"><a href="javascript:void(0);">일별 상세 요금표</a></p>
4099                <div class="eventCalendar">
4100                    <div class="calendarTop">
4101                        <div class="date">
4102                            <a href="javascript:void(0);" class="btnLeft" onclick="jssetmonth('P')">PREV</a>
4103                            <span class="tit">2018.6</span>
4104                            <a href="javascript:void(0);" class="btnRight" onclick="jssetmonth('N')">NEXT</a>
4105                        </div>
4106                        <div class="select option">
4107                            <select class="selectBox" id="seltype">
4108                            
4109                                 <option value="2575970">옵션 </option>
4110                            
4111                            </select>
4112                        </div>
4113                        <div class="select room">
4114                            <select class="selectBox" id="selRmTypeCd">
4115                            </select>
4116                        </div>
4117                    </div>
4118                    <p class="topTxt">* 일정, 객실 타입 등에 따라 금액이 상이할 수 있습니다.</p>
4119                    <ul class="calendarDay clearFixed">
4120                        <li class="txtRed">Sun</li>
4121                        <li>Mon</li>
4122                        <li>Tue</li>
4123                        <li>Wed</li>
4124                        <li>Thu</li>
4125                        <li>Fri</li>
4126                        <li class="txtBlue">Sat</li>
4127                    </ul>
4128                    <!-- 일자 -->
4129                    <div id="caldate"></div>
4130                    
4131                    <div class="btmDesc">* 본 상품은 제휴 카드 할인 및 파라다이스 시그니처 회원 대상 할인이 제외됩니다.</div>
4132                    
4133                </div>
4134            </div>
4135        </div>
4136        
4137        <div class="area">
4138            <div class="cautionBox new">
4139                <h2 class="cautionH2">유의사항</h2>
4140                <div class="preWrap">-&nbsp;홈페이지에서 예약한 상품 취소는 홈페이지에서 직접 진행 시 신속한 처리가 가능하며, 전화문의 시 지연되거나 제한될 수 있습니다.<br /><br />[체크인 및 시설 이용 안내]<br />-&nbsp;체크인 15:00, 체크아웃 11:00이며, 얼리체크인 또는 레이트 체크아웃의 경우 별도 요금이 부과될 수 있습니다.<br />-&nbsp;체크인 시 투숙객 확인을 위해 본인 사진이 포함된 신분증을 지참해주시길 바랍니다.<br />-&nbsp;부대시설(수영장, 피트니스)은 투숙기간 중 사용 가능하며, 체크아웃 이후 이용은 제한됩니다.<br />-&nbsp;유아용품 및 객실 대여품은 수량이 한정되어 있어 사전 예약을 권장드립니다.<br />-&nbsp;키즈 어메니티는 별도 제공되지 않습니다.<br /><a href="https://www.p-city.com/front/hotel/facility/list" target="_blank">- </a><u><a href="https://www.p-city.com/front/notice/detail?N_SEQ=2282" target="_blank"><u>HOTEL PARADISE 유아 대여용품 자세히 보기</u></a></u><br /><br />[투숙 인원 및 요금 안내]<br />-&nbsp;본 상품의 투숙 인원은 성인 2인 &amp; 어린이 2인입니다.<br />&middot; 성인 : 만 13세 이상 / 어린이 : 37개월~만 12세 / 유아 : 36개월 이하<br />-&nbsp;1객실 당 최대 투숙 인원은 성인 3인이며, 성인 3인 투숙 시 ì
4140–´ë¦°ì´ëŠ” 1인까지만 가능합니다.<br />-&nbsp;성인 인원 추가 시 50,000원(부가세 별도), 엑스트라베드 추가 시 70,000원(부가세 별도)의 요금이 부과됩니다.<br />(수영장, 피트니스, 키즈존, 플레이랩 혜택 포함)<br /><a href="https://www.p-city.com/front/hotel/facility/list" target="_blank">- </a><u><a href="https://www.p-city.com/front/notice/detail?N_SEQ=2501" target="_blank"><u>HOTEL PARADISE 객실 투숙인원 자세히 보기</u></a></u><br /><br />[취소 환불 및 수수료 안내]<br />- 이용 예정일자 2일 전 15시 이전 : 취소 수수료 없이 취소 가능<br />-&nbsp;이용 예정일자 2일 전 15시 이후~1일 전 15시 이전 : 상품 요금의 50%를 수수료로 부과<br />-&nbsp;이용 예정일자 1일 전 15시 이후 : 홈페이지 상에서의 취소는 불가<br />-&nbsp;기타 변경 및 No-Show 발생 시 예약실 유선 연락바랍니다.<br /><br />[대중교통 이용 안내]<br />-&nbsp;파라다이스시티는 인천공항 T1에서 차량으로 약 5분 거리에 위치해 있습니다.<br />-&nbsp;무료 셔틀버스 및 자기부상 열차를 이용하시면 더욱 편리하게 이동하실 수 있습니다.<br /><a href="https://www.p-city.com/front/hotel/facility/list" target="_blank">- </a><u><a href="https://www.p-city.com/front/contents/pcity/location?Type=LOCATION" target="_blank"><u>무료 셔틀버스 및 자기 부상열차 자세히 보기</u></a></u></div>
4141            </div>
4142        </div>
4143    </div>
4144</section>
4145
4146
4147
4148
4149
4150
4151<div class="telPopWrap" id="TelPop">
4152	<div class="telPopSect">
4153		<p class="telPopTit"><span>Reservation</span><strong></strong></p>
4154		<div class="telPopCont">
4155			<a href="javascript:void(0);" class="telPopClse">취소</a>
4156
4157		</div>
4158	</div>
4159
4160	
4161		
4162	<input type="hidden" name="TEL_POP_MSG" value="해당상품은 전화예약 전용입니다."/>
4163		
4164	
4165		
4166	<input type="hidden" name="TEL_POP_MSG" value="예약을 원하시는 경우 전화문의바랍니다."/>
4167		
4168	
4169
4170</div>
4171<script type="text/javascript">
4172function jsTelPopOpen(telNum) {
4173	if (!isNullOrEmpty($(telNum).data("tel"))) {
4174		telNum = $(telNum).data("tel");
4175	}
4176	let msg = "";
4177	let msgArr = [];
4178	$("[name=TEL_POP_MSG]").each(function (i){
4179		msgArr.push(toNotNull($(this).val()));
4180	});
4181	$("#TelPop .telPopTit").html("<span>Reservation</span>" + msgArr.join("<br>") + "<strong>" + telNum + "</strong>");
4182	$("#TelPop .alertPhone").attr("href", "tel:" + telNum);
4183	layerPopOpen('#TelPop');
4184}
4185</script>
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196<script>
4197var title = "OFFER 예약문의"; // OFFER 예약문의
4198
4199var emailFormat = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/;
4200var blank_pattern = /[\s]/g;
4201
4202$(window).load(function(){
4203    //Ajax 대기시간 설정 (IE브라우저 처리시간 문제 대응)
4204    var timer = setInterval(function() {
4205
4206    }, 100);
4207
4208});
4209
4210$(document).ready(function(){
4211	// 팝업 제목 설정
4212    $(".popHeaderInq").text(title);
4213
4214    $("#PI_VOC_CN").val("");
4215
4216    try {
4217        addInputHandler({input:$(".inqEmailValidation"), dataType:"AP", handler:function() {
4218            $(".inqEmailValidation").closest("dd").removeClass("error");
4219        }});
4220    } catch(e) {
4221        console.log(e);
4222    }
4223
4224    if($("#TEL").length > 0) {
4225        try {
4226            addInputHandler({input:$("#TEL"), dataType:"N", handler:function() {
4227                $("#TEL").closest("dd").removeClass("error");
4228            }});
4229        } catch(e) {
4230            console.log(e);
4231        }
4232    }
4233
4234    if($("#TEL2").length > 0) {
4235        try {
4236            addInputHandler({input:$("#TEL2"), dataType:"N", handler:function() {
4237                $("#TEL2").closest("dd").removeClass("error");
4238            }});
4239        } catch(e) {
4240            console.log(e);
4241        }
4242    }
4243
4244    if($("#TEL3").length > 0) {
4245        try {
4246            addInputHandler({input:$("#TEL3"), dataType:"N", handler:function() {
4247                $("#TEL3").closest("dd").removeClass("error");
4248            }});
4249        } catch(e) {
4250            console.log(e);
4251        }
4252    }
4253
4254    $('#QUESTION').children("option").each(function() {
4255        if ($(this).is(":selected")) {
4256            $(this).trigger("change");
4257        }
4258    });
4259
4260});
4261
4262function selectVal(id, val){
4263    var valueIdx;
4264    $(id).next().find('li').each(function(){
4265            if($(this).find('a').attr('data-value') == val){
4266                valueIdx = $(this).index();
4267            }
4268    });
4269
4270    var $select = $(id).next().find('li>a').eq(valueIdx).closest(".ui-select-wrapper").find("select");
4271
4272    $select.val(val);
4273    $(id).next().find('li>a').eq(valueIdx).addClass("selection").parent().siblings().find(".ui-select-option").removeClass("selection");
4274    $(id).next().find('li>a').eq(valueIdx).closest('.ui-select-options').hide().siblings(".ui-select-trigger").text($(id).next().find('li>a').eq(valueIdx).text());
4275}
4276
4277//Ajax 동작 플래그
4278$isAjaxRun = false;
4279function jsSave() {
4280    
4281    if(blank_pattern.test($('.inqEmailValidation').val()) == true || emailFormat.test($('.inqEmailValidation').val()) == false){
4282        $(".inqEmailValidation").closest("dd").addClass("error");
4283        $(".inqEmailValidation").closest("div.inp").next(".errorText").text("이메일 형식이 올바르지 않습니다.");
4284        $(".inqEmailValidation").focus();
4285        return;
4286    }
4287
4288    
4289    if($("#TEL").length > 0 && $("#TEL").val().length < 7) {
4290        $("#TEL").closest("dd").addClass("error");
4291        $("#TEL").closest("div.inp").next(".errorText").text("휴대폰번호를 정확히 입력해 주세요.");
4292        $("#TEL").focus();
4293        return;
4294    }
4295
4296    if($("#TEL2").length > 0 && $("#TEL2").val().length < 3) {
4297        $("#TEL2").closest("dd").addClass("error");
4298        $("#TEL2").closest("div.inp").next(".errorText").text("휴대폰번호를 정확히 입력해 주세요.");
4299        $("#TEL2").focus();
4300        return;
4301    }
4302
4303    if($("#TEL3").length > 0 && $("#TEL3").val().length < 4) {
4304        $("#TEL3").closest("dd").addClass("error");
4305        $("#TEL3").closest("div.inp").next(".errorText").text("휴대폰번호를 정확히 입력해 주세요.");
4306        $("#TEL3").focus();
4307        return;
4308    }
4309
4310    rtn = $("#form_inquiry").validate();
4311
4312    if (rtn.isValid == false) {
4313        var sub_fix = "항목을 입력하세요.";
4314        if (rtn.chkType == "type") {
4315            sub_fix = "형식이 올바르지 않습니다.";
4316        }
4317
4318        if (rtn.msg != "") {
4319            alert(rtn.msg + " " + sub_fix);
4320        } else {
4321            alert(sub_fix);
4322        }
4323        if ( rtn.msg == "OFFER 구분" ) {
4324			$("#TITLE").focus();
4325		}
4326        return;
4327    }
4328
4329    if($("#AGREE").is(":checked") == false) {
4330        alert("‘필수적 개인정보 수집 및 이용에 대한 동의’에 동의하셔야합니다.");
4331        $("#AGREE").focus();
4332        return;
4333    }
4334
4335
4336
4337    if(!isNum($("#TEL2").val())) {
4338        alert("휴대 전화는 숫자만 입력 가능합니다.");
4339        $("#TEL2").val("");
4340        $("#TEL2").focus();
4341        return;
4342    } else if(!isNum($("#TEL3").val())) {
4343        alert("휴대 전화는 숫자만 입력 가능합니다.");
4344        $("#TEL3").val("");
4345        $("#TEL3").focus();
4346        return;
4347    }
4348    $('#PI_TELNO').val($('#TEL1').val() + '-' + $('#TEL2').val() + '-' + $('#TEL3').val() );
4349
4350
4351    addValue("이메일", "EMAIL");
4352    addValue("휴대폰 번호", "PI_TELNO");
4353    addValue("OFFER 구분", "QUESTION");
4354    addValue("내용", "CTNT");
4355
4356    $("#PI_REG_EMPNO").val($("#PI_CUST_NM").val());
4357
4358    // 예약문의 등록 로딩 시작
4359    fullLoding("#container");
4360    $isAjaxRun = true;
4361    $.ajax({
4362       url : "/front/inquiry/reservation/register"
4363       , method : "post"
4364       , data : $("#form_inquiry").serialize()
4365       , success : function(data, stat, xhr) {
4366           if (stat == "success") {
4367               if (data.result == "success") {
4368                   alert("고객님의 소중한 의견이 접수 되었습니다.\n빠른 시간 안에 답변 드리도록 하겠습니다.");
4369                   //location.href=document.URL;
4370                   location.reload();
4371               } else {
4372                   alert("에러가 발생했습니다!");
4373                   $isAjaxRun = false;
4374                   fullLodingClose();
4375               }
4376           }
4377       }
4378    });
4379}
4380
4381function addValue(objTitle, objNm1, objNm2, objNm3, isSelectBox) {
4382    var name1 = $("#"+objNm1).val() != null ? $("#"+objNm1).val() : "";
4383    var name2 = $("#"+objNm2).val() != null ? $("#"+objNm2).val() : "";
4384    var name3 = $("#"+objNm3).val() != null ? $("#"+objNm3).val() : "";
4385
4386    if(isSelectBox) {
4387        name1 = $("#"+objNm1).find(':selected').text() != null ? $("#"+objNm1).find(':selected').text() : "";
4388        name2 = $("#"+objNm2).find(':selected').text() != null ? $("#"+objNm2).find(':selected').text() : "";
4389        name3 = $("#"+objNm3).find(':selected').text() != null ? $("#"+objNm3).find(':selected').text() : "";
4390    }
4391
4392    if($("#PI_VOC_CN").val() != "") {
4393    $("#PI_VOC_CN").val($("#PI_VOC_CN").val() + "\n"+ objTitle+ " : " + name1 + name2 + name3 );
4394    } else {
4395        $("#PI_VOC_CN").val( objTitle+ " : " + name1 + name2 + name3  );
4396    }
4397    return;
4398}
4399
4400</script>
4400
4401
4402<!-- 예약문의 (레이어 팝업) -->
4403<div class="layerPopWrap normalLayer" id="INQUIRYPOP">
4404    <div class="bg"></div>
4405    <!-- layerPopCont -->
4406    <div class="layerPopCont">
4407        <h1 class="popHeader popHeaderInq"></h1>
4408        <div class="inquiryPopCont">
4409            <form id="form_inquiry" name="form_inquiry">
4410                <input type="hidden" id="COMM_CD" name="COMM_CD" value="INQ_FAC"/> <!-- COMM_CD -->
4411                <input type="hidden" id="MST_CD" name="MST_CD" value=""/> <!-- MST_CD -->
4412                <input type="hidden" id="CD_TYPE" name="CD_TYPE" value="INQ"/> <!-- CD_TYPE -->
4413                <input type="hidden" id="PI_TELNO" name="PI_TELNO" value=""/> <!-- 연락처 -->
4414
4415                <input type="hidden" id="PI_VOC_CN" name="PI_VOC_CN" value=""/> <!--VOC 내용 -->
4416                <input type="hidden" id="BBS_CATE_CD" name="BBS_CATE_CD" value="ACC"/> <!-- 예약문의 -->
4417                <input type="hidden" id="CRM_VOC_CONN" name="CRM_VOC_CONN" value="N"/> <!-- CRM VOC 연계 여부 -->
4418                <input type="hidden" id="CATEGORY2" name="CATEGORY2" value=""/>
4419                <input type="hidden" id="CATEGORY3" name="CATEGORY3" value=""/>
4420                <input type="hidden" id="VIEW_CD" name="VIEW_CD" value=""/>
4421
4422                <div class="category">
4423                    <select class="selectBox" id="QUESTION" name="CATEGORY1" required title="OFFER 구분"> <!-- 클래스 selectBox 추가 -->
4424                        <option value="">OFFER 구분</option>
4425                        <option value="Hotel Paradise">Hotel Paradise</option>
4426                        <option value="Hotel Art Paradiso">Hotel Art Paradiso</option>
4427                        <option value="Cimer">Cimer</option>
4428                        <option value="Wonderbox">Wonderbox</option>
4429                        <option value="Chroma">Chroma</option>
4430                        <option value="Art Space">Art Space</option>
4431                    </select>
4432                </div>
4433
4434                <div class="formInquiryWrap">
4435                    <dl class="title">
4436                        <dt>
4437                            <label for="TITLE">제목 <span class="color">*</span></label>
4438                            <p class="imp"><span class="color">*</span>필수 입력 항목</p>
4439                        </dt>
4440                        <dd>
4441                            <div class="inp">
4442                                <input type="text" id="TITLE" name="TITLE" required title="제목">
4443                                <button class="btnDelete">삭제</button>
4444                            </div>
4445                        </dd>
4446                    </dl>
4447                    <dl>
4448                        <dt><label for="CTNT">내용<span class="color">*</span></label></dt>
4449                        <dd>
4450                            <textarea class="textarea" cols="0" rows="0" id="CTNT" name="CTNT" required title="내용"></textarea>
4451                        </dd>
4452                    </dl>
4453                    <div class="clearFixed">
4454                        <dl class="name">
4455                            <dt><label for="PI_CUST_NM">이름 <span class="color">*</span></label></dt>
4456                            <!-- 에러시 dd의 error 클래스 추가 -->
4457                            <dd>
4458                                <div class="inp">
4459                                    <input type="text" id="PI_CUST_NM" name="PI_CUST_NM" value="" required title="이름">
4460                                    <button class="btnDelete">삭제</button>
4461                                </div>
4462
4463                                <div class="errorText">
4464                                    <!-- 에러 메시지 -->
4465                                </div>
4466                            </dd>
4467                        </dl>
4468                        <dl class="pwd">
4469                            <dt><label for="EMAIL">이메일 <span class="color">*</span></label></dt>
4470                            <!-- 에러시 dd의 error 클래스 추가 -->
4471                            <dd>
4472                                <div class="inp">
4473                                    <input type="email" class="inqEmailValidation" id="EMAIL" name="EMAIL" value="" required t
4473itle="이메일">
4474                                    <button class="btnDelete">삭제</button>
4475                                </div>
4476                                <div class="errorText">
4477                                    <!-- 에러 메시지 -->
4478                                </div>
4479                            </dd>
4480                        </dl>
4481                    </div>
4482
4483                    <dl class="phone">
4484                        
4485                        <dt><label for="TEL1">휴대폰 번호 <span class="color">*</span></label></dt>
4486                        <dd>
4487                            <select class="selectBox" id="TEL1" name="TEL1" required title="핸드폰 첫째자리 선택" >
4488                                <option value="010">010</option>
4489                                <option value="011" >011</option>
4490                                <option value="016" >016</option>
4491                                <option value="017" >017</option>
4492                                <option value="018" >018</option>
4493                                <option value="019" >019</option>
4494                            </select>
4495                            <div class="inp">
4496                                <input type="tel" id="TEL2" name="TEL2" required value="" onkeydown="return inputNumCheck(event)" onkeyup="removeChar(event)" title="핸드폰 가운데자리 입력" maxlength="4">
4497                                <button class="btnDelete">삭제</button>
4498                            </div>
4499                            <span>-</span>
4500                            <div class="inp">
4501                                <input type="tel" id="TEL3" name="TEL3" required value="" onkeydown="return inputNumCheck(event)" onkeyup="removeChar(event)" title="핸드폰 끝자리 입력" maxlength="4">
4502                                <button class="btnDelete">삭제</button>
4503                            </div>
4504                        
4505                            <div class="errorText">
4506                                <!-- 에러 메시지 -->
4507                            </div>
4508                        </dd>
4509                    </dl>
4510                </div>
4511
4512                <div class="termArea">
4513                    <div>
4514                        <h2>필수적 개인정보 수집 및 이용에 대한 동의 <span>(필수)</span></h2>
4515                        <div class="termTxt" tabindex="0">
4516                            <p>개인정보 수집 및 이용에 대한 동의</p>
4517
4518<p>&nbsp;</p>
4519
4520<p>1. 수집하는 개인정보 항목: 이름, 이메일, 휴대폰번호</p>
4521
4522<p>2. 수집 및 이용 목적: 문의/요청 내역에 따른 본인 확인 및 답변 제공</p>
4523
4524<p>3. 보유 및 이용기간: <strong><u>3년</u></strong></p>
4525
4526<p>※ 귀하께서는 위 개인정보 수집 및 이용 동의에 대해 거부할 권리가 있으며, 동의 거부 시 문의등록 및 답변 서비스 제공
4526에 제한이 있을 수 있음을 알려드립니다.</p>
4527
4528                        </div>
4529                        <div class="checkbox">
4530                            <input type="checkbox" id="AGREE" name="AGREE" value="Y"><label for="AGREE">동의함</label>
4531                        </div>
4532                    </div>
4533                </div>
4534            </form>
4535
4536            <div class="btnGroup">
4537                <a href="javascript:jsSave();" class="btn btnFull small"><span>등록</span></a>
4538            </div>
4539        </div>
4540        <a href="#" class="layerPopClose btnPopClose">레이어 팝업 닫기</a>
4541    </div>
4542    <!-- //layerPopCont -->
4543</div>
4544<!-- //예약문의 (레이어 팝업) -->
4545
4546 
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556<script src="/common/js/clipboard.min.js"></script>
vendor: 2 bytes, line 4556
4556
4557<script>
4558//공유하기 URL(전역번수)
4559$S_URL = "https://www.p-city.com/front/reservation/reservationStep1To2?RP_SEQ=12376";
4560function getText() {
4561	return `ROOM & WONDERBOX`.replace(/\s+/g, ' ').trim();
4562}
4563function click_share(share_method) {
4564	if (window.dataLayer) {
4565		window.dataLayer.push({
4566			event: "click_share",
4567			content_type: "상품",
4568			content_name: getText(),
4569			share_method: share_method
4570		});
4571	}
4572}
4573$(document).ready(function(){
4574	//클립보드 활성화
4575	new ClipboardJS("#cpyAtag");
4576});
4577$(window).load(function(){
4578
4579});
4580$(document).on("click", "#cpyAtag", function(e,d){
4581	if (!d) {
4582		click_share("link copy");
4583	}
4584})
4585//공유하기 URL 변경 처리 시
4586function jsSetShareURL(url) {
4587	$S_URL = url;
4588	$("#cpyText").val($S_URL);
4589}
4590//공유하기1. 페이스북 (게시글 작성용 링크 생성)
4591function jsShareFB() {
4592	click_share("Facebook");
4593	window.open("https://www.facebook.com/sharer/sharer.php?u=" + $S_URL, "", "width=500, height=400");
4594}
4595//공유하기2. 트위터 (게시글 작성용 링크 생성)
4596function jsShareTW() {
4597	click_share("Twitter");
4598	var title = encodeURIComponent("공유하기");
4599	window.open("https://twitter.com/intent/tweet?url=" + $S_URL + "&text="+title, "", "width=500, height=400");
4600}
4601//공유하기3. 웨이보 (게시글 작성용 링크 생성)
4602function jsShareWB() {
4603	click_share("Weibo");
4604	window.open("http://v.t.sina.com.cn/share/share.php?title="+encodeURIComponent("공유하기") + "&url=" + encodeURIComponent($S_URL) + "&source=bookmark", "", "width=450, height=400");
4605}
4606//공유하기4. 위챗 (현재 페이지 링크 복사)
4607function jsShareWC() {
4608	click_share("Wechat");
4609	alert("请长按下方链接进行复制发送给好友");
4610	$("#cpyAtag").trigger("click", ["auto"]);
4611}
4612</script>
4612
4613<style>
4614.layerPopWrap.normalLayer .sharePop{margin-left:0px;}
4615.sharePop .shareBox .copy button {position:absolute;top:50%;right:10px;transform:translateY(-50%);color:#9c836a;text-decoration:underline;}
4616.sharePop .shareBox li a.ximg{background-image:url(/pcPub/static/images/event/260508_x-logo.png)}
4617</style>
4618<!-- sharePop -->
4619<div class="layerPopWrap normalLayer" id="sharePop1">
4620	<div class="bg"></div>
4621	<!-- layerPopCont -->
4622	<div class="layerPopCont sharePop">
4623		<h1 class="popHeader">공유하기</h1>
4624		<div class="shareBox">
4625			<ul>
4626				
4627				<li class="icon1"><a href="javascript:jsShareFB();">Facebook</a></li>
4628				<li><a class="ximg" href="javascript:jsShareTW();">X</a></li>
4629				
4630			</ul>
4631			<div class="copy">
4632				<input id="cpyText" type="text" value="https://www.p-city.com/front/reservation/reservationStep1To2?RP_SEQ=12376"/>
4633				<button id="cpyAtag" data-clipboard-action="copy" data-clipboard-target="#cpyText">복사</button>
4634			</div>
4635		</div>
4636		<a href="javascript:void(0);" class="layerPopClose btnPopClose">레이어 팝업 닫기</a>
4637	</div>
4638	<!-- //layerPopCont -->
4639</div>
4640<!-- //sharePop -->
4641		
4642		<!-- Google 리타겟팅용 태그 -->
4643		
4643<script type="text/javascript">
4644			/* <![CDATA[ */
4645			var google_conversion_id = 856602146;
4646			var google_custom_params = window.google_tag_params;
4647			var google_remarketing_only = true;
4648			/* ]]> */
4649		</script>
4649
4650		
4650<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"></script>
4650
4651		<noscript>
4652			<div style="display:inline;">
4653				<img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/856602146/?guid=ON&amp;script=0"/>
4654			</div>
4655		</noscript>
4656
4657		<!-- Yahoo 리타겟팅용 태그 -->
4658		
4658<script type="text/javascript" language="javascript">
4659			/* <![CDATA[ */
4660			var yahoo_retargeting_id = 'QM0HYALPLQ';
4661			var yahoo_retargeting_label = '';
4662			var yahoo_retargeting_page_type = '';
4663			var yahoo_retargeting_items = [{item_id: '', category_id: '', price: '', quantity: ''}];
4664			/* ]]> */
4665		</script>
4665
4666		
4666<script type="text/javascript" language="javascript" src="//b92.yahoo.co.jp/js/s_retargeting.js"></script>
4666
4667		
4668	</body>
4669</html>

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.