PageSourceSearch

https://m.thankqcamping.com/resv/list.hbb?site_tp=BB000

html thankqcamping.com collected 2026-10-01 15:26:52 UTC 178,239 bytes, 4,214 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="ko">
4<head>
5    <meta charset="UTF-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
7    <meta http-equiv="X-UA-Compatible" content="IE=Edge, Chrome=1">
8
9		<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
10		<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
11		<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
12		<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
13		<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
14		<link rel="apple-touch-icon" sizes="120x120" href="/appleicon-120x120.png">
15		<link rel="apple-touch-icon" sizes="144x144" href="/appleicon-144x144.png">
16		<link rel="apple-touch-icon" sizes="152x152" href="/appleicon-152x152.png">
17		<link rel="apple-touch-icon" sizes="180x180" href="/appleicon-180x180.png">
18		<link rel="icon" href="/favicon.ico" sizes="any">
19		<link rel="icon" type="image/png" sizes="192x192" href="/androidicon-192x192.png">
20		<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
21		<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
22		<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
23		<link rel="manifest" href="/manifest.json">
24		<meta name="msapplication-TileColor" content="#ffffff">
25		<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
26		<meta name="theme-color" content="#ffffff">
27
28    <link href="/css/fontawesome/css/fontawesome.css" rel="stylesheet" />
29    <link href="/css/fontawesome/css/regular.css" rel="stylesheet" />
30    <link rel="stylesheet" type="text/css" href="/css/jquery-ui.css?version=20261001-1">
31    <link rel="stylesheet" href="/js/swiper/swiper.min.css?version=20261001-1"/>
32    <link rel="stylesheet" href="/js/mCustomScrollbar/jquery.mCustomScrollbar.css?version=20261001-1"/>
33    <link rel="stylesheet" href="/css/tqc.css?version=20261001-1"/>
34    
34<script type="text/javascript" src="/js/jquery-1.12.4.min.js?version=20261001-1"></script>
34
35    
35<script src="/js/jquery-ui.min.js?version=20261001-1"></script>
35
36    
36<script type="text/javascript" src="/js/swiper/swiper.min.js?version=20261001-1"></script>
36
37    
37<script type="text/javascript" src="/js/mCustomScrollbar/jquery.mCustomScrollbar.js?version=20261001-1"></script>
37
38    <!--link rel="stylesheet" href="https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css?version=20261001-1" /-->
39    
39<script type="text/javascript" src="/js/common.js?version=20261001-1"></script>
39
40		<title>땡큐캠핑 | 오토캠핑</title>
41		<meta name="description" content="땡큐캠핑에서 전국 오토캠핑 실시간 예약, 잔여석 확인, 리뷰 확인까지 한 번에 이용하세요.">
42		<meta name="keywords" content="땡큐캠핑, 캠핑장 예약, 캠핑 예약, 캠핑장 추천, 캠핑 플랫폼">
43		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
44		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
45		<meta http-equiv="X-UA-Compatible" content="IE=edge">
46		
47		
48        <meta name="robots" content="index, follow">
49        <meta name="NaverBot" content="index, follow"/>
50        <meta name="Yeti" content="index, follow"/>
51        
52		
53		<meta name="author" content="habb communication Co., Ltd." />
54		<meta name="apple-mobile-web-app-capable" content="yes">
55		<meta name="apple-mobile-web-app-status-bar-style" content="black">
56		<meta property="al:android:url" content="https://play.google.com/store/apps/details?id=com.habb.thankq">
57		<meta property="al:android:app_name" content="캠핑 1등 플랫폼 땡큐캠핑">
58		<meta property="al:android:package" content="com.habb.thankq">
59		<meta property="al:web:url" content="https://m.thankqcamping.com/">
60		<meta property="al:ios:url" content="https://itunes.apple.com/kr/app/id1527733782?mt=8">
61		<meta property="al:ios:app_store_id" content="1527733782">
62		<meta property="al:ios:app_name" content="캠핑 1등 플랫폼 땡큐캠핑">
63		
64		<meta name="naver-site-verification" content="523728cff4137740c25d193223588981ab353b03" />
65		
66		<link rel="canonical" href="https://m.thankqcamping.com/">
67		<meta name="twitter:card" content="summary_large_image">
68		<meta name="twitter:title" content="캠핑 1등 플랫폼 땡큐캠핑">
69		<meta name="twitter:description" content="국내 오토캠핑 글램핑 카라반 등 이벤트 캠핑여행상품을 지금 바로 실시간으로 예약하세요.">
70		<meta name="twitter:image" content="https://m.thankqcamping.com/images/thankq_main.png">
71		<meta name="twitter:domain" content="https://m.thankqcamping.com/">		
72		
72<script type="text/javascript" src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
72
73		
73<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=27aa85bb599bbd835014e7a7dd9b7207&libraries=services"></script>
73
74		
74<script type="text/javascript" src="/js/lazyload.js?version=20261001-1"></script>
74
75		
75<script type="text/javascript" src="/js/jquery.mCustomScrollbar.js"></script>
75
76		
76<script type="text/javascript" src="/js/jquery.rwdImageMaps.min.js"></script>
76
77		<!--script type="text/javascript" src="/js/fontawesome/all.min.js"></script-->
78		
78<script language="JavaScript">
79	// HTTP프로토콜 HTTPS로 변경
80	
81	if (document.location.protocol == 'http:') {
82		if (document.location.href.search("/talk/write") < 0 && document.location.href.search("/used/write") < 0) {
83			document.location.href = document.location.href.replace('http:', 'https:');
84		}
85	}
86	
87	var app_yn	= ""
88	var app_os	= ""
89	var app_ver	= "0"
90	var varUA = navigator.userAgent.toLowerCase(); //userAgent 값 얻기
91	var mobileApp = varUA.indexOf("/app/") > -1 ? true : false;
92  if (mobileApp==true && varUA.indexOf('android') > -1) {
93		app_yn = "Y"
94		app_os = "android"
95		app_ver = window.Android.getAppVer()
96  } else if (mobileApp==true && (varUA.indexOf("ios") > -1||varUA.indexOf("iphone") > -1||varUA.indexOf("ipad") > -1||varUA.indexOf("ipod") > -1 )) {
97  	app_yn = "Y"
98		app_os = "ios";
99		if (varUA.indexOf("appver") > -1) {
100			app_ver = varUA.split('appver')[1].substr(0,5).replaceAll('.','')
101		}
102  }
103 	/*
104 	if (app_yn=="Y" && app_ver!="0" && ("/resv/list.hbb"=="/main.hbb" || "/resv/list.hbb"=="/my/main.hbb")) {
105		$.ajax({
106			type: "POST",
107	    url: "/app/ver_sav.hbb",
108	    data:{app_ver:app_ver},
109	    success: onSuccess,
110	    error: onError
111		});
112		function onSuccess(dataobj) {}
113	  function onError() {}	  	
114  }
115  */
116  
117	var app_mem	= ""
118    function goUrl(url,pop_yn,pop_loc) {
119        //if(url.indexOf('https://m.thankqcamping.com')>-1) url=replace(url,'https://m.thankqcamping.com','')
120      
121        var fullUrl = ((url.indexOf('http') > -1) ? '' : $('#site_url').html()) + url;
122        var isInstagramUrl =
123            fullUrl.indexOf('instagram.com') > -1 ||
124            fullUrl.indexOf('www.instagram.com') > -1 ||
125            fullUrl.indexOf('instagr.am') > -1;
126      
127        if(app_yn=='Y') {
128      
129            // 인스타 URL이면 네이티브 앱 호출
130            if (isInstagramUrl) {
131                if (app_os == "android") {
132                    if (typeof Android !== "undefined" && typeof Android.openInstagram === "function") {
133                        Android.openInstagram(fullUrl);
134                        return;
135                    }
136                } else {
137                    goIosAp('openInstagram', fullUrl);
138                    return;
139                }
140            }
141      
142            if(app_ver!="") {
143                //if(parseInt(app_ver) > 18) {
144                    if (pop_yn=='N') {
145                        location.href = fullUrl;
146                    } else {
147                        if (app_os == "android" && parseInt(app_ver) < 49) {
148                            location.href = ((pop_loc!='') ? pop_loc+'://' : '') + fullUrl;
149                        } else {
150                            winOpen(fullUrl,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.');
151                        }
152                    }
153                    /*
154                    if (app_os == "android") {
155                        location.href = ((pop_loc!='')?pop_loc+'://':'') + ((url.indexOf('http')>-1)?'':$('#site_url').html()) + url
156                    } else {
157                        winOpen($('#site_url').html() + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
158                    }
159                    */
160                //} else {
161                //	if(confirm('신규 어플 업데이트를 해주시기 바랍니다.\n이전 버전 사용시 서비스 이용에 오류가 발생할 수 있습니다.\n만약, 업데이트후에도 이 메시지가 나오신다면 폰설정 > 애플리케이션 > 땡큐캠핑 > 저장공간에서 데이터 및 캐시를 삭제후 다시 이용해 보시기 바랍니다.')) {
162                //		location.href = 'market://details?id=com.habb.thankq'
163                //	} else {
164                //		if(pop_yn=='Y') {
165                //			winOpen($('#site_url').html() + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
166                //		} else {
167                //			location.href = $('#site_url').html() + url
168                //		}
169                //	}
170                //}
171            } else {
172                location.href = fullUrl;
173                /*
174                if (app_os == "android") {
175                    location.href = ((pop_loc!='')?pop_loc+'://':'') + ((url.indexOf('http')>-1)?'':$('#site_url').html()) + url
176                } else {
177                    winOpen($('#site_url').html() + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
178                }
179                */
180            }
181        } else {
182            if(pop_yn=='Y') {
183                //if(pop_loc=="pop") {
184                    winOpen(url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.');
185                //} else {
186                //	location.href = url
187                //}
188            } else {
189                location.href = url;
190            }
191        }
192    }
193	function goShopUrl(url,pop_yn,pop_loc) {
194		if(app_yn=='Y') {
195			if(app_ver!="") {
196				//if(parseInt(app_ver) > 18) {
197					if (app_os == "android" && parseInt(app_ver) < 49) {
198						location.href = ((pop_loc!='')?pop_loc+'://':'') + ((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url
199					} else {
200						winOpen(((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
201					}
202				//} else {
203				//	if(confirm('신규 어플 업데이트를 해주시기 바랍니다.\n이전 버전 사용시 서비스 이용에 오류가 발생할 수 있습니다.\n만약, 업데이트후에도 이 메시지가 나오신다면 폰설정 > 애플리케이션 > 땡큐캠핑 > 저장공간에서 데이터 및 캐시를 삭제후 다시 이용해 보시기 바랍니다.')) {
204				//		location.href = 'market://details?id=com.habb.thankq'
205				//	} else {
206				//		if(pop_yn=='Y') {
207				//			winOpen(((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
208				//		} else {
209				//			location.href = ((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url
210				//		}
211				//	}
212				//}
213			} else {
214				if (app_os == "android" && parseInt(app_ver) < 49) {
215					location.href = ((pop_loc!='')?pop_loc+'://':'') + ((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url
216				} else {
217					winOpen($('#shop_url').html() + url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
218				}
219			}
220		} else {
221			url = ((url.indexOf('http')>-1)?'':$('#shop_url').html()) + url
222			if(pop_yn=='Y') {
223				//if(pop_loc=="pop") {
224					winOpen(url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
225				//} else {
226				//	location.href = url
227				//}
228			} else {
229				location.href = url
230			}
231		}
232	}
233	function goResAppUrl(url,app_yn,app_os) {
234		if (app_yn=="Y") {
235			if (app_os=="android" && parseInt(app_ver) < 49) {
236				location.href = url
237			} else {
238				winOpen(url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
239			}
240		} else {
241			winOpen(url,1,'팝업차단기능이 설정되어 있습니다.\n차단해제후 다시 이용해 주십시오.')
242		}	
243	}	
244	function appPopReload(pop_loc) {
245		if(parseInt(app_ver) >= 23 && pop_loc!='') {
246			appPopReloadAp()
247			//window.Android.popReload(pop_loc);
248		} else {
249			appPopReloadAp()
250		}
251	}
252	
253	//앱리로드
254	function appPopReloadAp() {
255		if(app_os=="android") {
256			window.Android.pop_reload();
257		} else {
258			goIosAp('pop_reload','')
259		}
260	}
261
262	//캠핑장 상세보기
263	function cback(cseq) {
264		goUrl('/resv/view.hbb?cseq='+cseq,'Y','pop')
265	}
266	//캠핑장 상세보기
267	function goCampView(cseq,res_dt) {
268		goUrl('/resv/view.hbb?cseq='+cseq+'&res_dt='+res_dt,'N','pop')
269	}
270
271	//캠핑장 실시간예약
272	function goRes() {
273		var frm = document.campForm
274		var campseq = frm.cseq.value
275		var res_dt	= frm.res_dt.value
276		var res_edt	= frm.res_edt.value
277		var region 	= frm.region.value
278		var site_tp	= frm.site_tp.value
279		var tema	= frm.tema.value
280		var keyword	= frm.keyword.value
281		var disc_yn	= frm.disc_yn.value
282		var camp_tp	= frm.camp_tp.value
283		var page	= frm.page_num.value
284		var reseventseq	= frm.reseventseq.value
285		var couponId = frm.couponId.value
286		var ser_res_days = frm.res_days.value
287
288		$.ajax({
289			type: "POST",
290	    url: "/resv/axCampResVerUrl.hbb",
291	    data:{campseq:campseq},
292	    success: onSuccess,
293	    error: onError
294		});
295		function onSuccess(dataobj) {	
296			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&res_dt="+res_dt+"&res_edt="+res_edt+"&ser_res_days="+ser_res_days+"&thankq_app="+app_yn+"&thankq_yn=Y&reseventseq="+reseventseq+"&partnseq=&partnmemseq=&site_tp="+site_tp+"&couponId="+couponId;
297			if (app_yn!="Y") url += "&res_path=HM"
298			goResAppUrl(url,app_yn,app_os)
299	  }
300	  function onError() {}	
301	}
302
303	//캠핑장 실시간예약
304	function goResStep(campseq, campsiteseq, res_dt) {
305		$.ajax({
306			type: "POST",
307	    url: "/resv/axCampResVerUrl.hbb",
308	    data:{campseq:campseq},
309	    success: onSuccess,
310	    error: onError
311		});
312		function onSuccess(dataobj) {
313			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&campsiteseq="+campsiteseq+"&res_dt="+res_dt+"&thankq_app="+app_yn+"&thankq_yn=Y"
314			if (app_yn!="Y") url += "&res_path=HM"
315			goResAppUrl(url,app_yn,app_os)
316	  }
317	  function onError() {}	
318	}
319
320	//캠핑장 실시간예약
321	function goResStepDays(campseq, campsiteseq, res_dt, res_edt, res_days) {
322		//캠핑장 실시간예약
323		var frm = document.form
324		var temporary_yn = frm.temporary_yn.value
325		var wg_pass = frm.wg_pass.value
326		if (frm.betatest_yn.value=='Y') {
327			var rfrm = document.resform
328			$.ajax({
329				type: "POST",
330		    url: "/booking/axCampResUrl.hbb",
331			data:{campseq:campseq,campsiteseq:campsiteseq,res_dt:res_dt,res_edt:res_edt,res_days:res_days},
332		    success: onSuccess,
333		    error: onError
334			});
335			function onSuccess(dataobj) {
336				var url = dataobj.split('?')[0]
337        var res_path = dataobj.split('?')[1]
338        if (res_path=="") res_path = (app_yn=="Y")?"MO":"HM"
339        var enter_path = dataobj.split('?')[2]
340        $('#resform').empty()
341				$('#resform').append("<input type='hidden' name='campseq' value='"+campseq+"'>")
342				$('#resform').append("<input type='hidden' name='campsiteseq' value='"+campsiteseq+"'>")
343				$('#resform').append("<input type='hidden' name='res_dt' value='"+res_dt+"'>")
344				$('#resform').append("<input type='hidden' name='res_edt' value='"+res_edt+"'>")
345				$('#resform').append("<input type='hidden' name='res_days' value='"+res_days+"'>")
346				$('#resform').append("<input type='hidden' name='res_path' value='"+res_path+"'>")
347				$('#resform').append("<input type='hidden' name='enter_path' value='"+enter_path+"'>")
348				$('#resform').append("<input type='hidden' name='temporary_yn' value='"+temporary_yn+"'>")
349				$('#resform').append("<input type='hidden' name='wg_pass' value='"+wg_pass+"'>")
350				//goUrl(url+'?campseq='+campseq+'&campsiteseq='+campsiteseq+'&res_dt='+res_dt+'&res_edt='+res_edt+'&res_days='+res_days+'&res_path='+res_path+'&enter_path='+enter_path+'&temporary_yn='+temporary_yn+'&wg_pass='+wg_pass,'Y','pop3');
351				document.resform.action = url
352				document.resform.submit()
353		  }
354		  function onError() {}	
355		} else {
356			//캠핑장 실시간예약
357			var frm = document.form
358			$.ajax({
359				type: "POST",
360		    url: "/resv/axCampResUrl.hbb",
361		    data:{campseq:campseq,campsiteseq,res_dt:res_dt,res_edt:res_edt,res_days:res_days},
362		    success: onSuccess,
363		    error: onError
364			});
365			function onSuccess(dataobj) {
366				// var url = dataobj + '&temporary_yn='+temporary_yn
367				// if (app_yn!="Y" && url.indexOf('res_path') < 0) url += "&res_path=HM"
368				// goResAppUrl(url,app_yn,app_os)
369				var url = dataobj.split('?')[0]
370        var res_path = dataobj.split('?')[1]
371        if (res_path=="") res_path = (app_yn=="Y")?"MO":"HM"
372        var enter_path = dataobj.split('?')[2]
373        var access_token = dataobj.split('?')[3]
374        var imseq = ""
375        if (access_token=="") imseq = dataobj.split('?')[4]
376        $('#resform').empty()
377        $('#resform').append("<input type='hidden' name='campseq' value='"+campseq+"'>")
378        $('#resform').append("<input type='hidden' name='campsiteseq' value='"+campsiteseq+"'>")
379        $('#resform').append("<input type='hidden' name='res_dt' value='"+res_dt+"'>")
380        $('#resform').append("<input type='hidden' name='res_edt' value='"+res_edt+"'>")
381        $('#resform').append("<input type='hidden' name='ser_res_days' value='"+res_days+"'>")
382        $('#resform').append("<input type='hidden' name='res_path' value='"+res_path+"'>")
383        $('#resform').append("<input type='hidden' name='enter_path' value='"+enter_path+"'>")
384        $('#resform').append("<input type='hidden' name='temporary_yn' value='"+temporary_yn+"'>")
385        $('#resform').append("<input type='hidden' name='access_token' value='"+access_token+"'>")
386        $('#resform').append("<input type='hidden' name='imseq' value='"+imseq+"'>")
387        $('#resform').append("<input type='hidden' name='thankq_yn' value='Y'>")
388        goUrl(url+'?campseq='+campseq+'&campsiteseq='+campsiteseq+'&res_dt='+res_dt+'&res_edt='+res_edt+'&ser_res_days='+res_days+'&res_path='+res_path+'&enter_path='+enter_path+'&temporary_yn='+temporary_yn+'&access_token='+access_token+'&imseq='+imseq+'&thankq_yn=Y','Y','pop3');
389        //document.resform.action = url
390        //document.resform.submit()
391		  }
392		  function onError() {}	
393		}
394	}
395
396	//캠핑장 실시간예약
397	function goResStepDaysNoti(campseq, campsiteseq, res_dt, res_edt, res_days) {
398		//캠핑장 실시간예약
399		var frm = document.form
400		var temporary_yn = frm.temporary_yn.value
401		if (frm.betatest_yn.value=='Y') {
402		    $('#loading').show();
403			var rfrm = document.resform
404			$.ajax({
405				type: "POST",
406		    url: "/booking/axCampResUrl.hbb",
407		    success: onSuccess,
408		    error: onError
409			});
410			function onSuccess(dataobj) {
411				var url = dataobj.split('?')[0]
412                var res_path = dataobj.split('?')[1]
413                if (res_path=="") res_path = (app_yn=="Y")?"MO":"HM"
414                var enter_path = dataobj.split('?')[2]
415                $('#resform').empty()
416				$('#resform').append("<input type='hidden' name='campseq' value='"+campseq+"'>")
417				$('#resform').append("<input type='hidden' name='campsiteseq' value='"+campsiteseq+"'>")
418				$('#resform').append("<input type='hidden' name='res_dt' value='"+res_dt+"'>")
419				$('#resform').append("<input type='hidden' name='res_edt' value='"+res_edt+"'>")
420				$('#resform').append("<input type='hidden' name='res_days' value='"+res_days+"'>")
421				$('#resform').append("<input type='hidden' name='res_path' value='"+res_path+"'>")
422				$('#resform').append("<input type='hidden' name='enter_path' value='"+enter_path+"'>")
423				$('#resform').append("<input type='hidden' name='temporary_yn' value='"+temporary_yn+"'>")
424				document.resform.action = url
425				document.resform.submit()
426		  }
427		  function onError() { $('#loading').hide(); }	
428		} else {
429			//캠핑장 실시간예약
430			var frm = document.form
431			$.ajax({
432				type: "POST",
433		    url: "/resv/axCampResUrl.hbb",
434		    data:{campseq:campseq,campsiteseq,res_dt:res_dt,res_edt:res_edt,res_days:res_days},
435		    success: onSuccess,
436		    error: onError
437			});
438			function onSuccess(dataobj) {
439				// var url = dataobj + '&temporary_yn='+temporary_yn
440				// if (app_yn!="Y" && url.indexOf('res_path') < 0) url += "&res_path=HM"
441				// goResAppUrl(url,app_yn,app_os)
442				var url = dataobj.split('?')[0]
443        var res_path = dataobj.split('?')[1]
444        if (res_path=="") res_path = (app_yn=="Y")?"MO":"HM"
445        var enter_path = dataobj.split('?')[2]
446        var access_token = dataobj.split('?')[3]
447        var imseq = ""
448        if (access_token=="") imseq = dataobj.split('?')[4]
449        $('#resform').empty()
450        $('#resform').append("<input type='hidden' name='campseq' value='"+campseq+"'>")
451        $('#resform').append("<input type='hidden' name='campsiteseq' value='"+campsiteseq+"'>")
452        $('#resform').append("<input type='hidden' name='res_dt' value='"+res_dt+"'>")
453        $('#resform').append("<input type='hidden' name='res_edt' value='"+res_edt+"'>")
454        $('#resform').append("<input type='hidden' name='ser_res_days' value='"+res_days+"'>")
455        $('#resform').append("<input type='hidden' name='res_path' value='"+res_path+"'>")
456        $('#resform').append("<input type='hidden' name='enter_path' value='"+enter_path+"'>")
457        $('#resform').append("<input type='hidden' name='temporary_yn' value='"+temporary_yn+"'>")
458        $('#resform').append("<input type='hidden' name='access_token' value='"+access_token+"'>")
459        $('#resform').append("<input type='hidden' name='imseq' value='"+imseq+"'>")
460        $('#resform').append("<input type='hidden' name='thankq_yn' value='Y'>")
461        document.resform.action = url
462        document.resform.submit()
463		  }
464		  function onError() {}	
465		}
466		window.addEventListener('pageshow', function(e) {
467            $('#loading').hide();
468        });
469        window.addEventListener('popstate', function() {
470            $('#loading').hide();
471        });
472	}
473	
474	//캠핑장 예약바로가기
475	function goResDirect(seq,dt,days) {
476		var url = '/resv/view.hbb?cseq='+seq+(dt!=''&&typeof dt!='undefined'?'&res_dt='+dt:'')+(days!=''&&typeof days!='undefined'?'&ser_res_days='+days:'')+(dt
476!=''&&typeof dt!='undefined'?'#booking_dt':'')
477		location.href = url
478		/*
479		$.ajax({
480			type: "POST",
481	    url: "/resv/axCampResVerUrl.hbb",
482	    data:{campseq:seq},
483	    success: onSuccess,
484	    error: onError
485		});
486		function onSuccess(dataobj) {	
487			var url = dataobj+"/thankQRes.hbb?campseq="+seq+"&thankq_app="+app_yn+"&thankq_yn=Y&partnseq=&partnmemseq=";
488			if (app_yn!="Y") url += "&res_path=HM"
489			goResAppUrl(url,app_yn,app_os)
490	  }
491	  function onError() {}			
492	  */
493	}
494
495	//캠핑장 예약바로가기
496	function goResDirectDt(seq,dt,edt) {
497		var url = '/resv/view.hbb?cseq='+seq+(dt!=''&&typeof dt!='undefined'?'&res_dt='+dt:'')+(edt!=''&&typeof edt!='undefined'?'&res_edt='+edt:'')+(dt!=''&&typeof dt!='undefined'?'#booking_dt':'')
498		location.href = url
499		/*
500		$.ajax({
501			type: "POST",
502	    url: "/resv/axCampResVerUrl.hbb",
503	    data:{campseq:seq},
504	    success: onSuccess,
505	    error: onError
506		});
507		function onSuccess(dataobj) {	
508			var url = dataobj+"/thankQRes.hbb?campseq="+seq+"&thankq_app="+app_yn+"&thankq_yn=Y&partnseq=&partnmemseq=";
509			if (app_yn!="Y") url += "&res_path=HM"
510			goResAppUrl(url,app_yn,app_os)
511	  }
512	  function onError() {}			
513	  */
514	}
515
516	//캠핑장 예약바로가기
517	function goMemResDirect(seq) {
518		
519	  	alert('회원로그인후 예약하실 수 있습니다.');	
520	  
521	}
522
523	//캠핑장 예약바로가기
524	function goResEmpty(seq,emptyseq) {
525		$.ajax({
526			type: "POST",
527	    url: "/resv/axCampResVerUrl.hbb",
528	    data:{campseq:seq},
529	    success: onSuccess,
530	    error: onError
531		});
532		function onSuccess(dataobj) {	
533			var url = dataobj+"/thankQRes.hbb?campseq="+seq+"&emptyseq="+emptyseq+"&thankq_app="+app_yn+"&thankq_yn=Y&partnseq=&partnmemseq=";
534			if (app_yn!="Y") url += "&res_path=HM"
535			goResAppUrl(url,app_yn,app_os)
536	  }
537	  function onError() {}			
538	}
539	
540	//캠핑장 실시간예약
541	function goResStep2(campseq, campsiteseq) {
542		var frm = document.form
543		var res_dt	= frm.res_dt.value
544		var region 	= frm.region.value
545		var site_tp	= frm.site_tp.value
546		var tema	= frm.tema.value
547		var keyword	= frm.keyword.value
548		var disc_yn	= frm.disc_yn.value
549		var camp_tp	= frm.camp_tp.value
550		var page	= frm.page_num.value
551		var reseventseq	= frm.reseventseq.value
552		var couponId = frm.couponId.value
553		var res_url = res_dt+"$"+region+"$"+site_tp+"$"+tema+"$"+keyword+"$"+disc_yn+"$"+camp_tp+"$"+page
554
555		$.ajax({
556			type: "POST",
557	    url: "/inc/axCampResVerUrl.hbb",
558	    data:{campseq:campseq},
559	    success: onSuccess,
560	    error: onError
561		});
562		function onSuccess(dataobj) {
563			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&campsiteseq="+campsiteseq+"&res_dt="+res_dt+"&thankq_app="+app_yn+"&thankq_yn=Y&reseventseq="+reseventseq+"&partnseq=&partnmemseq=&site_tp="+site_tp+"&couponId="+couponId;
564			if (app_yn!="Y") url += "&res_path=HM"
565			goResAppUrl(url,app_yn,app_os)
566	  }
567	  function onError() {}	
568	}
569	
570	//캠핑장 이벤트예약
571	function goResEvent(cseq) {
572		var frm = document.form
573		var campseq = cseq
574		var res_dt	= frm.res_dt.value
575		var region 	= frm.region.value
576		var site_tp	= frm.site_tp.value
577		var tema	= frm.tema.value
578		var keyword	= frm.keyword.value
579		var disc_yn	= frm.disc_yn.value
580		var camp_tp	= frm.camp_tp.value
581		var page	= frm.page_num.value
582		var reseventseq	= frm.reseventseq.value
583		var res_url = res_dt+"$"+region+"$"+site_tp+"$"+tema+"$"+keyword+"$"+disc_yn+"$"+camp_tp+"$"+page
584		$.ajax({
585			type: "POST",
586	    url: "/inc/axCampResVerUrl.hbb",
587	    data:{campseq:campseq},
588	    success: onSuccess,
589	    error: onError
590		});
591		function onSuccess(dataobj) {	
592			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&res_dt="+res_dt+"&thankq_app="+app_yn+"&thankq_yn=Y&reseventseq="+reseventseq
593			if (app_yn!="Y") url += "&res_path=HM"
594			goResAppUrl(url,app_yn,app_os)
595	  }
596	  function onError() {}	
597	}
598
599	//캠핑장 실시간예약
600	function goResPop(cseq) {
601		var campseq = cseq
602		var res_dt	= document.form.res_dt.value
603		var region 	= document.form.region.value
604		var site_tp	= document.form.site_tp.value
605		var tema	= document.form.tema.value
606		var keyword	= document.form.keyword.value
607		var disc_yn	= document.form.disc_yn.value
608		var camp_tp	= document.form.camp_tp.value
609		var page	= document.form.page_num.value
610		var res_url = res_dt+"$"+region+"$"+site_tp+"$"+tema+"$"+keyword+"$"+disc_yn+"$"+camp_tp+"$"+page
611		$.ajax({
612			type: "POST",
613	    url: "/inc/axCampResVerUrl.hbb",
614	    data:{campseq:campseq},
615	    success: onSuccess,
616	    error: onError
617		});
618		function onSuccess(dataobj) {	
619			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&res_dt="+res_dt+"&thankq_app="+app_yn+"&thankq_yn=Y"
620			if (app_yn!="Y") url += "&res_path=HM"
621			goResAppUrl(url,app_yn,app_os)
622	  }
623	  function onError() {}	
624	}
625
626	//캠핑장 예약확인
627	function goResView(campseq,reserveseq,status,page,page_k) {
628		var res_url = "myResList$"+status+"$"+page+"$"+page_k
629		$.ajax({
630			type: "POST",
631	    url: "/resv/axCampResVerUrl.hbb",
632	    data:{campseq:campseq},
633	    success: onSuccess,
634	    error: onError
635		});
636		function onSuccess(dataobj) {	
637			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&reserveseq="+reserveseq+"&thankq_app="+app_yn+"&thankq_rurl="+res_url+"&thankq_yn=Y"
638			if (app_yn!="Y") url += "&res_path=HM"
639			goResAppUrl(url,app_yn,app_os)
640	  }
641	  function onError() {}	
642	}
643	//캠핑장 예약확인
644	function goResCertView(campseq,reserveseq,status,rnd_num) {
645		$.ajax({
646			type: "POST",
647	    url: "/resv/axCampResVerUrl.hbb",
648	    data:{campseq:campseq},
649	    success: onSuccess,
650	    error: onError
651		});
652		function onSuccess(dataobj) {	
653			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&reserveseq="+reserveseq+"&thankq_app="+app_yn+"&rnd_num="+rnd_num+"&thankq_yn=Y"
654			if (app_yn!="Y") url += "&res_path=HM"
655			goResAppUrl(url,app_yn,app_os)
656	  }
657	  function onError() {}	
658	}
659	//캠핑장 장박예약확인
660	function goResLongView(campseq,reslongseq,status,page,page_k) {
661		var res_url = "myResList$"+status+"$"+page+"$"+page_k
662		$.ajax({
663			type: "POST",
664	    url: "/inc/axCampResVerUrl.hbb",
665	    data:{campseq:campseq},
666	    success: onSuccess,
667	    error: onError
668		});
669		function onSuccess(dataobj) {	
670			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&reslongseq="+reslongseq+"&thankq_app="+app_yn+"&thankq_rurl="+res_url+"&thankq_yn=Y"
671			if (app_yn!="Y") url += "&res_path=HM"
672			goResAppUrl(url,app_yn,app_os)
673	  }
674	  function onError() {}	
675	}
676		
677	//이벤트 쇼핑몰 호출
678	function goShopPop(gseq) {
679		location.href= 'https://m.shop.thankqcamping.com/shopMain.hbb?ser_good_id='+gseq
680
681	}
682          
683	//하단메뉴 검색
684	function Bmenu(url) {
685		$("#Lmnu").html('<div class="modal-dialog"><div class="modal-content"><div id="spinner_pop"></div></div></div>');
686		//$("#spinner_pop").show();
687		location.href = url
688	}
689	
690	//모달창 닫기
691	function modalClose() {
692		$(".close").click();
693	}
694
695	//파트너 회원로그인
696	function partnLoginAp() {	
697			var frm = document.loginForm
698			
699			if(frm.h_telno.value=="") {
700				alert("휴대폰번호를 입력해주세요.")
701				frm.h_telno.focus()
702				return
703			} else
704			if(frm.pwd.value=="") {
705				alert("비밀번호를 입력해주세요.")
706				frm.pwd.focus()
707				return
708			} else {
709				//frm.ret_url.value = encodeURIComponent(frm.ret_url.value)
710				frm.action = "https://m.thankqcamping.com/join/login_ok.hbb"
711				frm.target = "job"
712				frm.submit();		
713			}	   
714	}
715	
716	//배너노출
717	function axBannerViewCount(c) {
718		if ($("#BN"+c)) {
719			if($("#BN"+c).html().indexOf("B") > -1 && $("#Lmnu").attr('class').indexOf('in') < 0) {
720				$.ajax({
721					type: "POST",
722			    url: "/inc/axBannerViewCount.hbb",
723			    data:{ seq:$("#BN"+c).html().replace("B","") },
724			    success: onSuccess,
725			    error: onError
726				});		
727				function onSuccess(dataobj) {}
728			  function onError() {}				
729			}
730		}
731	}
732	//모달 페이지 이동
733	function goModalReUrl(url) {
734		goUrl(url,'Y','pop')
735	}
736
737	//먹거리구매 상세확인
738	function goResGoodView(campseq,resgoodseq) {
739		$.ajax({
740			type: "POST",
741	    url: "/inc/axCampResVerUrl.hbb",
742	    data:{campseq:campseq},
743	    success: onSuccess,
744	    error: onError
745		});
746		function onSuccess(dataobj) {	
747			var url = dataobj+"/thankQRes.hbb?campseq="+campseq+"&resgoodseq="+resgoodseq+"&thankq_app="+app_yn+"&thankq_yn=Y"
748			if (app_yn!="Y") url += "&res_path=HM"
749			goResAppUrl(url,app_yn,app_os)
750	  }
751	  function onError() {}	
752	}
753
754//메인알람
755function mainNoti(id,tit,msg,url) {
756	if(get_cookie("mainNoti_"+id)==null) { 
757		setCookie("mainNoti_"+id, "Y", false)
758		txt = "<div class=\"pop_conts\">"
759		txt += "	<p class=\"txt1\">"+tit+"</p>"
760		txt += "	<p class=\"txt2\">"+msg+"</p>"
761		txt += "</div>"
762		txt += "<span href=\"#\" class=\"sprite btn_layerClose2\" onclick=\"ly_close()\"></span>"
763		txt += "<button type=\"button\" class=\"btn\" onClick=\"ly_close();"+url+"\">바로가기</button>"
764		$('#divMainNoti').html(txt);
765		ly_open();
766	}
767}
768//외부오픈창열기
769function outOpen(url) {
770	if(app_yn=='Y') {
771		if ((app_os=='android' && parseInt(app_ver) < 51) || (app_os=='ios' && parseInt(app_ver) < 38)) {
772			open(url,'_blank','')
773		} else {
774			if(app_os=='ios') {
775				goIosAp('openBrowser',url)
776			} else {
777				try {
778		    	location.href = "blank://" + url
779		    } catch(e) {
780		      open(url,'_blank','')
781		    }
782		  }
783		}
784	} else {
785		open(url,'','')
786	}
787}
788
789</script>
789
790		
790<script src="/js/m_com.js?version=20261001-1"></script>
790
791		
791<script src="/js/m_map.js?version=20261001-1"></script>
791
792		
792<script src="/js/m_sns.js?version=20261001-1"></script>
792
793		
793<script src="/js/join.js?version=20261001-1"></script>
793
794		
794<script src="/js/resv.js?version=20261001-1"></script>
794
795		
795<script src="/js/talk.js?version=20261001-1"></script>
795
796		
796<script src="/js/cs.js?version=20261001-1"></script>
796
797		
797<script src="/js/coupon.js?version=20261001-1"></script>
797
798		
798<script src="/js/iscroll.js?version=20261001-1"></script>
798
799		
799<script src="/js/my.js?version=20261001-1"></script>
799
800		
800<script src="/js/trans.js?version=20261001-1"></script>
800
801		
802		
802<script>
vendor: 343 bytes, lines 802-807
802
803		(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
804		(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
805		m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
806		})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
807		ga('create', '
807UA-64792179-1
vendor: 42 bytes, lines 807-809
807', 'auto');
808		ga('send', 'pageview');
809		
809//document.ondragstart = new Function('return false');     // 드래그 방지
810		//document.onselectstart = new Function('return false');   // 선택 방지
811		//document.oncontextmenu = new Function('return false');   // 선택 방지
812		</script>
812
813		<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 67 bytes, lines 813-814
813
814		<script async src="https://www.googletagmanager.com/gtag/js?id=
814G-EZH75RFPSZ
vendor: 15 bytes, lines 814-815
814"></script>
815		
815<script>
816		  
vendor: 142 bytes, lines 816-819
816window.dataLayer = window.dataLayer || [];
817		  function gtag(){dataLayer.push(arguments);}
818		  gtag('js', new Date());
819		  gtag('config', '
819G-EZH75RFPSZ
vendor: 7 bytes, lines 819-820
819');
820		
820</script>
820
821	  <!-- Google tag (gtag.js) -->
822	  
822<script async src="https://www.googletagmanager.com/gtag/js?id=GTM-5WNWZSZ"></script>
822
823	  
823<script>
824	    window.dataLayer = window.dataLayer || [];
825	    function gtag(){dataLayer.push(arguments);}
826	    gtag('js', new Date());
827	    gtag('config', 'GTM-5WNWZSZ');
828	  </script>
828		
829      <!-- 봇 매니저 -->
830      
830<script src="https://cdn-botmanager.stclab.com/agents/client/javascript/botmanager-browser-agent.js" async></script>
830
831    
831<script>
832        (function (cfg) {
833            cfg.tenantId = 'TN251104-8C1A44EC';
834            cfg.domainName = 'thankqcamping.com';
835            cfg.customId = '';
836            cfg.serverUrl = 'https://botmanager.stclab.com/api/v1/macro';
837        })(window['BotManager-config'] || (window['BotManager-config'] = {}));
838    </script>
838
839		<style>
840		body { background: #f9f9f9; }
841		</style>
842</head>
843<div id="loading"><img id="loading-image" src="/images/loading.svg" alt="Loading..." /></div>
844<div id="site_url" style="display:none;">https://m.thankqcamping.com</div>
845<div id="shop_url" style="display:none;">https://m.thankqcamping.com</div>
846<iframe name="job" width="0" height="0" style="display:none;"></iframe>
847<form name="logoutForm" method="post">
848<input type="hidden" name="reurl" value="https://m.thankqcamping.com/join/logout.hbb">
849</form>
850<form name="nearbyform" method="post">
851<input type="hidden" name="mem_lat">
852<input type="hidden" name="mem_lng">
853<input type="hidden" name="nearby" value="Y">
854</form>
855<script>
856document.addEventListener("DOMContentLoaded", function(){
857    if(app_yn != "Y"){
858        // 앱 유도 QR 코드 추가
859        const newDiv = document.createElement("div");
860        newDiv.classList.add("background_content");
861        
862        newDiv.innerHTML = `
863            <div class="content_group">
864                <a href="#">
865                    <img src="/images/deep_qr.svg" alt="딥링크 QR" class="img_qr">
866                    <img src="/images/deep_logo.png" alt="LOGO" class="img_logo">
867                </a>
868                <div class="text_box">
869                    <p>앱을 설치하면<br>더 많은 혜택을<br>받아 볼 수 있어요!</p>
870                    <span>카메라로 QR코드를 스캔해보세요</span>
871                </div>
872            </div>
873        `;
874        
875        const firstChild = document.getElementById("wrap").firstChild;
876        document.getElementById("wrap").insertBefore(newDiv, firstChild);
877    }
878})
879</script>
879
880<!-- poplayer -->
881<div id="popup_alert" class="modal_wrap wd_auto">
882  <div class="modal_center">
883    <div class="md_cont"><p></p></div>
884    <!-- 버튼2개일때 md_button에 클래스 type2 추가 -->
885    <div class="md_button">
886      <button class="btn_ok" type="button" onclick="action_popup.close('#popup_alert')">확인</button>
887    </div>
888  </div>
889</div>
890<div id="popup_succ_alert" class="modal_wrap wd_auto type2">
891  <!-- 룰렛 당첨시 modal_center bg_fire 추가-->
892  <div id="succ_modal_center" class="modal_center">
893    <div class="md_cont">
894      <p id="succ_alert_tit" class="title fwb"></p>
895      <p id="succ_alert_cont" class="box">
896      </p>
897    </div>
898    <!-- 버튼2개일때 md_button에 클래스 type2 추가 -->
899    <div class="md_button">
900      <button class="btn_succ_ok" type="button" onclick="action_popup.close('#popup_succ_alert')">확인</button>
901    </div>
902  </div>
903</div>
904<div id="popup_confirm" class="modal_wrap wd_auto">
905  <div class="modal_center">
906    <div class="md_cont"><p></p></div>
907    <!-- 버튼2개일때 md_button에 클래스 type2 추가 -->
908    <div class="md_button type2">
909      <button class="btn_cancel rounded" type="button" onclick="action_popup.close('#popup_confirm')">취소</button>
910      <button class="btn_confirm_ok rounded" type="button" onclick="action_popup.close('#popup_confirm')">확인</button>
911    </div>
912  </div>
913</div>
914<!-- poplayer -->
915<div class="pop_noti_set pop_txt_set modal_wrap" id="pop_ad_notice">
916  <div class="modal_center">
917    <div class="pop_noti on">
918      <p class="tit fwb pt0"></p>
919      <p class="btm_border"></p>
920    </div>
921    <div class="md_button">
922      <button type="button" class="btn_gray" onClick="action_popup.close('#pop_ad_notice')">확인</button>
923    </div>
924  </div>
925  <!-- <div class="modal"></div> -->
926</div>
927<div id="popup_modal" class="modal_wrap wd_auto">
928  <div class="modal_center">
929    <div class="md_cont"><p></p></div>
930    <!-- 버튼2개일때 md_button에 클래스 type2 추가 -->
931    <div class="md_button">
932      <button class="btn_confirm_ok rounded" type="button" onclick="action_popup.close('#popup_modal')">확인</button>
933    </div>
934  </div>
935</div>
936<div class="pop_layer_set" id="pop_toast_noti">
937  <div class="pop_layer recent_layer incart_layer" style="z-index: 800">
938    <p class="inmycart" id="toast_txt"></p>
939  </div>
940</div>
941<div class="pop_layer_set" id="pop_floating_noti">
942  <div class="pop_layer recent_layer incart_layer" style="z-index: 800">
943    <p class="floating-button" id="floating_txt"></p>
944  </div>
945</div>
946<!-- 기본 모달 popup -->
947<div class="pop_wp" id="pop_modal">
948  <div class="pop_layer_set pop_noti_set on">
949    <div id="modal_detail" class="pop_layer recent_layer dome_layer"></div>
950    <div class="modal" style="display: block"></div>
951  </div>
952</div>
953<!-- //기본 모달 popup -->
954
955<script>
956function getResList(){
957	
958}
959function clkSerKeyCd(cd) {
960	$("li[id^='LiKeySub']").hide()
961	$("li[id^='LiKeySubALL']").hide()
962	$("li[id^='LiKeySub"+cd+"']").show()
963	$("input:checkbox[id^='chk_ser_sub_key']").prop('checked',false)
964}
965function showSortMent(tp) {
966	$("span[id^='sort_ment_']").hide()
967	$("span[id^='sort_ment_"+tp+"']").show()
968}
969</script>
969
970
971<body ioncontextmenu="if (!window.__cfRLUnblockHandlers) return false; return!1" ondragstart="if (!window.__cfRLUnblockHandlers) return false; return!1" onselectstart="if (!window.__cfRLUnblockHandlers) return false; return!1">
972<header>
973  <section class="seo-text">
974    <h1>오토캠핑</h1>
975  </section>
976</header>
977<form name="form" method="post">
978<input type="hidden" id="res_dt" name="res_dt" value="">
979<input type="hidden" name="res_edt" value="">
980<input type="hidden" name="region" value="">
981<input type="hidden" name="region_all" value="">
982<input type="hidden" name="sub_region" value="">
983<input type="hidden" name="disp_site_tp" value="">
984<input type="hidden" name="tema" value="">
985<input type="hidden" name="camp_tp" value="">
986<input type="hidden" name="partnseq" value="">
987<input type="hidden" name="page_num" value="1">
988<input type="hidden" name="res_url">
989<input type="hidden" name="res_back" value="">
990<input type="hidden" name="tq_push_yn" value="">
991<input type="hidden" name="tq_loc_yn" value="">
992<input type="hidden" name="thankq_app" value="">
993<input type="hidden" name="reseventseq" value="">
994<input type="hidden" name="login_loc" value="">
995<input type="hidden" name="couponId" value="">
996<input type="hidden" name="pre_url" value="list.hbb">    
997<input type="hidden" name="ser_st" value="N">
998<input type="hidden" name="mem_lat" value="">
999<input type="hidden" name="mem_lng" value="">
1000<input type="hidden" name="nearby" value="">
1001<input type="hidden" name="ser_res_dt" value="">
1002<input type="hidden" name="ser_res_edt" value="">
1003<input type="hidden" name="ser_res_days" value="">
1004<input type="hidden" name="ser_keyword" value="">
1005<input type="hidden" name="ser_festa_gbn" value="">
1006<input type="hidden" name="ser_camp_spec_list" value="">
1007<input type="hidden" name="ser_list_title" value="">
1008
1009    <div class="wrap pdb0" id="wrap">
1010        <div class="wrap_in">
1011						
1012			
1013            <div class="head">
1014                <div class="head_in">
1015					
1016                    <a href="javascript:popClose('');" class="btn_back">back</a>
1017                    
1018					<div class="search_div" id="top_search_input">
1019						<span class="icon_search"></span>
1020						<div class="text_g"><span class="text">지역ㆍ날짜ㆍ인원으로 숙소 검색</span></div>
1021						<!-- <div class="text_g"><span class="text">검색어ㆍmm.dd~mm.dd (n박)ㆍ성인2/소인1</span></div> -->
1022					</div>
1023					
1024
1025					<!-- 메인에서만 노출 -->
1026					
1027                    <a class="btn_menu" onClick="r_menu('');" style="display:none;">menu</a>
1028                    
1028<script>
1029                    	$(document).ready(function(){
1030                    	    const close = ''
1031							if(!opener && close != 'True') {
1032								$('.btn_menu').show()
1033							}
1034						});
1035                    </script>
1035
1036                    
1037
1038					<!-- 캠톡상세에서만 노출 -->
1039					
1040                </div>
1041            </div><!--// head -->
1042            
1043            
1044<div class="tot_menu">
1045  <div class="tot_menu_in mCscroll">
1046    <div class="log_box">
1047      
1048      <div class="pf_set clear">
1049        <div class="pic"></div>
1050        <div class="txt_box">
1051          <p class="tit1">
1052            <a
1053              href="javascript:location.replace('/join/login.hbb?reurl=%2Fresv%2Flist%2Ehbb%3Fsite%5Ftp%3DBB000');$('.tot_menu .clo').click();">로그인</a>이
1054            필요합니다.
1055          </p>
1056          <p class="txt">Welcome to Q</p>
1057        </div>
1058      </div>
1059      <div class="point_box">
1060        <a href="/join/login.hbb" class="p_div">
1061          <div class="p_div_list">
1062            <div class="p_div_list_value">0</div>
1063            <div class="p_div_list_title">Q-Point</div>
1064          </div>
1065        </a>
1066        <!--a href="/join/login.hbb" class="p_div">
1067          <div class="p_div_list">
1068            <div class="p_div_list_value">0</div>
1069            <div class="p_div_list_title">업체적립금</div>
1070          </div>
1071        </a-->
1072        <a href="/join/login.hbb" class="p_div">
1073          <div class="p_div_list">
1074            <div class="p_div_list_value">0</div>
1075            <div class="p_div_list_title">쿠폰</div>
1076          </div>
1077        </a>
1078        <a href="/join/login.hbb" class="p_div">
1079          <div class="p_div_list">
1080            <div class="p_div_list_value">0</div>
1081            <div class="p_div_list_title">행운룰렛</div>
1082          </div>
1083        </a>
1084      </div>
1085      
1086      <button type="button" class="clo"></button>
1087    </div>
1088    <!-- //log_box -->
1089
1090    <!-- rolling_banner -->
1091    <div class="rolling_banner" onClick="location.href='/roulette/intro.hbb';">
1092      <p class="event_name">새로워진 행운룰렛 이벤트</p>
1093      <div class="rolling_wrap">
1094        <ul>
1095          <li>방문후기 작성하고</li>
1096          <li>출석 체크하고</li>
1097          <li>캠핑장 방문하고</li>
1098          <li>상품 구매하고</li>
1099        </ul>
1100      </div>
1101      <p class="dp_ib"><span class="strong">무료 행운룰렛 이용권</span> 받기</p>
1102    </div>
1103    <!-- //rolling_banner -->
1104    <div class="aside">
1105      <ul class="aside_ul">
1106        <li class="res">
1107          <a href="#n">예약<span class="arr"></span></a>
1108          <div class="m_div" style="display: none">
1109            <ul>
1110              <li><a href="/resv/list.hbb?site_tp=BB000">오토캠핑</a></li>
1111              <li><a href="/resv/list.hbb?site_tp=BB001">글램핑</a></li>
1112              <li><a href="/resv/list.hbb?site_tp=BB002">카라반</a></li>
1113              <li><a href="/resv/list.hbb?site_tp=BB003">펜션</a></li>
1114              <li><a href="/resv/list.hbb?site_tp=BB006&res_dt=20261003&res_edt=20261003">피크닉</a></li>
1115            </ul>
1116          </div>
1117        </li>
1118        <li class="shop">
1119          <a href="#n">쇼핑<span class="arr"></span></a>
1120          <div class="m_div" style="display: none">
1121            <ul>
1122              <li><a href="/shop/index.hbb">쇼핑홈</a></li>
1123              <li><a href="/shop/event.hbb">화요특가</a></li>
1124              <li><a href="/shop/list.hbb?cate=010">캠핑용품</a></li>
1125              <li><a href="/shop/list.hbb?cate=020">먹거리</a></li>
1126              <li style="display: none;"><a href="/shop/brand_list.hbb">브랜드</a></li>
1127              <li><a href="/shop/review_list.hbb">리뷰존</a></li>
1128            </ul>
1129          </div>
1130        </li>
1131        <li class="plan">
1132          <a href="#n">기획전<span class="arr"></span></a>
1133          <div class="m_div" style="display: none">
1134            <ul>
1135              <li><a href="/cs/event.hbb?bbs_gb=AB008">메인기획전</a></li>
1136              <li><a href="/cs/collect.hbb?tp=S">쇼핑기획전</a></li>
1137            </ul>
1138          </div>
1139        </li>
1140        <li class="event">
1141          <a href="/cs/co_event.hbb?bbs_gb=AB017">이벤트</a>
1142        </li>
1143        <li class="camt">
1144          <a href="/talk/list.hbb">캠톡</a>
1145        </li>
1146        
1147        <li class="camt">
1148          <a href="javascript:$('.clo').click();goUrl('/join/non/ser_reservation.hbb','N','');">비회원예약조회</a>
1149        </li>
1150        
1151      </ul>
1152    </div>
1153    <!-- //aside -->
1154
1155    <div class="banner_div" id="banner_HD">
1156      
1157      <!--a href="#n"><img src="/images/banner01.png" alt=""></a-->
1158    </div>
1159
1160    <div class="aside type2">
1161      <ul class="aside_ul">
1162        <li class="cus on">
1163          <div class="m_div">
1164            <ul>
1165              <li><a href="/cs/notice.hbb">공지사항</a></li>
1166              <li><a href="/cs/faq.hbb">자주묻는질문</a></li>
1167              <li><a href="javascript:outOpen('http://about.thankqcamping.com/contact.html');">제휴문의</a></li>
1168              <li><a href="tel:02-6959-5622" id="com_tel">
1168상담원연결</a></li>
1169              
1170            </ul>
1171            <p><span>상담시간 : </span>평일 9:30~18:00 (점심시간 12:30~13:30)</p>
1172          </div>
1173        </li>
1174      </ul>
1175    </div>
1176
1177    
1178
1179    <div class="aside_btns">
1180      <ul>
1181        
1182        <li class="log">
1183          <a
1184            onClick="javascript:location.replace('/join/login.hbb?reurl=%2Fresv%2Flist%2Ehbb%3Fsite%5Ftp%3DBB000');$('.tot_menu .clo').click();">로그인</a>
1185        </li>
1186        <li class="my"><a onClick="javascript:location.href='/join/join.hbb';$('.tot_menu .clo').click();">회원가입</a></li>
1187        
1188      </ul>
1189    </div>
1190  </div>
1191  <!-- //tot_menu_in -->
1192</div>
1193<!-- //tot_menu -->
1194
1195            <div class="container" style="margin-top: 115px;">
1196                 <!--↓↓↓↓↓↓ 컨텐츠 시작 ↓↓↓↓↓↓-->
1197
1198                 <div class="sear_result_con con">
1199				 			
1200<div class="sr_top" id="headFilter">
1201
1202	<div class="sr_condi">
1203		<div style="display: flex;">
1204			<div class="region" id="region_txt" onclick="javascript:goRegionSearch('','','');"  style="display:none; margin-left: 24px; border-radius: 19px; background-color: #f7f7f7;height: 38px; padding: 0 15px; letter-spacing: -0.58px; font-size: 12px; color: #1f1f1f; font-weight: 500; line-height: 37px; text-align: center; width: 90px;">지역선택</div>
1205			<div class="date" id="spnResDtInfo" onClick="javascript:openLayer('pop_date_sel')" style="display:none;margin-left: 8px; border-radius: 19px; background-color: #f7f7f7;height: 38px; padding: 0 15px; letter-spacing: -0.58px; font-size: 12px; color: #1f1f1f; font-weight: 500; line-height: 37px; text-align: center;">
1206				
1207				날짜선택
1208				
1209			</div>
1210
1211			<div>
1212				<div class="swiper-container sr_condi_swiper">
1213					<ul class="swiper-wrapper">
1214					
1215				<li class="swiper-slide " >
1216					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL008">#가평군 숙박세일 페스타</button>
1217				</li>
1218            
1219				<li class="swiper-slide " >
1220					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL013">#가평만원캠핑</button>
1221				</li>
1222            
1223				<li class="swiper-slide " >
1224					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL012">#양평숙박할인쿠폰</button>
1225				</li>
1226            
1227				<li class="swiper-slide festa-last" style="display:none;">
1228					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL007">#국방가족 할인쿠폰</button>
1229				</li>
1230            		
1231                        <li class="swiper-slide">
1232                            <button type="button" class="keyword_button tag_name" name="ser_get_coupon_yn" value="Y">즉시할인</button>
1233                        </li>
1234                        <li class="swiper-slide">
1235                            <button type="button" class="keyword_button tag_name" name="ser_disc_yn" value="Y">할인특가</button>
1236                        </li>
1237                        <li class="swiper-slide">
1238                            <button type="button" class="keyword_button tag_name" name="ser_new_yn" value="Y">신규입점</button>
1239                        </li>		
1240                        <li class="swiper-slide">
1241                            <button type="button" class="keyword_button tag_name" name="ser_kid" value="Y">아이들 놀이시설 구비</button>
1242                        </li>
1243						<li class="swiper-slide">
1244                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BP000">반려동물 동반</button>
1245                        </li>
1246                        <li class="swiper-slide">
1247                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BO006">수목원/휴양림 주변</button>
1248                        </li>
1249                        <li class="swiper-slide">
1250                            <button type="button" class="keyword_button tag_name" name="ser_long_yn" value="Y">장박</button>
1251                        </li>
1252                        <li class="swiper-slide">
1253                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BO003">유유자적 낚시장 주변</button>
1254                        </li>
1255					</ul>
1256				</div>
1257			</div>
1258		</div>
1259
1260	</div>
1261
1262	<div class="filter_cont ">
1263		<div class="swiper-container filter_cont_swiper">
1264			<ul class="swiper-wrapper">
1265				<li class="swiper-slide">
1266					<button type="button" class="btn_filter" id="popFilterButton"></button>
1267				</li>
1268				<li class="swiper-slide">
1269					<div class="filter_name" id="group1_txt" data-value="filter_item1">숙소구분</div>
1270				</li>
1271				<li class="swiper-slide">
1272					<div class="filter_name" id="group2_txt" data-value="filter_item2">검색구분</div>
1273				</li>
1274				<li class="swiper-slide">
1275					<div class="filter_name" id="group3_txt" data-value="filter_item3">숙소환경</div>
1276				</li>
1277				<li class="swiper-slide">
1278					<div class="filter_name" id="group4_txt" data-value="filter_item4">주변환경</div>
1279				</li>
1280				
1281				<li class="swiper-slide">
1282					<div class="filter_name" id="group5_txt" data-value="filter_item5">한줄후기</div>
1283				</li>
1284				
1285			</ul>
1286		</div>
1287	</div>
1288
1289</div>
1290
1291<!-- 필터에 아이콘 XX -->
1292<!-- popup(modal) start -->
1293<div class="pop_layer_set" id="filter_pop">
1294    <!-- 필터 눌렀을 때 나오는 창 -->
1295    <div class="pop_layer filter_pop">
1296        <div class="pop_title">
1297            <p class="tit">필터</p>
1298            <button type="button" class="clo2" id="popFilterCloseButton"></button>
1299        </div>
1300        <div class="pop_con">
1301            <div class="filter_top_fixed swiper-container">
1302                <div class="swiper-wrapper tabs">
1303                    <div id="tab_filter_item1" class="filter_item swiper-slide active" data-target="filter_item1">숙소구분
1304                    </div>
1305                    <div id="tab_filter_item2" class="filter_item swiper-slide" data-target="filter_item2">검색구분</div>
1306                    <div id="tab_filter_item3" class="filter_item swiper-slide" data-target="filter_item3">숙소환경</div>
1307                    <div id="tab_filter_item4" class="filter_item swiper-slide" data-target="filter_item4">주변환경</div>
1308					
1309                    <div id="tab_filter_item5" class="filter_item swiper-slide" data-target="filter_item5">한줄후기</div>
1310					
1311                </div>
1312            </div>
1313
1314            <!-- item_list div 각 item 선택시 클래스 active 추가 -->
1315            <ul class="filter_pop_ul">
1316                <li id="filter_item1">
1317                    <p class="title">숙소구분</p>
1318                    <div class="item_list">
1319                        <button type="button" name="ser_site_tp" value="BB000" id="chk_lodg1">오토캠핑</button>
1320                        <button type="button" name="ser_site_tp" value="BB001" id="chk_lodg2">글램핑</button>
1321                        <button type="button" name="ser_site_tp" value="BB002" id="chk_lodg3">카라반</button>
1322                        <button type="button" name="ser_site_tp" value="BB003" id="chk_lodg4">펜션</button>
1323                    </div>
1324                </li>
1325
1326                <li id="filter_item2">
1327                    <p class="title">검색구분</p>
1328                    <!-- <div class="tooltip">
1329                      <p class="tooltip_txt">정확한 예약을 위하여 업체가 추가로 제공 및 요청하는 정보입니다.</p>
1330                    </div> -->
1331                    <div class="item_list">
1332                        <button type="button" name="ser_camp_spec" value="BP000">반려견동반</button>
1333                        <button type="button" name="ser_kid" value="Y">키즈캠핑</button>
1334                        <button type="button" name="ser_pg_tp" value="C">신용카드</button>
1335                        <button type="button" name="ser_pg_tp" value="V">무통장입금</button>
1336                        <button type="button" name="ser_2peopleOnly" value="Y">2인전용</button>
1337                        <button type="button" name="ser_camp_spec" value="BP001">트레일러 진입</button>
1338                        <button type="button" name="ser_camp_spec" value="BP002">카라반 진입</button>
1339                        <button type="button" name="ser_camp_spec" value="BP003">차박캠핑</button>
1340                        <button type="button" name="ser_q_point" value="Y">Q-Point적립</button>
1341                        
1342                        <button type="button" name="ser_disc_yn" value="Y">할인중</button>
1343                        <button type="button" name="ser_new_yn" value="Y">신규입점</button>
1344                        <button type="button" name="ser_long_yn" value="Y">장박</button>
1345                        <button type="button" name="ser_get_coupon_yn" value="Y">업체할인쿠폰</button>
1346                    </div>
1347                </li>
1348                <li id="filter_item3">
1349                    <p class="title">숙소환경</p>
1350                    <div class="item_list">
1351                        <button type="button" name="ser_camp_spec" value="BM000" />개별화장실</button>
1352                        <button type="button" name="ser_camp_spec" value="BM001">개별사워실</button>
1353                        <button type="button" name="ser_camp_spec" value="BL004">매점</button>
1354                        <button type="button" name="ser_camp_spec" value="BL003">와이파이</button>
1355                        <button type="button" name="ser_camp_spec" value="BM007">놀이터</button>
1356                        <button type="button" name="ser_camp_spec" value="BM013">수영장</button>
1357                        <button type="button" name="ser_camp_spec" value="BN000">장비대여</button>
1358                        <button type="button" name="ser_camp_spec" value="BM020">체험활동</button>
1359                    </div>
1360                </li>
1361                <li id="filter_item4">
1362                    <p class="title">주변환경</p>
1363                    <div class="item_list">
1364                        <button type="button" name="ser_camp_position" value="A">바다</button>
1365                        <button type="button" name="ser_camp_position" value="B">산</button>
1366                        <button type="button" name="ser_camp_position" value="C">강</button>
1367                        <button type="button" name="ser_camp_position" value="D">호수</button>
1368                        <button type="button" name="ser_camp_position" value="E">계곡</button>
1369                        <button type="button" name="ser_camp_position" value="F">섬</button>
1370                        <button type="button" name="ser_camp_spec" value="BO005">등산</button>
1371                        <button type="button" name="ser_camp_spec" value="BO000">해수욕장</button>
1372                        <button type="button" name="ser_camp_spec" value="BO002">수상레져</button>
1373                        <button type="button" name="ser_camp_spec" value="BO003">낚시</button>
1374                        <button type="button" name="ser_camp_spec" value="BO007">스키장</button>
1375                        <button type="button" name="ser_camp_spec" value="BO006">수목원/휴양림</button>
1376                    </div>
1377                </li>
1378				
1379                <li id="filter_item5">
1380                    <p class="title">한줄후기</p>
1381                    <div class="item_list">
1382                        <button type="button" name="ser_key_sub_cd2" value="EA000">뷰 맛집</button>
1383                        <button type="button" name="ser_key_sub_cd2" value="EA001">조용한 힐링 맛집</button>
1384                        <button type="button" name="ser_key_sub_cd2" value="EA002">사진 맛집</button>
1385                        <button type="button" name="ser_key_sub_cd2" value="EA003">시원한 그늘 맛집</button>
1386                        <button type="button" name="ser_key_sub_cd2" value="EB000">반려견과 함께</button>
1387                        <button type="button" name="ser_key_sub_cd2" value="EB001">아이들과 함께</button>
1388                        <button type="button" name="ser_key_sub_cd2" value="EB002">연인과 함께</button>
1389                        <button type="button" name="ser_key_sub_cd2" value="EB003">친구들과 함께</button>
1390                        <button type="button" name="ser_key_sub_cd2" value="EC000">깨끗한 시설</button>
1391                        <button type="button" name="ser_key_sub_cd2" value="EC001">럭셔리 시설</button>
1392                        <button type="button" name="ser_key_sub_cd2" value="EC002">넓은 사이트 간격</button>
1393                        <button type="button" name="ser_key_sub_cd2" value="EC003">다양한 놀이시설</button>
1394                        <button type="button" name="ser_key_sub_cd2" value="ED000">친절한 사장님</button>
1395                        <button type="button" name="ser_key_sub_cd2" value="ED001">매너타임</button>
1396                    </div>
1397                </li>
1398				
1399            </ul>
1400        </div>
1401        <div class="btm search_filter">
1402            <!-- 초기화 on 으로 제어 -->
1403            <a id="popFilterResetButton" class="btn_refresh">초기화</a>
1404            <button type="button" class="btn_orange" id="searchSubmitButton">필터 검색</button>
1405        </div>
1406    </div>
1407</div>
1408
1409<script>
1410	const headFilterManager = {
1411		init: function(){
1412			this.swiperKeywordFilter();
1413			this.swiperBadgeFilter();
1414			this.isHeadFilterCheck();
1415
1416			let lastScrollTop = 0;
1417			const headFilter = document.getElementById("headFilter");
1418
1419			window.addEventListener("scroll", () => {
1420				let scrollTop = window.scrollY || document.documentElement.scrollTop;
1421
1422				if (scrollTop < 170) {
1423					// 최상단에서는 항상 보이게 설정
1424					headFilter.style.transform = "translate(-50%)";
1425					headFilter.style.opacity = "1";
1426				} else if (scrollTop > lastScrollTop) {
1427					// 아래로 스크롤 시 숨김
1428					headFilter.style.transform = "translate(-50%,-100%)";
1429					headFilter.style.opacity = "0";
1430				} else {
1431					// 위로 스크롤 시 노출
1432					headFilter.style.transform = "translate(-50%)";
1433					headFilter.style.opacity = "1";
1434				}
1435
1436				lastScrollTop = scrollTop;
1437			});
1438		},
1439		swiperKeywordFilter: function(){
1440			const sr_condi_swiper = new Swiper('.sr_condi_swiper', {
1441				pagination: false,
1442				slidesPerView: 'auto',
1443				paginationClickable: true,
1444				spaceBetween: 8,
1445				freeMode: true,
1446				lazyLoading: true,
1447				observer: true,
1448				observeParents: true,
1449				loop: false
1450			});
1451
1452			return sr_condi_swiper;
1453		},
1454		swiperBadgeFilter: function(){
1455			const filter_cont_swiper = new Swiper('.filter_cont_swiper', {
1456				pagination: false,
1457				slidesPerView: 'auto',
1458				paginationClickable: true,
1459				spaceBetween: 8,
1460				freeMode: true,
1461				lazyLoading: true,
1462				observer: true,
1463				observeParents: true,
1464				loop: false,
1465            });
1466
1467			return filter_cont_swiper;
1468		},
1469		// 구분 필터 버튼 active 업데이트 이벤트
1470		updateActiveFilters: function() {
1471			const selectedFilters = filterManager._selectedFilters;
1472
1473			// 기존 active 클래스 제거
1474			document.querySelectorAll(".filter_cont_swiper .swiper-slide").forEach(sli
1474de => {
1475				slide.classList.remove("active");
1476			});
1477			
1478			// 태그 페스타 버튼 active
1479            if (selectedFilters.ser_festa_gbn != ""){
1480                const buttonEl = document.querySelector(`.tag_name[value='${selectedFilters.ser_festa_gbn}']`);
1481                if(buttonEl){
1482                    buttonEl.classList.add("active");
1483                }
1484            }
1485            
1486			// 태그 할인 버튼 active
1487			if (selectedFilters.ser_disc_yn == "Y"){
1488				const buttonEl = document.querySelector(`.tag_name[name='ser_disc_yn']`);
1489				buttonEl.classList.add("active");
1490			}
1491            
1492            // 태그 반려동물 버튼 active
1493            if (selectedFilters.ser_camp_spec.some(value => ["BP000"].includes(value))){
1494                const buttonEl = document.querySelector(`.tag_name[value='${selectedFilters.ser_camp_spec}']`);
1495                buttonEl.classList.add("active");
1496            }
1497            
1498            // 태그 아이들 버튼 active
1499            if (selectedFilters.ser_kid == "Y"){
1500                const buttonEl = document.querySelector(`.tag_name[name='ser_kid']`);
1501                buttonEl.classList.add("active");
1502            }
1503            
1504            // 태그 업체할인 버튼 active
1505            if (selectedFilters.ser_get_coupon_yn == "Y"){
1506                const buttonEl = document.querySelector(`.tag_name[name='ser_get_coupon_yn']`);
1507                buttonEl.classList.add("active");
1508            }
1509
1510			// 숙소구분 버튼 active
1511			if (selectedFilters.ser_site_tp.length > 0) {
1512				document.getElementById("group1_txt")?.closest(".swiper-slide")?.classList.add("active");
1513			}
1514
1515			// 검색구분 버튼 active
1516			if (
1517				selectedFilters.ser_camp_spec.some(value => ["BP000", "BP001", "BP002", "BP003"].includes(value)) ||
1518				selectedFilters.ser_pg_tp.some(value => ["C", "V"].includes(value)) ||
1519				selectedFilters.ser_2peopleOnly === "Y" || selectedFilters.ser_q_point === "Y" || selectedFilters.ser_deposit_yn === "Y" ||
1520				selectedFilters.ser_disc_yn === "Y" || selectedFilters.ser_new_yn === "Y" || selectedFilters.ser_long_yn === "Y" || selectedFilters.ser_kid === "Y" || selectedFilters.ser_get_coupon_yn === "Y"
1521			) {
1522				document.getElementById("group2_txt")?.closest(".swiper-slide")?.classList.add("active");
1523			}
1524
1525			// 숙소환경 버튼 active
1526			if (selectedFilters.ser_camp_spec.some(value => ["BM000", "BM001", "BL004", "BL003", "BM007", "BM013", "BN000", "BM020"].includes(value))) {
1527				document.getElementById("group3_txt")?.closest(".swiper-slide")?.classList.add("active");
1528			}
1529
1530			// 주변환경 버튼 active
1531			if (selectedFilters.ser_camp_position.length > 0 || selectedFilters.ser_camp_spec.some(value => ["BO005", "BO000", "BO002", "BO003", "BO007"].includes(value))) {
1532				document.getElementById("group4_txt")?.closest(".swiper-slide")?.classList.add("active");
1533			}
1534			
1535			// 한줄후기 버튼 active
1536            if (selectedFilters.ser_key_sub_cd2.length > 0) {
1537                document.getElementById("group5_txt")?.closest(".swiper-slide")?.classList.add("active");
1538            }
1539		},
1540		// 구분 필터 미노출 여부 체크
1541		isHeadFilterCheck: function() {
1542			if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){
1543				document.querySelector('.filter_name[data-value="filter_item1"]').closest(".swiper-slide").style.display = "none";
1544				document.getElementById("tab_filter_item1").style.display = "none";
1545				document.getElementById("filter_item1").style.display = "none"
1546			}else{
1547				document.querySelector('.filter_name[data-value="filter_item1"]').closest(".swiper-slide").style.display = "block";
1548				document.getElementById("tab_filter_item1").style.display = "block";
1549                document.getElementById("filter_item1").style.display = "block"
1550			}
1551		}
1552	}
1553
1554    /* 검색 관련 함수 */
1555    const filterUrlParams = new URLSearchParams(window.location.search);
1556    const filterManager = {
1557		_selectedFilters: {
1558			ser_site_tp: [],
1559			ser_pg_tp: [],
1560			ser_camp_spec: [],
1561			ser_camp_position: [],
1562			ser_key_sub_cd2: [],
1563			ser_kid: "",
1564			ser_2peopleOnly: "",
1565			isPg: "",
1566			ser_q_point: "",
1567			ser_deposit_yn: "",
1568			ser_disc_yn: "",
1569			ser_new_yn: "",
1570			ser_long_yn: "",
1571			ser_key_cd: "",
1572			ser_sort: "",
1573			ser_key_cd: "",
1574			ser_key_sub_cd: "",
1575			ser_keyword: "",
1576			ser_only_able: "",
1577			ser_empty_yn: "",
1578			ser_festa_gbn: "",
1579			ser_get_coupon_yn: "",
1580			page: 0
1581		},
1582        init: function () {
1583            const popFilterButtonEl = document.getElementById("popFilterButton");
1584            const popFilterCloseButtonEl = document.getElementById("popFilterCloseButton");
1585            const popFilterResetButtonEl = document.getElementById("popFilterResetButton");
1586            const filterNameEl = document.querySelectorAll('.filter_name');
1587
1588            popFilterButtonEl.addEventListener("click", () => {
1589                this.open()
1590            });
1591            popFilterCloseButtonEl.addEventListener("click", () => {
1592                this.close()
1593            });
1594            popFilterResetButtonEl.addEventListener("click", () => {
1595                this.resetFilters()
1596            });
1597
1598            filterNameEl.forEach(el => {
1599                console.log(el.textContent);
1600
1601                el.addEventListener("click", () => {
1602                    this.open(el.dataset.value)
1603                });
1604            });
1605
1606            // 필터 항목 클릭 이벤트 등록
1607            document.querySelectorAll(".item_list button").forEach(item => {
1608                item.addEventListener("click", (event) => this.toggleFilter(event));
1609            });
1610
1611            //this.sortSelect();
1612			this.setting();
1613            this.popFilter();
1614        },
1615		// 태그 필터 이벤트 생성
1616		createTagClickEvent: function(func){
1617			// 태그 필터 항목 클릭 이벤트 등록
1618            document.querySelectorAll(".tag_name").forEach(item => {
1619                item.addEventListener("click", (event) => {
1620					this.toggleFilter(event);
1621					func();
1622                });
1623            });
1624		},
1625		// 초기 세팅 함수
1626		setting: function(){
1627
1628			const siteTpValue = filterUrlParams.get("site_tp") ? filterUrlParams.get("site_tp").split(",").filter(
1628Boolean) : [];
1629			const serPgTpValue = filterUrlParams.get("ser_pg_tp") ? filterUrlParams.get("ser_pg_tp").split(",").filter(Boolean) : [];
1630			const serCampSpecValue = filterUrlParams.get("ser_camp_spec") ? filterUrlParams.get("ser_camp_spec").split(",").filter(Boolean) : [];
1631			const serCampPositionValue = filterUrlParams.get("ser_camp_position") ? filterUrlParams.get("ser_camp_position").split(",").filter(Boolean) : [];
1632			const serKeySubCd2Value = filterUrlParams.get("ser_key_sub_cd2") ? filterUrlParams.get("ser_key_sub_cd2").split(",").filter(Boolean) : [];
1633
1634			filterManager._selectedFilters = {
1635				ser_site_tp: siteTpValue,
1636				ser_pg_tp: serPgTpValue,
1637				ser_camp_spec: serCampSpecValue,
1638				ser_camp_position: serCampPositionValue,
1639				ser_key_sub_cd2: serKeySubCd2Value,
1640				ser_kid: filterUrlParams.get("ser_kid") || "",
1641				ser_2peopleOnly: filterUrlParams.get("ser_2peopleOnly") || "",
1642				isPg: filterUrlParams.get("isPg") || "",
1643				ser_q_point: filterUrlParams.get("ser_q_point") || "",
1644				ser_deposit_yn: filterUrlParams.get("ser_deposit_yn") || "",
1645				ser_disc_yn:  filterUrlParams.get("ser_disc_yn") || "",
1646				ser_new_yn: filterUrlParams.get("ser_new_yn") || "",
1647				ser_long_yn: filterUrlParams.get("ser_long_yn") || "",
1648				ser_key_cd: filterUrlParams.get("ser_key_cd") || "",
1649				ser_sort: filterUrlParams.get("ser_sort") || "",
1650				ser_key_cd: filterUrlParams.get("ser_key_cd") || "",
1651				ser_key_sub_cd: filterUrlParams.get("ser_key_sub_cd") || "",
1652				ser_keyword: filterUrlParams.get("ser_keyword") || "",
1653				ser_only_able: filterUrlParams.get("ser_only_able") || "",
1654				ser_empty_yn:  filterUrlParams.get("ser_empty_yn") || "",
1655				ser_festa_gbn: filterUrlParams.get("ser_festa_gbn") || "",
1656				ser_get_coupon_yn: filterUrlParams.get("ser_get_coupon_yn") || "",
1657				page: 0
1658			}
1659
1660			// 해당 필터값이 존재하면 active 클래스 추가
1661			Object.keys(filterManager._selectedFilters).forEach(key => {
1662				const value = filterManager._selectedFilters[key];
1663
1664				if (Array.isArray(value)) {
1665					value.forEach(val => {
1666						document.querySelectorAll(`.item_list button[name='${key}'][value='${val}']`).forEach(btn => btn.classList.add("active"));
1667					});
1668				} else if (value === "Y") {
1669					document.querySelectorAll(`.item_list button[name='${key}']`).forEach(btn => btn.classList.add("active"));
1670				}
1671			});
1672			
1673			// 페스타 검색 시 sort 값 E 세팅
1674			if(filterManager._selectedFilters.ser_festa_gbn != ""){
1675			    //filterManager._selectedFilters.ser_sort = "E";
1676			}
1677			
1678			// 리스트 순서 버튼 초기 이벤트
1679			filterManager.sortChangeEvent();
1680			headFilterManager.updateActiveFilters();
1681		},
1682        // 필터 팝업 열기
1683        open: function (filterType) {
1684            const scrollPosition = window.scrollY;
1685            const headInElement = document.querySelector('.head_in');
1686			const containerElement = document.querySelector('.container');
1687            const top = scrollPosition - 60; // head 높이 값 제외
1688
1689            document.body.style.position = 'fixed';
1690            document.body.style.top = `-${top}px`;
1691
1692			containerElement.style.marginTop = '175px';
1693
1694            headInElement.style.position = 'fixed';
1695            headInElement.style.top = `0px`;
1696            headInElement.style.left = '50%';
1697            headInElement.style.width = '100%';
1698            headInElement.style.transform = 'translateX(-50%)';
1699            headInElement.style.maxWidth = '640px';
1700			
1701			if(filterType){
1702				document.querySelector(`.filter_item[data-target='${filterType}']`)?.click();
1703			}
1704			
1705            openLayer('filter_pop');
1706        },
1707        // 필터 팝업 닫기
1708        close: function () {
1709            const headInElement = document.querySelector('.head_in');
1710			const containerElement = document.querySelector('.container');
1711            const scrollY = document.body.style.top;
1712
1713			containerElement.style.marginTop = '115px';
1714
1715            document.body.style.position = '';
1716            document.body.style.top = '';
1717            headInElement.style.position = 'relative';
1718            headInElement.style.top = '';
1719            window.scrollTo(0, parseInt(scrollY || '0') * -1);
1720
1721            closeLayer('filter_pop');
1722        },
1723        // 팝업 필터 페이지 이벤트
1724        popFilter: function () {
1725            const swiper = this.popFilterSwiper();
1726
1727            const fixedTop = document.querySelector('.filter_top_fixed');
1728            let initialTopPosition = fixedTop.offsetTop; // 초기 위치 파악
1729
1730            const updateFixedTop = () => {
1731                if (window.scrollY >= initialTopPosition) {
1732                    fixedTop.classList.add('fixed');
1733                } else {
1734                    fixedTop.classList.remove('fixed');
1735                }
1736            };
1737
1738            // 탭 스크롤 이벤트 설정
1739            const popupContainer = document.querySelector('.filter_pop_ul');
1740            let isManualScroll = false;
1741
1742            popupContainer.addEventListener('scroll', () => {
1743                if (isManualScroll) return; // 수동 스크롤 시 스크롤 이벤트 무시
1744                updateFixedTop();
1745
1746                const allTabs = document.querySelectorAll('.filter_item');
1747                let activeTabFound = false; // 활성화된 탭을 한 번만 찾아내도록 플래그 설정
1748
1749                if (popupContainer.scrollTop === 0) {
1750                    allTabs.forEach(tab => tab.classList.remove('active'));
1751                    allTabs[0].classList.add('active');
1752
1753                    // 모바일에서는 Swiper도 첫 번째 탭으로 이동
1754                    if (window.innerWidth <= 640) {
1755                        swiper.slideTo(0);
1756                    }
1757                    return;
1758                }
1759
1760                allTabs.forEach((tab, index) => {
1761                    const targetId = tab.getAttribute('data-target');
1762                    const targetElement = document.getElementById(targetId);
1763
1764                    if (targetElement && !activeTabFound) {
1765                        const rect = targetElement.getBoundingClientRect();
1766
1767                        if (rect.top <= 128 && rect.bottom >= 128) {
1768                            // 섹션이 화면 내 128px 위에서 보일 때 활성화
1769                            tab.classList.add('active');
1770                            activeTabFound = true; // 첫 번째로 보이는 섹션에 해당하는 탭을 active로 설정
1771
1772                            // Swiper를 해당 탭 위치로 이동 (모바일일 경우만 적용)
1773                            if (window.innerWidth <= 640) { // 모바일 체크
1774                                swiper.slideTo(index); // active 탭으로 swiper 이동
1775                            }
1776                        } else {
1777                            tab.classList.remove('active');
1778                        }
1779                    } else {
1780                        tab.classList.remove('active');
1781                    }
1782                });
1783            });
1784
1785
1786            // 탭 클릭 시 수동으로 활성화 설정
1787            document.querySelectorAll('.filter_item').forEach((tab, index) => {
1788                tab.addEventListener('click', function () {
1789                    if (tab.style.display === 'none') return; // display: none 상태의 탭은 무시
1790
1791                    isManualScroll = true; // 스크롤 이벤트 일시 중지
1792
1793                    // 모든 탭에서 active 제거 후 현재 클릭한 탭에 active 추가
1794                    document.querySelectorAll('.filter_item').forEach(item => item.classList
1795                        .remove('active'));
1796                    this.classList.add('active');
1797
1798                    // 해당 섹션으로 팝업 내부 스크롤 이동
1799                    const targetId = this.getAttribute('data-target');
1800                    const targetElement = document.getElementById(targetId);
1801                    const popupContainer = document.querySelector('.filter_pop_ul');
1802
1803                    if (targetElement && popupContainer) {
1804                        popupContainer.scrollTo({
1805                            top: targetElement.offsetTop - popupContainer.offsetTop,
1806                            behavior: 'smooth'
1807                        });
1808
1809                        if (window.innerWidth <= 640) {
1810                            swiper.slideTo(index); // Swiper 탭 이동
1811                        }
1812
1813                        // 스크롤이 끝난 후 다시 스크롤 이벤트 활성화
1814                        setTimeout(() => {
1815                            isManualScroll = false;
1816                        }, 500);
1817                    }
1818                });
1819            });
1820
1821
1822            // 초기 위치 업데이트를 위한 리사이즈 이벤트 처리
1823            window.addEventListener('resize', () => {
1824                initialTopPosition = fixedTop.offsetTop;
1825                updateFixedTop();
1826            });
1827
1828            updateFixedTop();
1829        },
1830        // 필터 팝업 페이지 탭
1831        popFilterSwiper: function () {
1832            const swiper = new Swiper('.filter_top_fixed', {
1833                slidesPerView: 'auto',
1834                spaceBetween: 8,
1835                freeMode: true
1836            });
1837
1838            return swiper;
1839        },
1840        // 정렬 기준 팝업 이벤트
1841        sortSelect: function (fun) {
1842            const eventBtnEl = document.getElementById('sortChoiceButton');
1843            const options = document.querySelectorAll(".opt");
1844            const parentEl = eventBtnEl.parentNode;
1845        
1846            // 클릭한 옵션의 텍스트를 라벨 안에 넣음
1847            const handleSelect = (item) => {
1848                parentEl.classList.remove("on");
1849                eventBtnEl.innerHTML = item.textContent;
1850        
1851                filterManager._selectedFilters.ser_sort = item.dataset.value;
1852                fun();
1853            };
1854        
1855            // 옵션 클릭 시 클릭한 옵션을 넘김
1856            options.forEach((option) => {
1857                option.addEventListener("click", (event) => {
1858                    event.stopPropagation(); // 이벤트 버블링 방지
1859                    handleSelect(option);
1860                });
1861            });
1862        
1863            // 라벨을 클릭 시 옵션 목록이 열림/닫힘
1864            eventBtnEl.addEventListener("click", (event) => {
1865                event.stopPropagation(); // 이벤트 버블링 방지
1866                parentEl.classList.toggle("on");
1867            });
1868        
1869            // **이외 영역 클릭 시 닫기**
1870            const closeDropdown = (event) => {
1871                if (!parentEl.contains(event.target)) {
1872                    parentEl.classList.remove("on");
1873                }
1874            };
1875        
1876            document.addEventListener("click", closeDropdown);
1877        
1878            // **스크롤 시 닫기**
1879            document.addEventListener("scroll", () => {
1880                parentEl.classList.remove("on");
1881            });
1882        },
1883        // 정렬기준 변경
1884        sortChangeEvent: function(){
1885            // 리스트 순서 버튼 초기 이벤트
1886            const sortChoiceButtonEl = document.getElementById("sortChoiceButton");
1887            if(sortChoiceButtonEl != null){
1888                let buttonText;
1889            
1890                switch (filterManager._selectedFilters.ser_sort) {
1891                    case "R": 
1892                        buttonText = "추천순"; 
1893                        break;
1894                    case "P": 
1895                        buttonText = "조회순"; 
1896                        break;
1897                    case "E": 
1898                        buttonText = "빈자리순"; 
1899                        break;
1900                    case "F": 
1901                        buttonText = "가격순"; 
1902                        break;
1903                    case "S": 
1904                        buttonText = "후기많은순"; 
1905                        break;
1906                    case "N": 
1907                        buttonText = "최근후기순"; 
1908                        break;
1909                    default: 
1910                        buttonText = "추천순"; // 기본값
1911                }
1912            
1913                sortChoiceButtonEl.innerHTML = buttonText;
1914            }
1915        },
1916		// 예약가능 데이터만
1917		toggleEmpty: function(){
1918			const isEmpty = filterManager._selectedFilters.ser_only_able;
1919			const emptyButtonEl = document.getElementById("empty_y");
1920
1921			if(isEmpty == "on"){
1922				filterManager._selectedFilters.ser_only_able = "";
1923				filterManager._selectedFilters.ser_empty_yn = "N";
1924			}else{
1925				filterManager._selectedFilters.ser_only_able = "on";
1926				filterManager._selectedFilters.ser_empty_yn = "Y";
1927			}
1928
1929			this.updateEmptyState();
1930		},
1931		// 예약가능 버튼 이벤트
1932		updateEmptyState: function(){
1933			const emptyButtonEl = document.getElementById("empty_y");
1934
1935			if (filterManager._selectedFilters.ser_only_able == "on") {
1936				emptyButtonEl.classList.add("active");
1937			} else {
1938				emptyButtonEl.classList.remove("active");
1939			}
1940		},
1941        // 필터 항목 클릭 시 활성화/비활성화
1942		toggleFilter: function (event) {
1943			const searchPageType = 'LIST';
1944			const target = event.target;
1945			const name = target.getAttribute("name");
1946			const value = target.getAttribute("value");
1947
1948			// 페스타 버튼일 때
1949			if(name == "ser_festa_gbn"){
1950			
1951				//만만한캠핑인 경우 입실일자 기본값 set
1952				if (value == "DL002") {
1953					searchFilterManager._filter.res_date = "20251001";
1954					searchFilterManager._filter.res_end_date = "20251002";
1955				}
1956			
1957				document.querySelectorAll(".tag_name.festa_button").forEach(item => item.classList.remove("active"));
1958
1959				if(filterManager._selectedFilters[name] == value){
1960					document.querySelector(`.tag_name.festa_button[value='${value}']`).classList.remove("active");
1961					filterManager._selectedFilters[name] = "";
1962				}else{
1963					document.querySelector(`.tag_name.festa_button[value='${value}']`).classList.add("active");
1964					filterManager._selectedFilters[name] = value;
1965					
1966					//filterManager._selectedFilters.ser_sort = "E";
1967                    filterManager.sortChangeEvent();
1968				}
1969				
1970				return;
1971			}
1972
1973			// _selectedFilters[name]이 존재하지 않으면 기본값 설정
1974			if (this._selectedFilters[name] === undefined) {
1975				this._selectedFilters[name] = [];
1976			}
1977
1978			// 배열인 경우 (ex: ser_site_tp, ser_pg_tp 등)
1979            if (Array.isArray(this._selectedFilters[name])) {
1980
1981                // value에 콤마가 있으면 배열로 분리
1982                const valueList = String(value)
1983                    .split(",")
1984                    .map(item => item.trim())
1985                    .filter(item => item !== "");
1986
1987                // valueList 값들이 전부 선택되어 있으면 해제, 아니면 선택
1988                const isSelected = valueList.every(item => this._selectedFilters[name].includes(item));
1989
1990                if (isSelected) {
1991                    // 선택 해제
1992                    this._selectedFilters[name] = this._selectedFilters[name].filter(item => !valueList.includes(item));
1993
1994                    // 원본 value 버튼 비활성화 ex) value="A,B"
1995                    document.querySelectorAll(`.item_list button[name='${name}'][value='${value}']`).forEach(item => item.classList.remove("active"));
1996                    document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.remove("active"));
1997
1998                    // 분리된 value 버튼들도 비활성화 ex) value="A", value="B"
1999                    valueList.forEach(filterValue => {
2000                        document.querySelectorAll(`.item_list button[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.remove("active"));
2001                        document.querySelectorAll(`.tag_name[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.remove("active"));
2002                    });
2003
2004                    if (searchPageType == "LIST" && name == "ser_site_tp") {
2005                        searchFilterManager._filter['site_type'] = searchFilterManager._filter['site_type'].filter(item => !valueList.includes(item));
2006                        searchFilterManager.getSiteType();
2007                    }
2008
2009                } else {
2010                    // 선택 추가 - 중복 방지
2011                    valueList.forEach(filterValue => {
2012                        if (!this._selectedFilters[name].includes(filterValue)) {
2013                            this._selectedFilters[name].push(filterValue);
2014                        }
2015                    });
2016
2017                    // 원본 value 버튼 활성화 ex) value="A,B"
2018                    document.querySelectorAll(`.item_list button[name='${name}'][value='${value}']`).forEach(item => item.classList.add("active"));
2019                    document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.add("active"));
2020
2021                    // 분리된 value 버튼들도 활성화 ex) value="A", value="B"
2022                    valueList.forEach(filterValue => {
2023                        document.querySelectorAll(`.item_list button[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.add("active"));
2024                        document.querySelectorAll(`.tag_name[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.add("active"));
2025                    });
2026
2027                    if (searchPageType == "LIST" && name == "ser_site_tp") {
2028                        valueList.forEach(filterValue => {
2029                            if (!searchFilterManager._filter['site_type'].includes(filterValue)) {
2030                                searchFilterManager._filter['site_type'].push(filterValue);
2031                            }
2032                        });
2033
2034                        searchFilterManager.getSiteType();
2035                    }
2036                }
2037            }
2038			// 배열이 아닌 경우 (ex: ser_kid, ser_2peopleOnly 등)
2039			else {
2040				if(this._selectedFilters[name] == ""){
2041					this._selectedFilters[name] = value;
2042				}else{
2043					this._selectedFilters[name] = "";
2044				}
2045				
2046				document.querySelectorAll(`.item_list button[name='${name}']`).forEach(item => item.classList.toggle("active", this._selectedFilters[name] === "Y")); // 필터 활성화 여부 설정
2047				document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.toggle("active", this._selectedFilters[name] === "Y")); // 태그 활성화 여부 설정
2048			}
2049
2050			headFilterManager.updateActiveFilters();
2051		},
2052        // 필터 적용 (검색 실행)
2053        applyFilters: function (dataFatch) {
2054            
2055        },
2056        // 필터 초기화
2057        resetFilters: function () {
2058            this._selectedFilters = {
2059				resStartDate: '20261002',
2060				resEndDate: '20261002',
2061				ser_site_tp: [],
2062				ser_pg_tp: [],
2063				ser_camp_spec: [],
2064				ser_camp_position: [],
2065				ser_key_sub_cd2: [],
2066				ser_kid: "N",
2067				ser_2peopleOnly: "N",
2068				isPg: "N",
2069				ser_q_point: "N",
2070				ser_deposit_yn: "N",
2071				ser_disc_yn: "N",
2072				ser_new_yn: "N",
2073				ser_long_yn: "N",
2074				ser_get_coupon_yn: "N",
2075				ser_sort: "R",
2076                ser_key_cd: "",
2077                ser_key_sub_cd: "",
2078                ser_keyword: "",
2079                ser_only_able: "",
2080                ser_empty_yn: "",
2081                ser_festa_gbn: "",
2082				page: 0
2083            };
2084
2085            searchFilterManager.syncFilters();
2086			headFilterManager.updateActiveFilters();
2087
2088            // 모든 필터 항목 비활성화
2089            document.querySelectorAll(".item_list button").forEach(item => {
2090                item.classList.remove("active");
2091            });
2092        },
2093
2094    };
2095
2096	document.addEventListener("DOMContentLoaded", function() {
2097        headFilterManager.init();
2098		filterManager.init();
2099    });
2100</script>
2100
2101
2102					<div class="view_filter">
2103					  <!-- sel_ok - 날짜 선택됐을 때만 노출 -->
2104					  <div>
2105					    <div class="sel_ok" id="empty_y" style="display: none">예약가능</div>
2106					  </div>
2107					  <div class="right_div">
2108						<div class="sel_div">
2109						  <button type="button" id="sortChoiceButton" class="label">추천순</button>
2110						  <ul class="opt_ul">
2111							<li class="opt" data-value="R">추천순</li>
2112							<li class="opt" data-value="P">조회순</li>
2113							<li class="opt" data-value="E">빈자리순</li>
2114							<li class="opt" data-value="F">가격순</li>
2115							<li class="opt" data-value="S">후기많은순</li>
2116							<li class="opt" data-value="N">최근후기순</li>
2117						  </ul>
2118						</div>
2119						<div class="sel_view main-info-box">
2120                            <img src="../images/thumb.png" alt="리스트로 보기" />
2121                            <div class="balloon-badge bottom right" id="viewInfoBox">한눈에 모아보기</div>
2122						</div>
2123					  </div>
2124					</div>
2125
2126					<!-- 목록형일때만 view_type_info 추가 -->
2127                    <div id="DivResvPrList" class="camp_list view_type"></div><!--// camp_list -->
2128					
2129                    <div id="DivResvList" class="camp_list view_type" style="min-height: 50px;"></div><!--// camp_list -->
2130                    <div id="loading_image" style="display:none;width:100%;text-align:center;padding:10px;border:1px;"><img src="/images/loading.svg" alt="Loading..." style="width:25px;"/></div>
2131
2132                 </div><!--// sear_result_con -->
2133                 <!--↑↑↑↑↑↑ 컨텐츠 끝 *******************↑↑↑↑↑↑↑↑↑ -->
2134            </div> <!--// container -->
2135
2136			
2137<style>
2138    .search_marker{
2139        position: absolute;
2140        top: 50%;
2141        left: 50%;
2142        transform: translate(-50%, -50%);
2143        width: 16px;
2144        height: 16px;
2145        border-radius: 16px;
2146        background: #fff;
2147        z-index: 1;
2148    }
2149	.now_marker{
2150		position: absolute;
2151		top: 50%;
2152		left: 50%;
2153		transform: translate(-50%, -50%);
2154		width: 16px;
2155		height: 16px;
2156		border-radius: 16px;
2157		background: #fff;
2158		z-index: 1;
2159	}
2160	.now_marker:after{
2161		content: "";
2162		display: block;
2163		position: absolute;
2164		top: 50%;
2165		left: 50%;
2166		transform: translate(-50%, -50%);
2167		width: 20px;
2168		height: 20px;
2169		border-radius: 20px;
2170		background: #F27226;
2171		opacity: .5;
2172		z-index: -1;
2173	}
2174	.now_marker:before{
2175		content: "";
2176		display: block;
2177		position: absolute;
2178		top: 50%;
2179		left: 50%;
2180		transform: translate(-50%, -50%);
2181		width: 10px;
2182		height: 10px;
2183		border-radius: 10px;
2184		border: 2px solid #fff;
2185		background: #F27226;
2186	}
2187	.ui-state-active, .ui-state-active a:hover {
2188	    position:relative;
2189	    border-radius: 100rem;
2190	}
2191	.ui-state-active a{
2192	    position: relative;
2193	    border-radius: 100rem;
2194	    background: #f47206 !important;
2195	}
2196	td.ui-state-active.left:before{
2197	    content: "";
2198	    position: absolute;
2199	    top:0;
2200	    left: 0;
2201	    display: block;
2202	    width: 50%;
2203	    height: 100%;
2204	    transform: translateX(100%);
2205	    background: #FFCCAD;
2206	}
2207	td.ui-state-active.right:before{
2208        content: "";
2209        position: absolute;
2210        top:0;
2211        right: 0;
2212        display: block;
2213        width: 50%;
2214        height: 100%;
2215        transform: translateX(-100%);
2216        background: #FFCCAD;
2217    }
2218	.ui-state-active-a{
2219	    background: #FFCCAD !important;
2220	}
2221	.stay_btn_swiper .swiper-slide{ width: auto; }
2222
2223</style>
2224
2225<div class="pop_layer_set2" id="search_pop">
2226    <!-- 필터 눌렀을 때 나오는 창 -->
2227    <div class="filter_pop">
2228		<div class="search head">
2229		  <div class="head_in" style="overflow: initial">
2230			<button type="button" class="btn_close" id="popSearchCloseButton"></button>
2231			<ul class="search_tab">
2232				<li class="main-info-box active" id="listTab">숙소검색</li>
2233				<li class="main-info-box" id="mapTab">
2234				    지도검색
2235				    <div class="balloon-badge bottom center" id="mapInfoBox">가까운 숙소찾기</div>
2236                </li>
2237			</ul>
2238		  </div>
2239		</div>
2240   
2241		<div>
2242		  <!--↓↓↓↓↓↓ 컨텐츠 시작 ↓↓↓↓↓↓-->
2243			<div class="search_content" id="list-search-content" style="display: none;">
2244				<div class="search_form_box">
2245					<div class="search_form_input search">
2246						<input type="text" id="ser_keyword_" list="sear_list" value="" placeholder="숙소명을 입력하세요" style="width: 100%; font-size: 14px; outline: 0; border: 0;"  />
2247						<span class="ico_del" id="deleteKeyword" style="display:none;"></span>
2248						<div id="search_result_info_box" class="search_result_info_box">
2249						    <p class="info">업체명 클릭시, 상세페이지로 이동합니다.</p>
2250						    <p class="info">다른 조건으로 검색하려면, 타 검색항목을 바로 클릭하세요.</p>
2251						</div>
2252						<ul id="search_result_box" class="search_result_box"></ul>
2253					</div>
2254					<div class="search_form_input place">
2255						<span class="placeholder">지역을 선택 하세요.</span>
2256						<div class="search_choice_box">
2257							<div style="display: flex;justify-content: space-between;align-items:center;">
2258								<h3 class="title">지역을 선택해 주세요.</h3>
2259								<p style="color:#8E8E8E;font-size: 12px;">최대 3개 선택</p>
2260							</div>
2261							<div class="content">
2262								<div class="swiper-container place_tab_swiper">
2263									<ul class="swiper-wrapper">
2264										<li class="swiper-slide place_button" data-value="" data-region="" data-arr="-1">지역전체</li>
2265										<!--li class="swiper-slide place_button" data-value="강원권" data-region="" data-arr="0">강원</li>
2266										<li class="swiper-slide place_button" data-value="경상권" data-region="" data-arr="1">경상</li>
2267										<li class="swiper-slide place_button" data-value="경기권" data-region="" data-arr="2">경기</li>
2268										<li class="swiper-slide place_button" data-value="충청권" data-region="" data-arr="3">충청</li>
2269										<li class="swiper-slide place_button" data-value="전ë
2269¼ê¶Œ" data-region="" data-arr="4">전라</li>
2270										<li class="swiper-slide place_button" data-value="제주권" data-region="" data-arr="5">제주</li>
2271										<li class="swiper-slide place_button" data-value="인천" data-region="" data-arr="6">인천</li-->
2272										<li class="swiper-slide place_button" data-value="강원" data-region="" data-arr="0">강원</li><li class="swiper-slide place_button" data-value="경기" data-region="" data-arr="1">경기</li><li class="swiper-slide place_button" data-value="경남" data-region="" data-arr="4">경남</li><li class="swiper-slide place_button" data-value="경북" data-region="" data-arr="5">경북</li><li class="swiper-slide place_button" data-value="전남" data-region="" data-arr="14">전남</li><li class="swiper-slide place_button" data-value="전북" data-region="" data-arr="15">전북</li><li class="swiper-slide place_button" data-value="충남" data-region="" data-arr="11">충남</li><li class="swiper-slide place_button" data-value="충북" data-region="" data-arr="12">충북</li><li class="swiper-slide place_button" data-value="인천" data-region="" data-arr="2">인천</li><li class="swiper-slide place_button" data-value="제주" data-region="" data-arr="16">제주</li><li class="swiper-slide place_button" data-value="서울" data-region="" data-arr="3">서울</li><li class="swiper-slide place_button" data-value="대전" data-region="" data-arr="9">대전</li><li class="swiper-slide place_button" data-value="세종" data-region="" data-arr="10">세종</li><li class="swiper-slide place_button" data-value="대구" data-region="" data-arr="6">대구</li><li class="swiper-slide place_button" data-value="부산" data-region="" data-arr="8">부산</li><li class="swiper-slide place_button" data-value="울산" data-region="" data-arr="7">울산</li>
2273									</ul>
2274								</div>
2275								<div id="place_result_box" class="place_result_box"></div>
2276								<div id="place_choice_box" class="place_choice_box">
2277									<ul></ul>
2278								</div>
2279							</div>
2280						</div>
2281					</div>
2282					<div class="search_form_input calendar">
2283						<span class="placeholder">날짜를 선택해 주세요.</span>
2284						<div class="search_choice_box">
2285							<h3 class="title">날짜를 선택해 주세요.</h3>
2286							<div class="content">
2287								<div class="datepicker-list"></div>
2288								<div style="display:flex;align-items:center;justify-content:space-between;margin-top:16px;">
2289								    <button type="button" id="calendarResetButton" style="background: #fff url(../images/re-search.png) 1rem center no-repeat;border: 0;padding: 0 1rem 0 3rem;">일정 초기화</button>
2290								    <button type="button" class="twonight" >2박 선택</button>
2291								</div>
2292							</div>
2293						</div>
2294					</div>
2295					<div class="search_form_button stay" id="search_site_type_box" >
2296                        <div class="swiper-container stay_btn_swiper">
2297                            <ul class="swiper-wrapper">
2298                                <li class="swiper-slide">
2299                                    <button type="button" class="stay_button active" id="site_tp_all">전체</button>
2300                                </li>
2301                                <li class="swiper-slide">
2302                                    <button type="button" class="stay_button" name="site_tp" value="BB000">오토캠핑</button>
2303                                </li>
2304                                <li class="swiper-slide">
2305                                    <button type="button" class="stay_button" name="site_tp" value="BB001">글램핑</button>
2306                                </li>
2307                                <li class="swiper-slide">
2308                                    <button type="button" class="stay_button" name="site_tp" value="BB002">카라반</button>
2309                                </li>
2310                                <li class="swiper-slide">
2311                                    <button type="button" class="stay_button" name="site_tp" value="BB003">펜션</button>
2312                                </li>
2313                            </ul>
2314                        </div>
2315                    </div>
2316					<div class="search_form_input people">
2317						<span class="placeholder">성인0, 소인0</span>
2318						<div class="search_choice_box">
2319							<h3 class="title">인원을 선택해 주세요.</h3>
2320							<p class="text">소인에 대한 나이기준 및 추가요금 정책은 업체별로 상이하니 예약전 안내사항을 반드시 확인하시기 바랍니다.</p>
2321							<div class="content">
2322								<div class="people_count">
2323									<span class="people_count_text">성인</span>
2324									<div class="count_box adult">
2325										<!-- 0일때 - 버튼에 클래스 disabled 추가 -->
2326										<button type="button" class="count_box_decrease disabled"></button>
2327										<span class="count_box_num">0</span>
2328										<button type="button" class="count_box_increase"></button>
2329									</div>
2330								</div>
2331								<div class="people_count">
2332									<span class="people_count_text">소인</span>
2333									<div class="count_box child">
2334										<button type="button" class="count_box_decrease disabled"></button>
2335										<span class="count_box_num">0</span>
2336										<button type="button" class="count_box_increase disabled"></button>
2337									</div>
2338								</div>
2339							</div>
2340						</div>
2341					</div>
2342				</div>
2343
2344				<!-- <button type="button" class="find_nearby_btn">내 주변에서 검색</button> -->
2345
2346                <!-- 최근 검색 조건 노출 페이지 SearchTypePage TYPE: "LIST" | "MAP" | "MAIN" -->
2347                
2348				<!-- 최근 검색 조건 노출 페이지 END -->
2349				
2350				<!-- 검색 광고 영역 -->
2351				
2352				<div class="recent_searches">
2353				    <div class="title">
2354                        <strong>이달의 땡큐 추천 캠핑장</strong>
2355                    </div>
2356                    <div class="content">
2357                        <div class="swiper-container ad_camp_swiper" style="padding: 0;">
2358                            <ul class="swiper-wrapper" id="adContent">
2359                                                    	
2360                                <li class="swiper-slide swiper-slide-active">
2361                                    <a href="javascript:clkCampPr(2004,3664,'SEARCH');">
2362                                        <div class="pic">
2363                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2364                                                <p class="bat_ad">AD</p>
2365                                            </div>
2366                                            <img src="/file/2021/06/08/thumbM_202106083227.995.jpg">
2367                                        </div>
2368                                        <div class="txt_box">
2369                                            <p class="tit">에이미캠핑장</p>
2370                                            <p class="txt">강원 영월군</p>
2371                                            <div class="price_g">
2372                                                
2373                                                <p class="price">60,000원~</p>
2374                                            </div>
2375                                        </div>
2376                                    </a>       
2377                                </li>
2378                                                    	
2379                                <li class="swiper-slide swiper-slide-active">
2380                                    <a href="javascript:clkCampPr(2067,7330,'SEARCH');">
2381                                        <div class="pic">
2382                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2383                                                <p class="bat_ad">AD</p>
2384                                            </div>
2385                                            <img src="/file/2023/07/22/thumbM_2023072247876.2.jpg">
2386                                        </div>
2387                                        <div class="txt_box">
2388                                            <p class="tit">청학동별빛캠핑장</p>
2389                                            <p class="txt">경남 하동군</p>
2390                                            <div class="price_g">
2391                                                
2392                                                <p class="price">50,000원~</p>
2393                                            </div>
2394                                        </div>
2395                                    </a>       
2396                                </li>
2397                                                    	
2398                                <li class="swiper-slide swiper-slide-active">
2399                                    <a href="javascript:clkCampPr(1882,17651,'SEARCH');">
2400                                        <div class="pic">
2401                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2402                                                <p class="bat_ad">AD</p>
2403                                            </div>
2404                                            <img src="https://image.thankqcamping.com/file/2025/08/27/e73bfa88-08b0-4c99-9b65-8503a715337a-m.jpg">
2405                                        </div>
2406                                        <div class="txt_box">
2407                                            <p class="tit">산과 벗 캠핑장</p>
2408                                            <p class="txt">
2408충북 진천군</p>
2409                                            <div class="price_g">
2410                                                
2411                                                <p class="price">40,000원~</p>
2412                                            </div>
2413                                        </div>
2414                                    </a>       
2415                                </li>
2416                                                    	
2417                                <li class="swiper-slide swiper-slide-active">
2418                                    <a href="javascript:clkCampPr(2013,15397,'SEARCH');">
2419                                        <div class="pic">
2420                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2421                                                <p class="bat_ad">AD</p>
2422                                            </div>
2423                                            <img src="/file/2024/07/03/thumbM_2024070379848.67.jpg">
2424                                        </div>
2425                                        <div class="txt_box">
2426                                            <p class="tit">단양 도담캠핑장</p>
2427                                            <p class="txt">충북 단양군</p>
2428                                            <div class="price_g">
2429                                                
2430                                                <p class="price">60,000원~</p>
2431                                            </div>
2432                                        </div>
2433                                    </a>       
2434                                </li>
2435                                                    	
2436                                <li class="swiper-slide swiper-slide-active">
2437                                    <a href="javascript:clkCampPr(2058,1829,'SEARCH');">
2438                                        <div class="pic">
2439                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2440                                                <p class="bat_ad">AD</p>
2441                                            </div>
2442                                            <img src="/file/2026/09/18/thumbM_2026091854835.46.jpg">
2443                                        </div>
2444                                        <div class="txt_box">
2445                                            <p class="tit">라라솔캠핑장&펜션</p>
2446                                            <p class="txt">강원 횡성군</p>
2447                                            <div class="price_g">
2448                                                
2449                                                <p class="price">50,000원~</p>
2450                                            </div>
2451                                        </div>
2452                                    </a>       
2453                                </li>
2454                                                    	
2455                                <li class="swiper-slide swiper-slide-active">
2456                                    <a href="javascript:clkCampPr(2032,3822,'SEARCH');">
2457                                        <div class="pic">
2458                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2459                                                <p class="bat_ad">AD</p>
2460                                            </div>
2461                                            <img src="/file/2025/08/20/thumbM_2025082072245.81.jpg">
2462                                        </div>
2463                                        <div class="txt_box">
2464                                            <p class="tit">제령포레스트펜션&캠핑(구,고릴라펜션)</p>
2465                                            <p class="txt">경기 가평군</p>
2466                                            <div class="price_g">
2467                                                
2468                                                <p class="price">40,000원~</p>
2469                                            </div>
2470                                        </div>
2471                                    </a>       
2472                                </li>
2473                            
2474                            </ul>
2475                        </div>
2476                    </div>
2477				</div>
2478				
2479				<!-- 검색 광고 영역 END -->
2480			</div>
2481
2482			<div id="map-search-content">
2483				<div id="map_search_wrap" style="position: relative; width:100%; height: calc(100dvh - 61px - 75px);">
2484					<div class="search_form_box" style="padding: 16px;position: absolute; top:0; left;0; width: 100%; z-index: 3;">
2485						<div class="search_form_input calendar">
2486							<span class="placeholder">날짜를 선택해 주세요.</span>
2487							<div class="search_choice_box">
2488								<h3 class="title">날짜를 선택해 주세요.</h3>
2489								<div class="content">
2490									<div class="datepicker-map"></div>
2491								</div>
2492							</div>
2493						</div>
2494
2495						<div class="search_form_input people">
2496							<span class="placeholder">성인0, 소인0</span>
2497							<div class="search_choice_box">
2498								<h3 class="title">인원을 선택해 주세요.</h3>
2499								<p class="text">소인에 대한 나이기준 및 추가요금 정책은 업체별로 상이하니 예약전 안내사항을 반드시 확인하시기 바랍니다.</p>
2500								<div class="content">
2501									<div class="people_count">
2502										<span class="people_count_text">성인</span>
2503										<div class="count_box adult">
2504											<!-- 0일때 - 버튼에 클래스 disabled 추가 -->
2505											<button type="button" class="count_box_decrease disabled"></button>
2506											<span class="count_box_num">0</span>
2507											<button type="button" class="count_box_increase"></button>
2508										</div>
2509									</div>
2510									<div class="people_count">
2511										<span class="people_count_text">소인</span>
2512										<div class="count_box child">
2513											<button type="button" class="count_box_decrease disabled"></button>
2514											<span class="count_box_num">0</span>
2515											<button type="button" class="count_box_increase disabled"></button>
2516										</div>
2517									</div>
2518								</div>
2519							</div>
2520						</div>
2521					</div>			
2522
2523					<div class="search_marker">
2524					    <img width="20" src="/images/search/search-place.png" alt="검색 위치" />
2525					</div>
2526					
2527					<div id="search_map" style="width:100%;
2527 height: calc(100dvh - 61px);"></div>
2528
2529					<div style="position: absolute; bottom: 25px; right: 1rem;">	
2530						<button type="button" class="find_nearby_btn" id="map_nearby_button">내 주변 검색</button>
2531					</div>
2532				</div>
2533			</div>
2534
2535		  <!--↑↑↑↑↑↑↑↑↑ 컨텐츠 끝 ↑↑↑↑↑↑↑↑↑ -->
2536		</div>
2537
2538		<div class="btm_foot">
2539			<div class="btn_set type2">
2540				<ul>
2541					<li class="btn_wp">				
2542						<button type="button" class="btn_res" id="submitSearch"><span id="btn_res_txt">검색</span></button>					
2543					</li>
2544				</ul>
2545			</div>
2546		</div>
2547
2548    </div>
2549</div>
2550
2551<!-- camp Search (숙소 검색) -->
2552<div class="pop_layer_set" id="filter_pop">
2553	<div class="pop_layer filter_pop">
2554
2555		<div class="pop_title">
2556			<p class="tit">숙소검색</p>
2557			<button type="button" class="clo2" id="popFilterCloseButton"></button>
2558		</div>
2559
2560		<div class="pop_con">
2561			<div class="search_box">
2562				<div class="sear_set" style="max-width:100%;">
2563					<input type="text" id="ser_camp_keyword" list="sear_list" value="" placeholder="숙소명 또는 추천 키워드로 검색해보세요"  />
2564				</div>
2565			</div>
2566
2567			<ul id="search_result_box" class="search_result_box">
2568				<li>
2569					<div class="title">
2570						<strong>강원 곰배령에버그린</strong>
2571					</div>
2572					<p>펜션, 강원 인제군</p>
2573				</li>
2574				<li>
2575					<div class="title">
2576						<strong>강원 곰배령에버그린</strong>
2577					</div>
2578					<p>펜션, 강원 인제군</p>
2579				</li>
2580				<li>
2581					<div class="title">
2582						<strong>강원 곰배령에버그린</strong>
2583					</div>
2584					<p>펜션, 강원 인제군</p>
2585				</li>
2586				<li>
2587					<div class="title">
2588						<strong>강원 곰배령에버그린</strong>
2589					</div>
2590					<p>펜션, 강원 인제군</p>
2591				</li>
2592			</ul>
2593		
2594
2595			<div class="recent_searches">
2596				<div class="title">
2597					<strong>최근검색어</strong>
2598					<button type="button">전체삭제</button>
2599				</div>
2600				<div class="content">
2601					<div class="swiper-container pop_recent_keyword_swiper">
2602						<ul class="swiper-wrapper">
2603							<li class="swiper-slide">
2604								<div class="box">
2605									<span>키워드 1</span>
2606									<button class="deleted_button" type="button"><img src="/images/tot_clo.png" alt="" /></button>
2607								</div>
2608							</li>
2609							<li class="swiper-slide">
2610								<div class="box">
2611									<span>키워드 2</span>
2612									<button class="deleted_button" type="button"><img src="/images/tot_clo.png" alt="" /></button>
2613								</div>
2614							</li>
2615						</ul>
2616					</div>
2617				</div>
2618			</div>
2619
2620			<div class="recent_searches">
2621				<div class="title">
2622					<strong>땡큐 검색 키워드 추천</strong>
2623				</div>
2624				<div class="content">
2625					<div class="swiper-container pop_recent_keyword_swiper">
2626						<ul class="swiper-wrapper">
2627							<li class="swiper-slide">
2628								<div class="box keyword">숙박 세일 페스타</div>
2629							</li>
2630							<li class="swiper-slide">
2631								<div class="box keyword">댕댕이랑 태안가는 달</div>
2632							</li>
2633							<li class="swiper-slide">
2634								<div class="box keyword">신규입점</div>
2635							</li>
2636						</ul>
2637					</div>
2638				</div>
2639			</div>
2640
2641			<div class="recent_searches">
2642				<div class="title">
2643					<strong>이용객 후기에서 찾은 검색 키워드 추천</strong>
2644				</div>
2645				<div class="content">
2646					<div class="none_slide_box">
2647						<div class="box keyword2">놀이시설이 많아 아이들과 함께하기 좋은 캠핑장</div>
2648						<div class="box keyword2">사진이 잘나오는 뷰가 멋진 캠핑장</div>
2649						<div class="box keyword2">사장님이 친절하고 시설관리가 잘되어있는 캠핑장</div>
2650						<div class="box keyword2">조용하고 매너타임이 잘지켜지는 캠핑장</div>
2651					</div>
2652				</div>
2653			</div>
2654
2655			<div class="recent_searches">
2656				<div class="title" style="display: block">
2657					<strong>실시간 급상승 검색 숙소</strong>
2658					<p class="description">지역별 실시간 검색 순위를 보고싶으시면 <span>여기</span>를 눌러 선호지역을 선택해주세요. (최대3개지역 등록 가능)</p>
2659				</div>
2660				<div class="content">
2661					<ul class="rank">
2662						<li><span class="rank-number">1</span> <span class="company-name">업체명</span></li>
2663						<li><span class="rank-number">2</span> <span class="company-name">업체명</span></li>
2664						<li><span class="rank-number">3</span> <span class="company-name">업체명</span></li>
2665						<li><span class="rank-number">4</span> <span class="company-name">업체명</span></li>
2666						<li><span class="rank-number">5</span> <span class="company-name">업체명</span></li>
2667						<li><span class="rank-number">6</span> <span class="company-name">업체명</span></li>
2668						<li><span class="rank-number">7</span> <span class="company-name">업체명</span></li>
2669						<li><span class="rank-number">8</span> <span class="company-name">업체명</span></li>
2670						<li><span class="rank-number">9</span> <span class="company-name">업체명</span></li>
2671						<li><span class="rank-number">10</span> <span class="company-name">업체명</span></li>
2672					</ul>
2673				</div>
2674			</div>
2675
2676			<div class="btm_foot">
2677				<div class="btn_set type2">
2678					<ul>
2679						<li class="btn_wp">				
2680							<button type="button" class="btn_res"><span id="btn_res_txt">검색</span></button>					
2681						</li>
2682					</ul>
2683				</div>
2684			</div>
2685
2686		</div>
2687
2688	</div>
2689</div>
2690
2691<!-- script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpClientId=9qnra9njt9"></script -->
2692<script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=7pi6a4tp01"></script>
vendor: 2 bytes, line 2692
2692
2693<script>
2694	// SearchTypePage 값: "MAIN" | "MAP" | "LIST" | "COLLECT" 
2695
2696	/* 팝업 관련 함수 */
2697	const popSearchManager = {
2698		scrollPosition: 0,
2699		init: function(){
2700			const popFilterButtonEl = document.getElementById("top_search_input");
2701            const popFilterCloseButtonEl = document.getElementById("popSearchCloseButton");
2702
2703			popFilterButtonEl.addEventListener("click", () => {
2704                this.open();
2705				tabManager.init();
2706				
2707				this.createInfoBox();
2708            });
2709
2710            popFilterCloseButtonEl.addEventListener("click", () => {
2711                this.deleteInfoBox();
2712                this.close();
2713            });
2714
2715			this.pageSet();
2716		},
2717		// 타입별 페이지 세팅
2718		pageSet: function(){
2719			const listType = "LIST";
2720			
2721			if(listType == "COLLECT" || listType == "CAMPCOUPON"){
2722				// 리스트 검색 버튼명 변경
2723				const listTabButtonEl = document.getElementById("listTab")
2724				const searchKeywordInputEl = document.querySelector(".search_form_input.search")
2725				listTabButtonEl.innerText = "필터 검색"
2726				searchKeywordInputEl.style.display = "none"
2727				
2728				// 지도 검색 버튼 미노출
2729				const mapTabButtonEl = document.getElementById("mapTab")
2730				mapTabButtonEl.style.display = "none"
2731			}
2732		},
2733		// 필터 팝업 열기
2734        open: function (filterType) {
2735            this.scrollPosition = window.scrollY; // 현재 스크롤 위치 저장
2736			document.getElementById("search_pop").classList.add("on");
2737			document.body.style.overflow = "hidden"; 
2738			document.body.style.top = `-${this.scrollPosition}px`; // 현재 위치 유지
2739        },
2740		// 필터 팝업 닫기
2741        close: function () {
2742            document.getElementById("search_pop").classList.remove("on");
2743			document.body.style.overflow = "visible"; 
2744			document.body.style.top = ""; // 원래 상태로 복구
2745			window.scrollTo(0, this.scrollPosition); // 스크롤 위치 복원
2746        },
2747        // 팝업 오픈 시 말풍선 노출
2748        createInfoBox: function(){
2749            document.getElementById("mapInfoBox").classList.add("active");
2750            setTimeout(() => {
2751                mapInfoBox.classList.remove("active");
2752            }, 5000);
2753        },
2754        // 팝업 닫을 시 말풍선 제거
2755        deleteInfoBox: function(){
2756            document.getElementById("mapInfoBox").classList.remove("active");
2757        },
2758
2759		// 검색 페이지 타입이 MAP, LIST, COLLECT 일 때 search input placeholder 업데이트
2760		updateSearchInput: function(){
2761		    const listType = "LIST";
2762			const popFilterInputEl = document.querySelector(".search_div .text");
2763			let filterTexts = [];
2764
2765			// 검색 키워드 추가
2766			if (searchFilterManager._inputFieldEl.value) {
2767				filterTexts.push(searchFilterManager._inputFieldEl.value);
2768			}
2769
2770			// 지역 정보 추가
2771			if (searchFilterManager._filter.region || searchFilterManager._filter.sub_region.length > 0) {
2772				let regionText = "";
2773				if (searchFilterManager._filter.sub_region.length > 0) {
2774					regionText += " " + searchFilterManager._filter.sub_region.join(", ").replace(/ㆍ/g, ", "); // 서브 지역 여러 개일 경우 콤마로 연결
2775				}else{
2776				    regionText += searchFilterManager._filter.region;
2777				}
2778				filterTexts.push(regionText);
2779			}else{
2780			    if(listType == "LIST" || listType == "COLLECT" || listType == "CAMPCOUPON"){
2781			        filterTexts.push("지역 전체");
2782			    }
2783			}
2784
2785			// 날짜 추가
2786			const dateStr = searchFilterManager.choiceDateStr();
2787			if (dateStr) {
2788				filterTexts.push(dateStr);
2789			}
2790			
2791			// COLLECT 일때, 숙소구분 타입
2792			if (listType == "COLLECT" || listType == "CAMPCOUPON") {
2793                let siteTypeText = "";
2794                
2795                if (searchFilterManager._filter.site_type.length > 0) {
2796                    const siteTypeMap = {
2797                        "BB000": "오토캠핑",
2798                        "BB001": "글램핑",
2799                        "BB002": "카라반",
2800                        "BB003": "펜션"
2801                    };
2802            
2803                    // 코드 값을 한글로 변환
2804                    siteTypeText += " " + searchFilterManager._filter.site_type
2805                        .map(code => siteTypeMap[code] || code) // 매핑된 값이 없으면 원래 코드 유지
2806                        .join(", ");
2807                    
2808                    filterTexts.push(siteTypeText);
2809                } else {
2810                    filterTexts.push("숙소구분 전체");
2811                }
2812            }
2813
2814
2815			// 인원 추가
2816			let peopleText = [];
2817			if (searchFilterManager._filter.adultCount > 0) {
2818				peopleText.push(`성인 ${searchFilterManager._filter.adultCount}`);
2819			}
2820			if (searchFilterManager._filter.childCount > 0) {
2821				peopleText.push(`소인 ${searchFilterManager._filter.childCount}`);
2822			}
2823			if (peopleText.length > 0) {
2824				filterTexts.push(peopleText.join("/"));
2825			}
2826
2827			popFilterInputEl.innerHTML = filterTexts.join("ㆍ");
2828		}
2829
2830	}
2831
2832	/* 탭 관련 함수 */
2833	const tabManager = {
2834		init: function(){
2835			const tabs = document.querySelectorAll(".search_tab li");
2836			const listType = "LIST";
2837			const listTypeNum = listType == "MAP" ? 1 : 0;
2838
2839			 // 초기에 숙소 검색 활성화
2840			this.setActiveTab(listTypeNum);
2841
2842			// 탭 클릭 이벤트
2843			tabs.forEach((tab, index) => {
2844				tab.addEventListener("click", () => tabManager.setActiveTab(index));
2845			});
2846		},
2847		isListActive: function() {
2848			return this.currentTab === 'list'; // 'list' 탭이 활성화되었으면 true
2849		},
2850		setActiveTab: function(index){
2851			const listType = "LIST";
2852			const tabs = document.querySelectorAll(".search_tab li");
2853			const listSearchContent = document.getElementById("list-search-content");
2854			const mapSearchContent = document.getElementById("map-search-content");
2855			const mapBoxContent = document.getElementById("map_search_wrap");
2856
2857			// 모든 탭에서 active 제거
2858			tabs.forEach(tab => tab.classList.remove("active"));
2859			// 클릭한 탭에 active 추가
2860			tabs[index].classList.add("active");
2861
2862			if (index === 0) {
2863				// 숙소검색 활성화
2864				listSearchContent.style.display = "block";
2865				mapSearchContent.style.display = "none";
2866				
2867				this.updateSearchButton(() => searchFilterManager.submitSearch());
2868			} else {
2869				// 지도검색 활성화
2870				listSearchContent.style.display = "none";
2871				mapSearchContent.style.display = "block";
2872
2873				const width = mapBoxContent.clientWidth;  // 가로값
2874				const height = mapBoxContent.clientHeight; // 세로값
2875
2876				console.log("가로:", width, "세로:", height);
2877
2878				if(searchMapManager._MAP == null){
2879					// 지도 관련 이벤트
2880					searchMapManager.init();
2881				}
2882				
2883				if(listType == "MAP"){
2884					// 지도 페이지에 있는 메인 지도 가운데 좌표 가져ì˜
2884¤ê¸°
2885					if(typeof _MAP != "undefined"){
2886						const mainMapCenter = _MAP.getCenter();
2887						searchMapManager._MAP.setCenter(new naver.maps.LatLng(mainMapCenter._lat, mainMapCenter._lng));
2888						searchMapManager._MAP.setSize(new naver.maps.Size(width, height));
2889					}
2890				} else{
2891					searchMapManager._MAP.setSize(new naver.maps.Size(width, height));
2892				}
2893				
2894				this.updateSearchButton(() => searchFilterManager.submitMapSearch());
2895			}
2896		},
2897		updateSearchButton: function(eventHandler){
2898			const searchButton = document.getElementById("submitSearch");
2899            
2900            // 기존 이벤트 제거 후 새로운 이벤트 추가
2901            searchButton.replaceWith(searchButton.cloneNode(true));
2902            const newSearchButton = document.getElementById("submitSearch");
2903        
2904            newSearchButton.addEventListener("click", eventHandler);
2905		}
2906	}
2907
2908	/* 스와이퍼 관련 함수 */
2909	const swiperManager = {
2910		init: function(){
2911			this.listFilter();
2912			this.popRecentKeyword();
2913			this.placeTab();
2914			this.stayBtn();
2915			this.adCampList();
2916		},
2917		// 리스트 페이지 필터 선택 구분
2918		listFilter: function(){
2919			const recent_swiper = new Swiper('.recent_swiper', {
2920				pagination: false,
2921				slidesPerView: 'auto',
2922				paginationClickable: true,
2923				spaceBetween: 8,
2924				freeMode: true,
2925				lazyLoading: true,
2926				observer: true,
2927				observeParents: true,
2928				loop: false,
2929            });
2930
2931			return recent_swiper;
2932		},
2933		// 숙박구분분 선택 탭
2934		stayBtn: function(){
2935			const recent_swiper = new Swiper('.stay_btn_swiper', {
2936				pagination: false,
2937				slidesPerView: 'auto',
2938				paginationClickable: true,
2939				spaceBetween: 6,
2940				freeMode: true,
2941				lazyLoading: true,
2942				observer: true,
2943				observeParents: true,
2944				loop: false,
2945            });
2946
2947			return recent_swiper;
2948		},
2949		// 지역 선택 탭
2950		placeTab: function(){
2951			const recent_swiper = new Swiper('.place_tab_swiper', {
2952				pagination: false,
2953				slidesPerView: 'auto',
2954				paginationClickable: true,
2955				spaceBetween: 8,
2956				freeMode: true,
2957				lazyLoading: true,
2958				observer: true,
2959				observeParents: true,
2960				loop: false,
2961            });
2962
2963			return recent_swiper;
2964		},
2965		// 팝업 최근 검색어
2966		popRecentKeyword: function(){
2967			const recent_swiper = new Swiper('.pop_recent_keyword_swiper', {
2968				pagination: false,
2969				slidesPerView: 'auto',
2970				paginationClickable: true,
2971				spaceBetween: 8,
2972				freeMode: true,
2973				lazyLoading: true,
2974				observer: true,
2975				observeParents: true,
2976				loop: false,
2977            });
2978
2979			return recent_swiper;
2980		},
2981		// 검색 광고 영역
2982		adCampList: function(){
2983            const ad_camp_swiper = new Swiper('.ad_camp_swiper', {
2984                pagination: false,
2985                slidesPerView: 'auto',
2986                paginationClickable: true,
2987                spaceBetween: 8,
2988                freeMode: true,
2989                lazyLoading: true,
2990                observer: true,
2991                observeParents: true,
2992                loop: false,
2993            });
2994
2995            return ad_camp_swiper;
2996        },
2997	};
2998
2999
3000	/* 검색어 입력 관련 함수 */
3001	const searchUrlParams = new URLSearchParams(window.location.search);
3002	const searchFilterManager = {
3003	    _searchType: "LIST",
3004		_searchFormEl: document.querySelectorAll('.search_form_input'),
3005		_inputFieldEl: document.getElementById("ser_keyword_"),
3006		_placeCategoryButtonEl: document.querySelectorAll(".place_button"), 
3007		_filter: {
3008			site_type: searchUrlParams.get("site_tp") ? searchUrlParams.get("site_tp").split(",") : [],
3009			res_date: searchUrlParams.get("res_dt") || "",
3010			res_end_date: searchUrlParams.get("res_edt") || "",
3011			ser_res_date: searchUrlParams.get("res_dt") || "",
3012			ser_res_end_date: searchUrlParams.get("res_edt") || "",
3013			region: searchUrlParams.get("region") || "",
3014			sub_region: searchUrlParams.get("sub_region")  ? searchUrlParams.get("sub_region").split(",") : [],
3015			adultCount: searchUrlParams.get("ser_adult_count") || 0,
3016			childCount: searchUrlParams.get("ser_child_count") || 0,
3017			lat: null,
3018			lng: null
3019		},
3020		init: function(){
3021			// 기존 날짜 세팅
3022			this.getResDate();
3023			// 기존 인원 세팅
3024			this.getPersonCount();
3025			// 키워드 검색 이벤트
3026            this._inputFieldEl.value = searchUrlParams.get("ser_keyword");
3027            this._inputFieldEl.addEventListener("keyup", this.getKeywordCampName);
3028            if(this._inputFieldEl.value != ""){
3029                document.getElementById("deleteKeyword").style.display = "inline";
3030            }
3031			// 기존 숙소구분 세팅
3032			this.getSiteType();
3033			this.choiceSiteType();
3034
3035			// 팝업 오픈 input 텍스트 세팅
3036			if(searchFilterManager._searchType == "MAP" || searchFilterManager._searchType == "LIST" || searchFilterManager._searchType == "COLLECT" || searchFilterManager._searchType == "CAMPCOUPON"){
3037			    popSearchManager.updateSearchInput();
3038			}
3039			
3040			if(searchFilterManager._searchType == "LIST" && !(searchFilterManager._filter.ser_res_date == "" && searchFilterManager._filter.ser_res_end_date == "" )){
3041			    const emptyButtonEl = document.getElementById("empty_y");
3042			    emptyButtonEl.style.display = "block";
3043			}
3044
3045			// 검색하기 버튼 이벤트
3046			document.getElementById("submitSearch").addEventListener("click", this.submitSearch);
3047
3048			// 검색 인풋 초기화 버튼 이벤트
3049			document.getElementById("deleteKeyword").addEventListener("click", function(){
3050				document.getElementById("search_result_box").style.display = "none";
3051				document.getElementById("search_result_info_box").style.display = "none";
3052				document.getElementById("deleteKeyword").style.display = "none";
3053				searchFilterManager._inputFieldEl.value = ""
3054			});
3055
3056			// 달력 일정 초기화 버튼
3057			document.getElementById("calendarResetButton").addEventListener("click", function(){
3058				searchFilterManager.getResDate(true);
3059			});
3060			
3061
3062			// 필터 인풋 버튼 이벤트
3063			this._searchFormEl.forEach(input => {
3064				input.addEventListener('click', function(event) {
3065					document.querySelectorAll('.search_form_input').forEach(el => {
3066						document.getElementById("search_result_box").style.display = "none";
3067						document.getElementById("search_result_info_box").style.disply = "none";
3068						el.classList.remove("active");
3069					});
3070
3071					this.classList.add("active");
3072					document.querySelectorAll('.search_choice_box').forEach(box => {
3073						box.style.display = 'none';
3074					});
3075
3076					const choiceBox = this.querySelector('.search_choice_box');
3077					if (choiceBox) {
3078						choiceBox.style.display = 'block';
3079					}
3080
3081					event.stopPropagation();
3082				});
3083			});
3084
3085			document.addEventListener('click', function() {
3086				document.querySelectorAll('.search_choice_box').forEach(box => {
3087					box.style.display = 'none';
3088					if(searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == ""){
3089						searchFilterManager._filter.res_end_date = searchFilterManager._filter.res_date;
3090						searchFilterManager.updateDatePlaceholder();
3091					}
3092				});
3093				document.querySelectorAll('.search_form_input').forEach(el => {
3094					document.getElementById("search_result_box").style.display = "none";
3095					document.getElementById("search_result_info_box").style.display = "none";
3096					el.classList.remove("active");
3097				});
3098			});
3099
3100			this.updateRegionPlaceholder();
3101			this._placeCategoryButtonEl.forEach((button, index) => {
3102				button.addEventListener('click', function () {
3103					searchFilterManager._placeCategoryButtonEl.forEach(btn => btn.classList.remove("active"));
3104
3105					const region_grp = button.getAttribute('data-value');
3106					const region = button.getAttribute('data-region');
3107					const region_arr = button.getAttribute('data-arr');
3108					const placeChoiceBox = document.getElementById('place_choice_box');
3109					const placeChoiceUl = placeChoiceBox.querySelector('ul');
3110                  
3111					button.classList.add("active");
3112					searchFilterManager._filter.region = region_grp;
3113					searchFilterManager._filter.sub_region = [];
3114                    placeChoiceUl.innerHTML = '';
3115					searchFilterManager.updateRegionPlaceholder();
3116					
3117
3118					searchFilterManager.getRegionList(region_grp, region, region_arr);
3119				});
3120			});
3121			
3122			
3123
3124			// 내 주변에서 검색 버튼
3125			document.getElementById("map_nearby_button").addEventListener("click", function(){ 
3126			    location.href="/search/mapSearch.hbb";
3127			})
3128			
3129		},
3130
3131		// 싱크 맞춰야할 데이터 관리 searchFilterManager.syncFilters();
3132		syncFilters: function () {
3133			
3134			// LIST 페이지 동기화
3135			if (searchFilterManager._searchType == "LIST") {
3136			    filterManager._selectedFilters.ser_site_tp = [...searchFilterManager._filter.site_type];
3137				filterManager._selectedFilters['ser_site_tp'] = [...searchFilterManager._filter.site_type];
3138
3139				// UI 반영
3140				document.querySelectorAll(`.item_list button[name='ser_site_tp']`).forEach(item => {
3141					const value = item.getAttribute('value');
3142					if (searchFilterManager._filter.site_type.includes(value)) {
3143						item.classList.add("active");
3144					} else {
3145						item.classList.remove("active");
3146					}
3147				});
3148				
3149				document.querySelectorAll(`.stay_button[name='site_tp']`).forEach(item => {
3150                    const value = item.getAttribute('value');
3151                    if (searchFilterManager._filter.site_type.includes(value)) {
3152                        item.classList.add("active");
3153                    } else {
3154                        item.classList.remove("active");
3155                    }
3156                });
3157
3158				headFilterManager.updateActiveFilters();
3159			}
3160
3161			// site_type이 비어 있으면 '전체' 버튼 활성화, 아니면 비활성화
3162			const allButtonEl = document.getElementById("site_tp_all");
3163			if (searchFilterManager._filter.site_type.length === 0) {
3164				allButtonEl.classList.add("active");
3165			} else {
3166				allButtonEl.classList.remove("active");
3167			}
3168		},
3169
3170		// 키워드 검색
3171		getKeywordCampName: function(){
3172			const resultBoxEl = document.getElementById("search_result_box");
3173			const resultInfoBoxEl = document.getElementById("search_result_info_box");
3174
3175			if(searchFilterManager._inputFieldEl.value.length > 0) {
3176				document.getElementById("deleteKeyword").style.display = "inline";
3177			}else{
3178				document.getElementById("deleteKeyword").style.display = "none";
3179			}
3180			
3181			if(searchFilterManager._inputFieldEl.value.length > 1) {
3182				console.log(searchFilterManager._inputFieldEl.value);
3183				
3184				$.ajax({
3185					type: "POST",
3186					url: "/resv/ax_camp_name.hbb",
3187					data:{ser_camp_name: searchFilterManager._inputFieldEl.value},
3188					success: onSuccess,
3189					error: onError
3190				});
3191				
3192				function onSuccess(dataobj) {
3193					const result = JSON.parse(dataobj);
3194					const keyword = searchFilterManager._inputFieldEl.value.trim(); 
3195					let contents = [];
3196
3197					if (result.length === 0) {
3198						// 결과가 없을 때
3199						contents.push(
3200						`<li>
3201							<a href="javascript:;">
3202								<span class="searchPlace_icon"></span>
3203								<p class="keword_text">검색된 캠핑장이 없습니다.</span></p>
3204							</a>
3205						</li>`);
3206					} else {
3207						// 결과가 있을 때
3208						result.forEach((data) => {
3209							const highlightedName = data.campName.replace(
3210								new RegExp(`(${keyword})`, "gi"),
3211								`<span style="color: #F27226; font-weight: bold;">$1</span>`
3212							);
3213
3214							const el = 
3215							`<li>
3216								<a href="javascript:clkViewDirect('${data.campSeq}');">
3217									<span class="searchPlace_icon"></span>
3218									<p class="keword_text">${highlightedName}</p>
3219									<p class="keword_content">${data.campType}, ${data.shortAddress}</p>
3220								</a>
3221							</li>`;
3222							contents.push(el);
3223						});
3224					}
3225
3226					document.getElementById('search_result_box').innerHTML = contents.join("");
3227				}
3228
3229
3230				function onError() {}
3231
3232				resultBoxEl.style.display = 'block';
3233				resultInfoBoxEl.style.display = 'block';
3234			} else {
3235				document.getElementById('search_result_box').innerHTML = "";
3236				resultBoxEl.style.display = 'none';
3237				resultInfoBoxEl.style.display = 'none';
3238			}
3239		},
3240
3241		getRegionList: function(region_grp, region, arr){
3242		    const site_tp = searchFilterManager._filter.site_type ? searchFilterManager._filter.site_type.join(",") : "";
3243		    const listType = "LIST";
3244		    
3245			$.ajax({
3246				type: "POST",
3247				url: "/search/axRegion.hbb",
3248				data: {region_grp: region_grp, region: region, site_tp: site_tp},
3249				success: onSuccess,
3250				error: onError
3251			});
3252
3253			function onSuccess(dataobj) {
3254				document.getElementById('place_result_box').innerHTML = dataobj;
3255				
3256				if(listType == "COLLECT" || listType == "CAMPCOUPON"){
3257				    document.querySelectorAll('.sub_region .tnum').forEach(el => el.remove());
3258				}
3259				
3260				searchFilterManager.choiceRegion();
3261			}
3262
3263			function onError() {}
3264		},
3265		choiceRegion: function() {
3266			const allSubRegionButtonEl = document.getElementById("all_sub_region");
3267			const subRegionButtonsEl = document.querySelectorAll('.sub_region');
3268
3269			// 페이지 로드 시 선택된 지역들에 대한 UI 상태 동기화
3270			this.syncSubRegionUI();
3271
3272			subRegionButtonsEl.forEach(button => {
3273				button.addEventListener('click', () => {
3274					const value = button.getAttribute('data-sub-region');
3275
3276					if (this._filter.sub_region.includes(value)) {
3277						// 선택된 지역에서 제거
3278						this._filter.sub_region = this._filter.sub_region.filter(item => item !== value);
3279						button.classList.remove('active');
3280					} else {
3281						// 선택된 개수가 3개 미만일 때만 추가
3282						if (this._filter.sub_region.length < 3) {
3283							this._filter.sub_region.push(value);
3284							button.classList.add('active');
3285						} else {
3286							return; // 선택 개수 제한 초과 시 처리
3287						}
3288					}
3289
3290					// 지역 뱃지 업데이트
3291					this.addRegionBadge();
3292					this.updateRegionPlaceholder();
3293				});
3294			});
3295
3296			// "모든 지역 선택" 버튼 처리
3297			allSubRegionButtonEl.addEventListener('click', () => {
3298				this._filter.sub_region = [];
3299				subRegionButtonsEl.forEach(button => button.classList.remove('active'));
3300				allSubRegionButtonEl.classList.add('active');
3301
3302				// 지역 뱃지 및 플래이스홀더 업데이트
3303				this.addRegionBadge();
3304				this.updateRegionPlaceholder();
3305			});
3306		},
3307		// 지역 UI 상태 동기화
3308		syncSubRegionUI: function() {
3309			const subRegionButtonsEl = document.querySelectorAll('.sub_region');
3310			const allSubRegionButtonEl = document.getElementById("all_sub_region");
3311
3312			// 기존 선택된 지역들에 대한 UI 상태 업데이트
3313			subRegionButtonsEl.forEach(button => {
3314				const value = button.getAttribute('data-sub-region');
3315				if (this._filter.sub_region.includes(value)) {
3316					button.classList.add('active');
3317				} else {
3318					button.classList.remove('active');
3319				}
3320			});
3321
3322			// "모든 지역 선택" 버튼 처리
3323			if (this._filter.sub_region.length === 0) {
3324				allSubRegionButtonEl.classList.add('active');
3325			} else {
3326				allSubRegionButtonEl.classList.remove('active');
3327			}
3328		},
3329		// 지역 선택 시 아래 뱃지 추가
3330		addRegionBadge: function () {
3331			const placeChoiceBox = document.getElementById('place_choice_box');
3332			const placeChoiceUl = placeChoiceBox.querySelector('ul');
3333
3334			// 기존 뱃지들이 중복되지 않도록 처리
3335			placeChoiceUl.innerHTML = ''; // 기존 뱃지들 초기화
3336			this._filter.sub_region.forEach(sub_region => {
3337				const li = document.createElement('li');
3338				li.classList.add('badge_button');
3339				li.setAttribute('data-value', sub_region);
3340				li.innerHTML = `
3341					${sub_region}
3342					<button type="button" class="place_choice_delete btn_close" data-value="${sub_region}">
3343						<img src="/images/tot_clo.png">
3344					</button>
3345				`;
3346
3347				li.querySelector('.place_choice_delete').addEventListener('click', () => {
3348					this._filter.sub_region = this._filter.sub_region.filter(item => item !== sub_region);
3349					document.querySelector(`.sub_region[data-sub-region="${sub_region}"]`)?.classList.remove('active');
3350					this.addRegionBadge(); // 뱃지 업데이트
3351					this.updateRegionPlaceholder(); // 플래이스홀더 업데이트
3352				});
3353
3354				placeChoiceUl.appendChild(li);
3355			});
3356		},
3357		// 지역 선택 시 placeholder 업데이트
3358		updateRegionPlaceholder: function() {
3359			const regionPlaceholder = document.querySelector('.place .placeholder');
3360			
3361			if (this._filter.region.length > 0) {
3362				if(this._filter.sub_region.length > 0){
3363					document.getElementById('all_sub_region')?.classList.remove("active");
3364					regionPlaceholder.innerHTML = this._filter.region + ' ' + (this._filter.sub_region.length > 0 ? this._filter.sub_region.join(', ') : '');
3365				}else{
3366					document.getElementById('all_sub_region')?.classList.add("active");
3367					regionPlaceholder.innerHTML = this._filter.region;
3368				}
3369			} else {
3370				document.getElementById('all_sub_region')?.classList.add("active");
3371				regionPlaceholder.innerHTML = '지역을 선택 하세요.';
3372			}
3373		},
3374
3375		getPersonCount: function() {
3376			// 성인 카운트 관련 요소
3377			const adultCountEl = document.querySelectorAll(".count_box.adult .count_box_num");
3378			const adultIncreaseBtn = document.querySelectorAll(".count_box.adult .count_box_increase");
3379			const adultDecreaseBtn = document.querySelectorAll(".count_box.adult .count_box_decrease");
3380
3381			// 아이(소인) 카운트 관련 요소
3382			const childCountEl = document.querySelectorAll(".count_box.child .count_box_num");
3383			const childIncreaseBtn = document.querySelectorAll(".count_box.child .count_box_increase");
3384			const childDecreaseBtn = document.querySelectorAll(".count_box.child .count_box_decrease");
3385
3386			// 초기 값 반영
3387			adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3388			childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3389
3390			// 성인 증가 버튼 클릭 이벤트
3391			adultIncreaseBtn.forEach(btn => {
3392				btn.addEventListener("click", function () {
3393					searchFilterManager._filter.adultCount++;
3394					adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3395					
3396					searchFilterManager.updatePersonPlaceholder();
3397					searchFilterManager.updateButtonState();
3398				});
3399			});
3400
3401			// 성인 감소 버튼 클릭 이벤트
3402			adultDecreaseBtn.forEach(btn => {
3403				btn.addEventListener("click", function () {
3404					if (searchFilterManager._filter.adultCount > 1 || (searchFilterManager._filter.adultCount == 1 && searchFilterManager._filter.childCount == 0)) {
3405						searchFilterManager._filter.adultCount--;
3406						adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3407
3408						searchFilterManager.updatePersonPlaceholder();
3409						searchFilterManager.updateButtonState();
3410					}
3411				});
3412			});
3413
3414			// 아이(소인) 증가 버튼 클릭 이벤트
3415			childIncreaseBtn.forEach(btn => {
3416				btn.addEventListener("click", function () {
3417					if (searchFilterManager._filter.adultCount > 0) {
3418						searchFilterManager._filter.childCount++;
3419						childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3420						
3421						searchFilterManager.updatePersonPlaceholder();
3422						searchFilterManager.updateButtonState();
3423					}
3424				});
3425			});
3426
3427			// 아이(소인) 감소 버튼 클릭 이벤트
3428			childDecreaseBtn.forEach(btn => {
3429				btn.addEventListener("click", function () {
3430					if (searchFilterManager._filter.childCount > 0) {
3431						searchFilterManager._filter.childCount--;
3432						childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3433
3434						searchFilterManager.updatePersonPlaceholder();
3435						searchFilterManager.updateButtonState();
3436					}
3437				});
3438			});
3439
3440			// 업데이트 상태
3441			this.updateButtonState();
3442			this.updatePersonPlaceholder();
3443		},
3444		// 인원 버튼 상태 업데이트
3445		updateButtonState: function(){
3446			const adultDecreaseBtn = document.querySelectorAll(".count_box.adult .count_box_decrease");
3447			const childDecreaseBtn = document.querySelectorAll(".count_box.child .count_box_decrease");
3448			const childIncreaseBtn = document.querySelectorAll(".count_box.child .count_box_increase");
3449
3450			// 성인 버튼 상태
3451			if (searchFilterManager._filter.adultCount == 0 || (searchFilterManager._filter.adultCount == 1 && searchFilterManager._filter.childCount > 0)) {
3452				adultDecreaseBtn.forEach(adult => {
3453					adult.classList.add("disabled");
3454				})
3455			} else {
3456				adultDecreaseBtn.forEach(adult => {
3457					adult.classList.remove("disabled");
3458				})
3459			}
3460			// 아이 버튼 상태
3461			if (searchFilterManager._filter.adultCount == 0) {
3462				childIncreaseBtn.forEach(child => {
3463					child.classList.add("disabled");
3464				})
3465			} else {
3466				childIncreaseBtn.forEach(child => {
3467					child.classList.remove("disabled");
3468				})
3469			}
3470			// 아이 버튼 상태
3471			if (searchFilterManager._filter.childCount == 0) {
3472				childDecreaseBtn.forEach(child => {
3473					child.classList.add("disabled");
3474				})
3475			} else {
3476				childDecreaseBtn.forEach(child => {
3477					child.classList.remove("disabled");
3478				})
3479			}
3480		},
3481		// 인원 수 선택 시 placeholder 업데이트
3482		updatePersonPlaceholder: function() {
3483			const personPlaceholders = document.querySelectorAll('.people .placeholder'); 
3484			const adultCount = this._filter.adultCount;
3485			const childCount = this._filter.childCount;
3486
3487			personPlaceholders.forEach(holder => holder.innerHTML = `성인${adultCount}, 소인${childCount}`);
3488		},
3489
3490		getResDate: function(isReset){
3491			if(isReset || (searchFilterManager._filter.res_date == "" && searchFilterManager._filter.res_end_date == "")){
3492				const today = new Date();
3493				const tomorrow = new Date(today);
3494				tomorrow.setDate(today.getDate() + 1);
3495
3496				// 날짜 포맷 (yyyyMMdd)
3497				const todayStr = today.getFullYear() + ('0' + (today.getMonth() + 1)).slice(-2) + ('0' + today.getDate()).slice(-2);
3498				const tomorrowStr = tomorrow.getFullYear() + ('0' + (tomorrow.getMonth() + 1)).slice(-2) + ('0' + tomorrow.getDate()).slice(-2);
3499
3500				this._filter.res_date = todayStr;
3501				this._filter.res_end_date = tomorrowStr;
3502
3503				// datePicker 값도 개별적으로 초기화
3504				$(".datepicker-list").datepicker("setDate", today);
3505				$(".datepicker-map").datepicker("setDate", today);
3506			}
3507
3508			if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){
3509				const siteTypeBoxEl = document.getElementById("search_site_type_box");
3510				siteTypeBoxEl.style.display = "none";
3511			}
3512			
3513			// 날짜를 placeholder에 반영
3514			this.updateDatePlaceholder();
3515		},
3516		choiceDateStr: function(){
3517		    const datePlaceholders = document.querySelectorAll('.calendar .placeholder');
3518		    
3519			// res_date를 Date 객체로 변환 (yyyyMMdd 형식)
3520			const startDate = new Date(this._filter.ser_res_date.substring(0, 4), this._filter.ser_res_date.substring(4, 6) - 1, this._filter.ser_res_date.substring(6, 8));
3521			const serStartDate = new Date(this._filter.res_date.substring(0, 4), this._filter.res_date.substring(4, 6) - 1, this._filter.res_date.substring(6, 8));
3522			
3523			// res_end_date도 동일하게 처리
3524			const endDate = new Date(this._filter.ser_res_end_date.substring(0, 4), this._filter.ser_res_end_date.substring(4, 6) - 1, this._filter.ser_res_end_date.substring(6, 8));
3525			const serEndDate = new Date(this._filter.res_end_date.substring(0, 4), this._filter.res_end_date.substring(4, 6) - 1, this._filter.res_end_date.substring(6, 8));
3526
3527			// 날짜 형식이 올바른지 확인
3528			if (isNaN(startDate) || isNaN(endDate)) {
3529				datePlaceholders.forEach(holder => holder.innerHTML = '날짜를 선택해 주세요.');
3530				return;
3531			}
3532
3533			// 날짜를 'yyyy.MM.dd' 형식으로 변환 (02.02)
3534			//const startFormatted = startDate.getFullYear().toString().slice(-2) + '.' + ('0' + (startDate.getMonth() + 1)).slice(-2) + '.' + ('0' + startDate.getDate()).slice(-2);
3535			//const endFormatted = startDate.getFullYear().toString().slice(-2) + '.' + ('0' + (endDate.getMonth() + 1)).slice(-2) + '.' + ('0' + endDate.getDate()).slice(-2);
3536			const startFormatted = ('0' + (startDate.getMonth() + 1)).slice(-2) + '.' + ('0' + startDate.getDate()).slice(-2);
3537            const endFormatted = ('0' + (endDate.getMonth() + 1)).slice(-2) + '.' + ('0' + endDate.getDate()).slice(-2);
3538            const serStartFormatted = ('0' + (serStartDate.getMonth() + 1)).slice(-2) + '.' + ('0' + serStartDate.getDate()).slice(-2);
3539            const serEndFormatted = ('0' + (serEndDate.getMonth() + 1)).slice(-2) + '.' + ('0' + serEndDate.getDate()).slice(-2);
3540
3541			// 요일 계산 (짧은 요일 이름)
3542			const startDay = startDate.toLocaleString('ko-KR', { weekday: 'short' });
3543			const endDay = endDate.toLocaleString('ko-KR', { weekday: 'short' });
3544			const serStartDay = serStartDate.toLocaleString('ko-KR', { weekday: 'short' });
3545            const serEndDay = serEndDate.toLocaleString('ko-KR', { weekday: 'short' });
3546		
3547            if (this._filter.ser_res_date == "" || this._filter.ser_res_end_date == "") {
3548                datePlaceholders.forEach(holder => holder.innerHTML = `${serStartFormatted} ${serStartDay} - ${serEndFormatted} ${serEndDay}, ${this.calculateNights()}`);
3549                return '일정 선택';
3550            }
3551
3552			if((this._filter.res_date != "" && this._filter.res_end_date == "") || startFormatted == endFormatted){
3553				return `${startFormatted} ${startDay}, ${this.calculateNights()}(피크닉)`;
3554			}
3555
3556			return `${startFormatted} ${startDay} - ${endFormatted} ${endDay}, ${this.calculateNights()}`;
3557		},
3558		// 날짜 변경 시 placeholder 업데이트
3559		updateDatePlaceholder: function() {
3560			const datePlaceholders = document.querySelectorAll('.calendar .placeholder');
3561			const dateChoiceInfo = document.querySelector(".twonight");
3562    
3563			// 결과 출력 (예: 2025.02.19 목 - 2025.02.20 금, 1박)
3564			datePlaceholders.forEach(holder => holder.innerHTML = searchFilterManager.choiceDateStr());	
3565			// 결과 출력 (예: 당일, 1박 선택, 2박 선택)
3566			dateChoiceInfo.innerHTML = searchFilterManager.choiceDateStr();
3567		},
3568		// 숙박일수 계산
3569		calculateNights: function() {
3570			// 시작 날짜와 종료 날짜를 yyyyMMdd 형식에서 Date 객체로 변환
3571			const startDate = new Date(this._filter.res_date.substring(0, 4), this._filter.res_date.substring(4, 6) - 1, this._filter.res_date.substring(6, 8));
3572			const endDate = new Date(this._filter.res_end_date.substring(0, 4), this._filter.res_end_date.substring(4, 6) - 1, this._filter.res_end_date.substring(6, 8));
3573			
3574			// 날짜가 유효한지 확인
3575			if (isNaN(startDate) || isNaN(endDate)) {
3576				console.error("Invalid date format");
3577				return 0; // 날짜가 유효하지 않으면 0박
3578			}
3579
3580			// 날짜 차이 계산 (단위: 박)
3581			const difference = (endDate - startDate) / (1000 * 60 * 60 * 24);
3582
3583			// 0박 이하로 계산된 경우에는 당일로 처리
3584			return difference <= 0 ? `당일` : `${difference}박`;
3585		},
3586
3587		// 숙소 구분 세팅
3588		getSiteType: function () {
3589			const allButtonEl = document.getElementById("site_tp_all");
3590			const value = searchFilterManager._filter['site_type'];
3591
3592			// 모든 버튼의 'active' 클래스 초기화
3593			document.querySelectorAll(`.stay_button[name='site_tp']`).forEach(btn => btn.classList.remove("active"));
3594
3595			if (Array.isArray(value) && value.length > 0) {
3596				value.forEach(val => {
3597					document.querySelectorAll(`.stay_button[name='site_tp'][value='${val}']`).forEach(btn => btn.classList.add("active"));
3598				});
3599				allButtonEl.classList.remove("active"); // 개별 선택 시 '전체' 비활성화
3600			} else {
3601				allButtonEl.classList.add("active"); // 아무것도 선택되지 않으면 '전체' 활성화
3602			}
3603		},
3604		// 숙소 구분 노출 여부
3605		isSiteType: function(){
3606		    const siteTypeBoxEl = document.getElementById("search_site_type_box");
3607		
3608		    if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){ 
3609                siteTypeBoxEl.style.display = "none";
3610            }else{
3611                siteTypeBoxEl.style.display = "block";
3612            }
3613		},
3614		// 숙소 구분 선택
3615		choiceSiteType: function () {
3616			const allButtonEl = document.getElementById("site_tp_all");
3617			const siteTypeButtonEl = document.querySelectorAll('button[name="site_tp"]');
3618			
3619			// 전체 버튼 클릭 이벤트
3620            allButtonEl.addEventListener('click', () => {
3621                // 전체 선택 시 모든 개별 버튼 비활성화 & site_type 초기화
3622                this._filter.site_type = [];
3623                document.querySelectorAll(`button[name='site_tp']`).forEach(btn => btn.classList.remove('active'));
3624                allButtonEl.classList.add("active"); // 전체 버튼 활성화
3625        
3626                // LIST 페이지 필터 동기화
3627                searchFilterManager.syncFilters();
3628            });
3629
3630            // 개별 버튼 클릭 이벤트
3631			siteTypeButtonEl.forEach(button => {
3632				button.addEventListener('click', () => {
3633					const value = button.getAttribute('value');
3634
3635					if (this._filter.site_type.includes(value)) {
3636						// 선택된 값 제거
3637						this._filter.site_type = this._filter.site_type.filter(item => item !== value);
3638						document.querySelectorAll(`button[name='site_tp'][value='${value}']`).forEach(btn => btn.classList.remove('active'));
3639					} else {
3640						// 선택된 값 추가
3641						this._filter.site_type.push(value);
3642						document.querySelectorAll(`button[name='site_tp'][value='${value}']`).forEach(btn => btn.classList.add('active'));
3643					}
3644					
3645					// 숙소 구분 필터 싱크 맞추기
3646					searchFilterManager.syncFilters();
3647				});
3648			});
3649		},
3650        // 최근 검색 테이블 등록
3651        insertRecentSearch: function(){
3652            let status = "NO";
3653            
3654            const params = {
3655                search_keyword: searchFilterManager._inputFieldEl.value,
3656                site_tp: searchFilterManager._filter.site_type.join(","),
3657                res_date: searchFilterManager._filter.res_date,
3658                res_end_date: searchFilterManager._filter.res_end_date,
3659                region: searchFilterManager._filter.region,
3660                sub_region: searchFilterManager._filter.sub_region.join(","),
3661                adult_count: searchFilterManager._filter.adultCount,
3662                child_count: searchFilterManager._filter.childCount,   
3663            };
3664
3665            $.ajax({
3666                type: "POST",
3667                url: "/search/ax_insert_recent_search.hbb",
3668                data: params,
3669                success: onSuccess,
3670                error: onError
3671            });
3672            
3673            function onSuccess(dataobj) {
3674                status = dataobj;
3675                searchFilterManager.getRecentSearch();
3676            }
3677            function onError() {}   
3678            
3679            return status;
3680        },
3681        //최근검색리스트 가져오기
3682        getRecentSearch: function(){
3683            $.ajax({
3684                type: "POST",
3685                url: "/search/ax_get_recent_search.hbb",
3686                success: onSuccess,
3687                error: onError
3688            });
3689            
3690            function onSuccess(dataobj){
3691                const recentContentEl = document.getElementById("recentContent");
3692                recentContent.innerHTML = dataobj;
3693                
3694                document.addEventListener("click", function (event) {
3695                    const deleteButton = event.target.closest(".recentDeleteButton");
3696                    const searchButton = event.target.closest(".recentButton");
3697                
3698                    // 최근검색조건 삭제 이벤트
3699                    if (deleteButton) {
3700                        event.stopPropagation();
3701                        searchFilterManager.deleteRecentSearch(deleteButton);
3702                        return;
3703                    }
3704                
3705                    // 최근검색조건 이동 이벤트
3706                    if (searchButton) {
3707                        searchFilterManager.submitRecentSearch(searchButton);
3708                    }
3709                });
3710            }
3711            
3712            function onError(){}
3713        },
3714        //최근검색 개별 삭제
3715        deleteRecentSearch: function(el){
3716            const campSearchSeq = el.dataset.seq;
3717        
3718            $.ajax({
3719                type: "POST",
3720                url: "/search/ax_delete_recent_search.hbb",
3721                data: { delete_type: "ONE", camp_search_seq: campSearchSeq },
3722                success: function (response) {
3723                    const element = document.querySelector(`[data-value="${campSearchSeq}"]`);
3724                    if (element) {
3725                      element.remove();
3726                    }
3727                },
3728                error: function () {
3729                    
3730                }
3731            });
3732        },
3733        //최근검색 전체 삭제
3734        deleteALLRecentSearch: function(){
3735            $.ajax({
3736                type: "POST",
3737                url: "/search/ax_delete_recent_search.hbb",
3738                data: { delete_type: "ALL" },
3739                success: function (response) {
3740                    const element = document.getElementById("recentContent");
3741                    if (element) {
3742                        element.innerHTML = `<li class="swiper-slide" style="width: 100%"><div class="box" style="justify-content: center">조회된 내역이 없습니다.</div></li>`;
3743                    }
3744                },
3745                error: function () {
3746                    
3747                }
3748            });
3749        },
3750        //최근검색 클릭 이벤트
3751        submitRecentSearch: function(el){
3752            popSearchManager.close();
3753            
3754            if(searchFilterManager._searchType == "LIST"){
3755                searchFilterManager._filter.site_type = el.dataset.sitetp.split(",")
3756                searchFilterManager._filter.res_date = el.dataset.resdate
3757                searchFilterManager._filter.res_end_date = el.dataset.resenddate
3758                searchFilterManager._filter.ser_res_date = el.dataset.resdate
3759                searchFilterManager._filter.ser_res_end_date = el.dataset.resenddate
3760                searchFilterManager._filter.region = el.dataset.region
3761                searchFilterManager._filter.sub_region = el.dataset.subregion.split(",")
3762                searchFilterManager._filter.adultCount = el.dataset.adultcount
3763                searchFilterManager._filter.childCount = el.dataset.childcount
3764                
3765                popSearchManager.updateSearchInput();
3766                searchFilterManager.updateRegionPlaceholder();
3767                headFilterManager.isHeadFilterCheck();
3768                DataListManager.fetchData(true);
3769                
3770                return;
3771            }
3772        
3773            // URLSearchParams 객체 생성
3774            const searchParams = new URLSearchParams({
3775                site_tp: el.dataset.sitetp,
3776                res_dt: el.dataset.resdate,
3777                res_edt: el.dataset.resenddate,
3778                region: el.dataset.region,
3779                sub_region: el.dataset.subregion,
3780                ser_adult_count: el.dataset.adultcount,
3781                ser_child_count: el.dataset.childcount,
3782                ser_keyword: ""
3783            });
3784            
3785            window.location.href = `/resv/list.hbb?${searchParams.toString()}`;
3786        },
3787		//리스트 검색하기
3788		submitSearch: function () {
3789		    popSearchManager.close();
3790		    
3791		    if(searchFilterManager._searchType == "COLLECT" || searchFilterManager._searchType == "CAMPCOUPON"){
3792		        searchFilterManager._filter.ser_res_date = searchFilterManager._filter.res_date;
3793                searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date; 
3794                                
3795		        popSearchManager.updateSearchInput();
3796		        CollectManager.fetchDatas(true);
3797		        return;
3798		    }
3799		    
3800		    if(searchFilterManager._searchType == "LIST"){
3801		        const result = searchFilterManager.insertRecentSearch();
3802		        console.log(result);
3803		        
3804		        searchFilterManager._filter.ser_res_date = searchFilterManager._filter.res_date;
3805                searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date; 
3806		    
3807		        popSearchManager.updateSearchInput();
3808				headFilterManager.isHeadFilterCheck();
3809		        DataListManager.fetchData(true);
3810		        
3811                return;
3812            }
3813            
3814            // 최근 검색 내역 등록
3815            const result = searchFilterManager.insertRecentSearch();
3816            console.log(result);
3817
3818			const strSubRegion = searchFilterManager._filter.sub_region.join(",");
3819			const keyword = searchFilterManager._inputFieldEl.value;
3820
3821			// URLSearchParams 객체 생성
3822			const searchParams = new URLSearchParams({
3823				site_tp: searchFilterManager._filter.site_type,
3824				res_dt: searchFilterManager._filter.res_date,
3825				res_edt: searchFilterManager._filter.res_end_date,
3826				region: searchFilterManager._filter.region,
3827				sub_region: strSubRegion,
3828				ser_adult_count: searchFilterManager._filter.adultCount,
3829				ser_child_count: searchFilterManager._filter.childCount,
3830				ser_keyword: keyword
3831			});
3832
3833			// filterManager._selectedFilters가 존재할 경우 URL에 추가
3834			const params = (typeof filterManager !== "undefined" && filterManager._selectedFilters) ? filterManager._selectedFilters : {};
3835
3836			// filterManager._selectedFilters 값이 있으면 추가
3837			Object.keys(params).forEach((key) => {
3838				const value = filterManager._selectedFilters[key];
3839
3840				if (Array.isArray(value) && value.length > 0) {
3841					// 배열이면 쉼표로 구분된 문자열로 변환하여 추가
3842					searchParams.append(key, value.join(","));
3843				} else if (value) {
3844					// 값이 비어있지 않으면 추가
3845					searchParams.append(key, value);
3846				}
3847			});
3848			
3849			// 최종 URL 이동
3850			window.location.href = `/resv/list.hbb?${searchParams.toString()}`;
3851		},
3852		//지도 검색하기
3853		submitMapSearch: function(){
3854		    popSearchManager.close();
3855		    
3856		    const markerCoordinate = searchMapManager.getMarkerCoordinate();
3857            const lat = markerCoordinate.lat();
3858            const lng = markerCoordinate.lng();
3859            const zoom = searchMapManager._MAP.getZoom();
3860
3861		    if(searchFilterManager._searchType == "MAP"){
3862                popSearchManager.updateSearchInput();
3863                
3864                _MAP.setZoom(zoom);
3865                _MAP.setCenter(new naver.maps.LatLng(lat, lng));
3866                DataManager.fetchData(_MAP, true);
3867                return;
3868            }
3869            
3870			const URL= `/search/mapSearch.hbb?zoom=${zoom}&res_dt=${searchFilterManager._filter.res_date}&res_edt=${searchFilterManager._filter.res_end_date}&lat=${lat}&lng=${lng}`;
3871		
3872			// URL 이동
3873			window.location.href = URL;
3874		}
3875	}
3876
3877	/* 달력 관련 함수 */
3878	const searchCalendarManager = {
3879		init: function(){
3880			$.datepicker.setDefaults({
3881				  closeText: "닫기",
3882				  prevText: "이전달",
3883				  nextText: "다음달",
3884				  currentText: "오늘",
3885				  monthNames: ["1월", "2월", "3월", "4월", "5월", "6월","7월", "8월", "9월", "10월", "11월", "12월"],
3886				  monthNamesShort: ["1월", "2월", "3월", "4월", "5월", "6월","7월", "8월", "9월", "10월", "11월", "12월"],
3887				  dayNames: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
3888				  dayNamesShort: ["일", "월", "화", "수", "목", "금", "토"],
3889				  dayNamesMin: ["일", "월", "화", "수", "목", "금", "토"],
3890				  weekHeader: "주",
3891				  dateFormat: "yymmdd",
3892				  firstDay: 0,
3893				  isRTL: false,
3894				  showMonthAfterYear: true,
3895				  yearSuffix: "년",
3896				  defaultDate: searchFilterManager._filter.ser_res_date
3897			})
3898			$(".datepicker-list").datepicker({
3899				minDate: 0,
3900				selectOtherMonths: true,
3901				beforeShowDay: searchCalendarManager.funcBeforeShowDay,
3902				onSelect: function (selected, event) {
3903					var dt = $(this).val();
3904					searchCalendarManager.selectCalendar(dt);	    	
3905				}
3906			});
3907
3908			$(".datepicker-map").datepicker({
3909				minDate: 0,
3910				selectOtherMonths: true,
3911				beforeShowDay: searchCalendarManager.funcBeforeShowDay,
3912				onSelect: function (selected, event) {
3913					var dt = $(this).val();
3914					searchCalendarManager.selectCalendar(dt);	    	
3915				}
3916			});
3917		},
3918		selectCalendar: function(dt){
3919			if(searchFilterManager._filter.res_end_date=="" && searchFilterManager._filter.res_date <= dt) {
3920				//예약불가검색
3921				if(searchFilterManager._filter.res_date < dt) {
3922					var s_dt = searchFilterManager._filter.res_date
3923					var s_days = diff_date(searchFilterManager._filter.res_date, dt)
3924				} else {
3925					var s_dt = dt
3926					var s_days = diff_date(dt,searchFilterManager._filter.res_date)
3927				}
3928
3929				if (s_days > 6) {
3930					action_popup.alert("최대 6박까지 검색이 가능합니다.")
3931					searchFilterManager._filter.res_date = dt
3932					searchFilterManager._filter.res_end_date = ""
3933					searchFilterManager._filter.ser_res_date = dt
3934                    searchFilterManager._filter.ser_res_end_date = ""
3935					searchFilterManager._filter.site_type = ['BB006']
3936					
3937					// 숙소 구분 필터 싱크 맞추기
3938                    searchFilterManager.syncFilters();
3939                    
3940					return
3941				}
3942
3943				searchFilterManager._filter.res_date = s_dt
3944				searchFilterManager._filter.ser_res_date = s_dt
3945				var ndt = new Date(s_dt.substr(0,4),parseInt(s_dt.substr(4,2))-1,parseInt(s_dt.substr(6,2)));
3946				ndt.setDate(ndt.getDate() + s_days);
3947				searchFilterManager._filter.res_end_date = ndt.getFullYear()+''+filldate(ndt.getMonth()+1)+''+filldate(ndt.getDate())
3948				searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date
3949				searchFilterManager._filter.res_day = s_days
3950				if(searchFilterManager._filter.ser_res_date == searchFilterManager._filter.ser_res_end_date){
3951				    searchFilterManager._filter.site_type = ['BB006']
3952				}else{
3953				    searchFilterManager._filter.site_type = []
3954				}
3955				$(".datepicker-list").datepicker({beforeShowDay: searchCalendarManager.funcBeforeShowDay});
3956				$(".datepicker-map").datepicker({beforeShowDay: searchCalendarManager.funcBeforeShowDay});
3957			} else {
3958				searchFilterManager._filter.res_date = dt
3959				searchFilterManager._filter.res_end_date = ""
3960				searchFilterManager._filter.ser_res_date = dt
3961                searchFilterManager._filter.ser_res_end_date = ""
3962				searchFilterManager._filter.site_type = ['BB006']
3963			}
3964
3965			searchFilterManager.syncFilters();
3966            searchFilterManager.isSiteType();
3967			searchFilterManager.updateDatePlaceholder();
3968		},
3969		funcBeforeShowDay: function (date) {
3970            var result = null;
3971            var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
3972            result = [true, ""]; // 기본값은 빈 문자열
3973        
3974            var formattedDate = y + '' + filldate(m + 1) + '' + filldate(d); // 현재 날짜 포맷팅
3975        
3976            // 선택한 날짜가 범위 내에 있을 때 ui-state-active 클래스 추가
3977            if (searchFilterManager._filter.res_date <= formattedDate && searchFilterManager._filter.res_end_date >= formattedDate) {
3978                if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date){
3979                    result = [true, "ui-state-active"];
3980                }else{
3981                    if(searchFilterManager._filter.res_date == formattedDate){
3982                        result = [true, "ui-state-active left"];
3983                    }else if(searchFilterManager._filter.res_end_date == formattedDate){
3984                        result = [true, "ui-state-active right"];
3985                    }else{
3986                        result = [true, "ui-state-active-a"];
3987                    }
3988                }
3989                
3990            }
3991            // 그 외에는 기본값으로 빈 문자열을 반환
3992            else {
3993                result = [true, ""];
3994            }
3995        
3996            return result;
3997        },
3998	}
3999
4000	// 네이버 지도 관련
4001    const searchMapManager = {
4002		_LAT: null,
4003		_LNG: null,
4004		_MAP: null,
4005		init: function() {
4006			// 대체 좌표
4007			this._LAT = 37.82883056;
4008			this._LNG = 127.5117778;
4009			this.createMap(searchMapManager._LAT, searchMapManager._LNG);
4010			
4011			if(app_yn=='Y') {
4012			    if(app_os=='android'){
4013			        window.Android.getGpsLocation();
4014			    }
4015                if(app_os=='ios'){
4016                    goIosAp('getGpsLocation');
4017                }
4018            }else{
4019                if (navigator.geolocation) {
4020                    navigator.geolocation.getCurrentPosition(searchMapManager.locationSuccess.bind(this), searchMapManager.locationError.bind(this));
4021                } else {
4022                    this.locationError("이 브라우저는 Geolocation을 지원하지 않습니다.");
4023                }
4024            }
4025		
4026		},
4027		locationSuccess: function(position) {
4028			this._LAT = position.coords.latitude;
4029			this._LNG = position.coords.longitude;
4030			searchMapManager.createMap(searchMapManager._LAT, searchMapManager._LNG);
4031		},
4032		locationError: function(error) {
4033			switch(error.code) {
4034				case error.PERMISSION_DENIED:
4035					console.log("사용자가 위치 정보 요청을 거부했습니다.");
4036					break;
4037				case error.POSITION_UNAVAILABLE:
4038					console.log("위치 정보를 사용할 수 없습니다.");
4039					break;
4040				case error.TIMEOUT:
4041					console.log("위치 정보 요청이 시간 초과되었습니다.");
4042					break;
4043				case error.UNKNOWN_ERROR:
4044					console.log("알 수 없는 오류가 발생했습니다.");
4045					break;
4046			}
4047		},
4048        createMap: function(lat, lng) {
4049            const mapOptions = {
4050                center: new naver.maps.LatLng(lat, lng),
4051                zoom: 10
4052            };
4053
4054            this._MAP = new naver.maps.Map("search_map", mapOptions);
4055        },
4056		getMarkerCoordinate: function(){
4057			return this._MAP.getCenter();
4058		}
4059    };
4060    
4061    // 앱 함수
4062    function getLocation(data) {
4063		console.log("===== 앱 호출 =====");
4064		// 검색 데이터
4065		const serLat = parseFloat("");
4066        const serLng = parseFloat("");
4067
4068		// data를 ','로 분리하여 변수에 저장
4069		let [lat, lng] = data.split(',').map(Number);
4070
4071		// 값 설정
4072		searchMapManager._LAT = lat;
4073		searchMapManager._LNG = lng;
4074		
4075		if(searchMapManager._MAP == null){
4076		    searchMapManager.createMap(searchMapManager._LAT, searchMapManager._LNG);
4077		}
4078
4079		if (typeof _LAT !== "undefined" && typeof _LNG !== "undefined") {
4080		    _myLat = lat;
4081		    _myLng = lng;
4082		    
4083			_LAT = _myLat;
4084			_LNG = _myLng;
4085			
4086			if(_MAP == null){
4087			    if(!isNaN(serLat) || !isNaN(serLng)){
4088                    MapManager.init(serLat, serLng);
4089                    return;
4090                }
4091                
4092                MapManager.init(_LAT, _LNG);
4093			}
4094		}
4095	}
4096
4097
4098	// 초기화 코드
4099	$(document).ready(function () {
4100		// 팝업 관련 이벤트
4101		popSearchManager.init();
4102		// 탭 관련 이벤트
4103		tabManager.init();
4104		// 스와이퍼 관련 이벤트
4105		swiperManager.init();
4106		// 검색 관련 이벤트
4107		searchFilterManager.init();
4108		// 달력 관련 이벤트
4109		searchCalendarManager.init();
4110	});
4111</script>
4111
4112
4113        </div><!-- //wrap_in -->
4114       
4115    </div> <!--// wrap -->
4116<input type="hidden" name="festa_yn" value="Y">
4117</form>
4118</body>
4119<script>
4120	const mem_grade = "0";
4121	const enter_path = "";
4122</script>
vendor: 2 bytes, line 4122
4122
4123<script src="/js/search_list.js?version=20261001-1"></script>
vendor: 2 bytes, line 4123
4123
4124<script>
4125$(window).scroll(function(){
4126    if($("#wrap").css("display") != "none") {
4127        sc_top = Math.ceil($(window).scrollTop())
4128        sc_hei = Math.ceil($(document).height() - $(window).height())
4129        //$(".head_in").html(sc_hei + "/" + sc_top)
4130        if(sc_hei - 150 < sc_top && !DataListManager._isPending) {
4131            DataListManager.goResSerNext()
4132        }
4133    }
4134});
4135
4136document.addEventListener("DOMContentLoaded", function() {
4137    // 필터 순서 정렬 이벤트
4138    filterManager.sortSelect(() => DataListManager.fetchData(true));
4139
4140    // 데이터 조회 이벤트
4141    DataListManager.init();
4142
4143    // 태그 검색하기 버튼 이벤트
4144    filterManager.createTagClickEvent(()=>{
4145        filterManager._selectedFilters.page = 0;
4146        DataListManager.fetchData(true);
4147    });
4148
4149    // 필터 검색하기 버튼 이벤트
4150    filterManager.updateEmptyState();
4151    document.getElementById("searchSubmitButton").addEventListener('click', function(){
4152        filterManager.close();
4153        filterManager._selectedFilters.page = 0;
4154        DataListManager.fetchData(true);
4155    })
4156
4157    // 예약가능 버튼 이벤트
4158    document.getElementById("empty_y").addEventListener('click', function(){
4159        filterManager._selectedFilters.page = 0;
4160        filterManager.toggleEmpty();
4161        DataListManager.fetchData(true);
4162    })
4163
4164    // 뷰 타입 버튼 이벤트
4165    document.addEventListener("click", function (event) {
4166        const selViewBtn = document.querySelector(".sel_view img");
4167        const galleryView = DataListManager._viewType;
4168
4169        // `.sel_view` 버튼 클릭 시 실행
4170        if (event.target.closest(".sel_view")) {
4171            if (galleryView == "PIC") {
4172                DataListManager._viewType = "LIST";
4173                selViewBtn.src = "../images/thumb-pic.png";
4174                selViewBtn.alt = "갤러리형으로 보기";
4175                document.getElementById("DivResvList").classList.add("view_type_info");
4176                document.getElementById("DivResvPrList").classList.add("view_type_info");
4177            } else {
4178                DataListManager._viewType = "PIC";
4179                selViewBtn.src = "../images/thumb.png";
4180                selViewBtn.alt = "리스트로 보기";
4181                document.getElementById("DivResvList").classList.remove("view_type_info");
4182                document.getElementById("DivResvPrList").classList.remove("view_type_info");
4183            }
4184        }
4185    });
4186
4187    // 찜 버튼
4188    document.getElementById("DivResvList").addEventListener("click", function (event) {
4189        if (event.target.classList.contains("btn_zzim")) {
4190            event.preventDefault();
4191            event.stopPropagation();
4192
4193            const memseq = "";
4194            const $zzimEl = $(event.target);
4195            const campseq = $zzimEl.data("value");
4196
4197            if(memseq == ""){
4198                action_popup.alert('로그인후 이용해 주세요.');
4199                return;
4200            }
4201
4202            chgFavor($zzimEl,campseq,1)
4203        }
4204    });
4205
4206    // 신기능 안내 말풍선
4207    document.getElementById("viewInfoBox").classList.add("active");
4208    setTimeout(() => {
4209        viewInfoBox.classList.remove("active");
4210    }, 5000);
4211});
4212
4213</script>
4213
4214</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.