PageSourceSearch

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

html thankqcamping.com collected 2026-09-24 12:06:51 UTC 178,437 bytes, 4,218 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=20260901-1">
31    <link rel="stylesheet" href="/js/swiper/swiper.min.css?version=20260901-1"/>
32    <link rel="stylesheet" href="/js/mCustomScrollbar/jquery.mCustomScrollbar.css?version=20260901-1"/>
33    <link rel="stylesheet" href="/css/tqc.css?version=20260901-1"/>
34    
34<script type="text/javascript" src="/js/jquery-1.12.4.min.js?version=20260914-1"></script>
34
35    
35<script src="/js/jquery-ui.min.js?version=20260914-1"></script>
35
36    
36<script type="text/javascript" src="/js/swiper/swiper.min.js?version=20260914-1"></script>
36
37    
37<script type="text/javascript" src="/js/mCustomScrollbar/jquery.mCustomScrollbar.js?version=20260914-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=20260901-1" /-->
39    
39<script type="text/javascript" src="/js/common.js?version=20260914-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=20260914-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=20260914-1"></script>
790
791		
791<script src="/js/m_map.js?version=20260914-1"></script>
791
792		
792<script src="/js/m_sns.js?version=20260914-1"></script>
792
793		
793<script src="/js/join.js?version=20260914-1"></script>
793
794		
794<script src="/js/resv.js?version=20260914-1"></script>
794
795		
795<script src="/js/talk.js?version=20260914-1"></script>
795
796		
796<script src="/js/cs.js?version=20260914-1"></script>
796
797		
797<script src="/js/coupon.js?version=20260914-1"></script>
797
798		
798<script src="/js/iscroll.js?version=20260914-1"></script>
798
799		
799<script src="/js/my.js?version=20260914-1"></script>
799
800		
800<script src="/js/trans.js?version=20260914-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=20260926&res_edt=20260926">피크닉</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="DL012">#양평숙박할인쿠폰</button>
1217				</li>
1218            
1219				<li class="swiper-slide " >
1220					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL001">#충북숙박쿠폰</button>
1221				</li>
1222            
1223				<li class="swiper-slide " >
1224					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL010">#추석숙박할인쿠폰</button>
1225				</li>
1226            
1227				<li class="swiper-slide " >
1228					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL011">#금밤캠핑</button>
1229				</li>
1230            
1231				<li class="swiper-slide festa-last" style="display:none;">
1232					<button type="button" class="festa_button tag_name " name="ser_festa_gbn" value="DL007">#국방가족 할인쿠폰</button>
1233				</li>
1234            		
1235                        <li class="swiper-slide">
1236                            <button type="button" class="keyword_button tag_name" name="ser_get_coupon_yn" value="Y">즉시할인</button>
1237                        </li>
1238                        <li class="swiper-slide">
1239                            <button type="button" class="keyword_button tag_name" name="ser_disc_yn" value="Y">할인특가</button>
1240                        </li>
1241                        <li class="swiper-slide">
1242                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BM013">물놀이장 구비</button>
1243                        </li>		
1244                        <li class="swiper-slide">
1245                            <button type="button" class="keyword_button tag_name" name="ser_kid" value="Y">아이들 놀이시설 구비</button>
1246                        </li>
1247						<li class="swiper-slide">
1248                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BP000">반려동물 동반</button>
1249                        </li>
1250                        <li class="swiper-slide">
1251                            <button type="button" class="keyword_button tag_name" name="ser_camp_position" value="C,D,E">차가운 계곡ㆍ강 주변</button>
1252                        </li>
1253                        <li class="swiper-slide">
1254                            <button type="button" class="keyword_button tag_name" name="ser_camp_position" value="A">시원한 바다 주변</button>
1255                        </li>
1256                        <li class="swiper-slide">
1257                            <button type="button" class="keyword_button tag_name" name="ser_camp_spec" value="BO003">유유자적 낚시장 주변</button>
1258                        </li>
1259					</ul>
1260				</div>
1261			</div>
1262		</div>
1263
1264	</div>
1265
1266	<div class="filter_cont ">
1267		<div class="swiper-container filter_cont_swiper">
1268			<ul class="swiper-wrapper">
1269				<li class="swiper-slide">
1270					<button type="button" class="btn_filter" id="popFilterButton"></button>
1271				</li>
1272				<li class="swiper-slide">
1273					<div class="filter_name" id="group1_txt" data-value="filter_item1">숙소구분</div>
1274				</li>
1275				<li class="swiper-slide">
1276					<div class="filter_name" id="group2_txt" data-value="filter_item2">검색구분</div>
1277				</li>
1278				<li class="swiper-slide">
1279					<div class="filter_name" id="group3_txt" data-value="filter_item3">숙소환경</div>
1280				</li>
1281				<li class="swiper-slide">
1282					<div class="filter_name" id="group4_txt" data-value="filter_item4">주변환경</div>
1283				</li>
1284				
1285				<li class="swiper-slide">
1286					<div class="filter_name" id="group5_txt" data-value="filter_item5">한줄후기</div>
1287				</li>
1288				
1289			</ul>
1290		</div>
1291	</div>
1292
1293</div>
1294
1295<!-- 필터에 아이콘 XX -->
1296<!-- popup(modal) start -->
1297<div class="pop_layer_set" id="filter_pop">
1298    <!-- 필터 눌렀을 때 나오는 창 -->
1299    <div class="pop_layer filter_pop">
1300        <div class="pop_title">
1301            <p class="tit">필터</p>
1302            <button type="button" class="clo2" id="popFilterCloseButton"></button>
1303        </div>
1304        <div class="pop_con">
1305            <div class="filter_top_fixed swiper-container">
1306                <div class="swiper-wrapper tabs">
1307                    <div id="tab_filter_item1" class="filter_item swiper-slide active" data-target="filter_item1">숙소구분
1308                    </div>
1309                    <div id="tab_filter_item2" class="filter_item swiper-slide" data-target="filter_item2">검색구분</div>
1310                    <div id="tab_filter_item3" class="filter_item swiper-slide" data-target="filter_item3">숙소환경</div>
1311                    <div id="tab_filter_item4" class="filter_item swiper-slide" data-target="filter_item4">주변환경</div>
1312					
1313                    <div id="tab_filter_item5" class="filter_item swiper-slide" data-target="filter_item5">한줄후기</div>
1314					
1315                </div>
1316            </div>
1317
1318            <!-- item_list div 각 item 선택시 클래스 active 추가 -->
1319            <ul class="filter_pop_ul">
1320                <li id="filter_item1">
1321                    <p class="title">숙소구분</p>
1322                    <div class="item_list">
1323                        <button type="button" name="ser_site_tp" value="BB000" id="chk_lodg1">오토캠핑</button>
1324                        <button type="button" name="ser_site_tp" value="BB001" id="chk_lodg2">글램핑</button>
1325                        <button type="button" name="ser_site_tp" value="BB002" id="chk_lodg3">카라반</button>
1326                        <button type="button" name="ser_site_tp" value="BB003" id="chk_lodg4">펜션</button>
1327                    </div>
1328                </li>
1329
1330                <li id="filter_item2">
1331                    <p class="title">검색구분</p>
1332                    <!-- <div class="tooltip">
1333                      <p class="tooltip_txt">정확한 예약을 위하여 업체가 추가로 제공 및 요청하는 정보입니다.</p>
1334                    </div> -->
1335                    <div class="item_list">
1336                        <button type="button" name="ser_camp_spec" value="BP000">반려견동반</button>
1337                        <button type="button" name="ser_kid" value="Y">키즈캠핑</button>
1338                        <button type="button" name="ser_pg_tp" value="C">신용카드</button>
1339                        <button type="button" name="ser_pg_tp" value="V">무통장입금</button>
1340                        <button type="button" name="ser_2peopleOnly" value="Y">2인전용</button>
1341                        <button type="button" name="ser_camp_spec" value="BP001">트레일러 진입</button>
1342                        <button type="button" name="ser_camp_spec" value="BP002">카라반 진입</button>
1343                        <button type="button" name="ser_camp_spec" value="BP003">차박캠핑</button>
1344                        <button type="button" name="ser_q_point" value="Y">Q-Point적립</button>
1345                        
1346                        <button type="button" name="ser_disc_yn" value="Y">할인중</button>
1347                        <button type="button" name="ser_new_yn" value="Y">신규입점</button>
1348                        <button type="button" name="ser_long_yn" value="Y">장박</button>
1349                        <button type="button" name="ser_get_coupon_yn" value="Y">업체할인쿠폰</button>
1350                    </div>
1351                </li>
1352                <li id="filter_item3">
1353                    <p class="title">숙소환경</p>
1354                    <div class="item_list">
1355                        <button type="button" name="ser_camp_spec" value="BM000" />개별화장실</button>
1356                        <button type="button" name="ser_camp_spec" value="BM001">개별사워실</button>
1357                        <button type="button" name="ser_camp_spec" value="BL004">매점</button>
1358                        <button type="button" name="ser_camp_spec" value="BL003">와이파이</button>
1359                        <button type="button" name="ser_camp_spec" value="BM007">놀이터</button>
1360                        <button type="button" name="ser_camp_spec" value="BM013">수영장</button>
1361                        <button type="button" name="ser_camp_spec" value="BN000">장비대여</button>
1362                        <button type="button" name="ser_camp_spec" value="BM020">체험활동</button>
1363                    </div>
1364                </li>
1365                <li id="filter_item4">
1366                    <p class="title">주변환경</p>
1367                    <div class="item_list">
1368                        <button type="button" name="ser_camp_position" value="A">바다</button>
1369                        <button type="button" name="ser_camp_position" value="B">산</button>
1370                        <button type="button" name="ser_camp_position" value="C">강</button>
1371                        <button type="button" name="ser_camp_position" value="D">호수</button>
1372                        <button type="button" name="ser_camp_position" value="E">계곡</button>
1373                        <button type="button" name="ser_camp_position" value="F">섬</button>
1374                        <button type="button" name="ser_camp_spec" value="BO005">등산</button>
1375                        <button type="button" name="ser_camp_spec" value="BO000">해수욕장</button>
1376                        <button type="button" name="ser_camp_spec" value="BO002">수상레져</button>
1377                        <button type="button" name="ser_camp_spec" value="BO003">낚시</button>
1378                        <button type="button" name="ser_camp_spec" value="BO007">스키장</button>
1379                        <button type="button" name="ser_camp_spec" value="BO006">수목원/휴양림</button>
1380                    </div>
1381                </li>
1382				
1383                <li id="filter_item5">
1384                    <p class="title">한줄후기</p>
1385                    <div class="item_list">
1386                        <button type="button" name="ser_key_sub_cd2" value="EA000">뷰 맛집</button>
1387                        <button type="button" name="ser_key_sub_cd2" value="EA001">조용한 힐링 맛집</button>
1388                        <button type="button" name="ser_key_sub_cd2" value="EA002">사진 맛집</button>
1389                        <button type="button" name="ser_key_sub_cd2" value="EA003">시원한 그늘 맛집</button>
1390                        <button type="button" name="ser_key_sub_cd2" value="EB000">반려견과 함께</button>
1391                        <button type="button" name="ser_key_sub_cd2" value="EB001">아이들과 함께</button>
1392                        <button type="button" name="ser_key_sub_cd2" value="EB002">연인과 함께</button>
1393                        <button type="button" name="ser_key_sub_cd2" value="EB003">친구들과 함께</button>
1394                        <button type="button" name="ser_key_sub_cd2" value="EC000">깨끗한 시설</button>
1395                        <button type="button" name="ser_key_sub_cd2" value="EC001">럭셔리 시설</button>
1396                        <button type="button" name="ser_key_sub_cd2" value="EC002">넓은 사이트 간격</button>
1397                        <button type="button" name="ser_key_sub_cd2" value="EC003">다양한 놀이시설</button>
1398                        <button type="button" name="ser_key_sub_cd2" value="ED000">친절한 사장님</button>
1399                        <button type="button" name="ser_key_sub_cd2" value="ED001">매너타임</button>
1400                    </div>
1401                </li>
1402				
1403            </ul>
1404        </div>
1405        <div class="btm search_filter">
1406            <!-- 초기화 on 으로 제어 -->
1407            <a id="popFilterResetButton" class="btn_refresh">초기화</a>
1408            <button type="button" class="btn_orange" id="searchSubmitButton">필터 검색</button>
1409        </div>
1410    </div>
1411</div>
1412
1413<script>
1414	const headFilterManager = {
1415		init: function(){
1416			this.swiperKeywordFilter();
1417			this.swiperBadgeFilter();
1418			this.isHeadFilterCheck();
1419
1420			let lastScrollTop = 0;
1421			const headFilter = document.getElementById("headFilter");
1422
1423			window.addEventListener("scroll", () => {
1424				let scrollTop = window.scrollY || document.documentElement.scrollTop;
1425
1426				if (scrollTop < 170) {
1427					// 최상단에서는 항상 보이게 설정
1428					headFilter.style.transform = "translate(-50%)";
1429					headFilter.style.opacity = "1";
1430				} else if (scrollTop > lastScrollTop) {
1431					// 아래로 스크롤 시 숨김
1432					headFilter.style.transform = "translate(-50%,-100%)";
1433					headFilter.style.opacity = "0";
1434				} else {
1435					// 위로 스크롤 시 노출
1436					headFilter.style.transform = "translate(-50%)";
1437					headFilter.style.opacity = "1";
1438				}
1439
1440				lastScrollTop = scrollTop;
1441			});
1442		},
1443		swiperKeywordFilter: function(){
1444			const sr_condi_swiper = new Swiper('.sr_condi_swiper', {
1445				pagination: false,
1446				slidesPerView: 'auto',
1447				paginationClickable: true,
1448				spaceBetween: 8,
1449				freeMode: true,
1450				lazyLoading: true,
1451				observer: true,
1452				observeParents: true,
1453				loop: false
1454			});
1455
1456			return sr_condi_swiper;
1457		},
1458		swiperBadgeFilter: function(){
1459			const filter_cont_swiper = new Swiper('.filter_cont_swiper', {
1460				pagination: false,
1461				slidesPerView: 'auto',
1462				paginationClickable: true,
1463				spaceBetween: 8,
1464				freeMode: true,
1465				lazyLoading: true,
1466				observer: true,
1467				observeParents: true,
1468				loop: false,
1469            });
1470
1471			return filter_cont_swiper;
1472		},
1473		// 구분 필터 버튼 active 업데이트 이벤트
1474		updateActiveFilters: function() {
1475			const selectedFilters = filterManager._selectedFilters;
1476
1477			// 기존 active 클래스 제거
1478			document.querySelectorAll(".filter_cont_swiper .swiper-slide").forEach(sli
1478de => {
1479				slide.classList.remove("active");
1480			});
1481			
1482			// 태그 페스타 버튼 active
1483            if (selectedFilters.ser_festa_gbn != ""){
1484                const buttonEl = document.querySelector(`.tag_name[value='${selectedFilters.ser_festa_gbn}']`);
1485                if(buttonEl){
1486                    buttonEl.classList.add("active");
1487                }
1488            }
1489            
1490			// 태그 할인 버튼 active
1491			if (selectedFilters.ser_disc_yn == "Y"){
1492				const buttonEl = document.querySelector(`.tag_name[name='ser_disc_yn']`);
1493				buttonEl.classList.add("active");
1494			}
1495            
1496            // 태그 반려동물 버튼 active
1497            if (selectedFilters.ser_camp_spec.some(value => ["BP000"].includes(value))){
1498                const buttonEl = document.querySelector(`.tag_name[value='${selectedFilters.ser_camp_spec}']`);
1499                buttonEl.classList.add("active");
1500            }
1501            
1502            // 태그 아이들 버튼 active
1503            if (selectedFilters.ser_kid == "Y"){
1504                const buttonEl = document.querySelector(`.tag_name[name='ser_kid']`);
1505                buttonEl.classList.add("active");
1506            }
1507            
1508            // 태그 업체할인 버튼 active
1509            if (selectedFilters.ser_get_coupon_yn == "Y"){
1510                const buttonEl = document.querySelector(`.tag_name[name='ser_get_coupon_yn']`);
1511                buttonEl.classList.add("active");
1512            }
1513
1514			// 숙소구분 버튼 active
1515			if (selectedFilters.ser_site_tp.length > 0) {
1516				document.getElementById("group1_txt")?.closest(".swiper-slide")?.classList.add("active");
1517			}
1518
1519			// 검색구분 버튼 active
1520			if (
1521				selectedFilters.ser_camp_spec.some(value => ["BP000", "BP001", "BP002", "BP003"].includes(value)) ||
1522				selectedFilters.ser_pg_tp.some(value => ["C", "V"].includes(value)) ||
1523				selectedFilters.ser_2peopleOnly === "Y" || selectedFilters.ser_q_point === "Y" || selectedFilters.ser_deposit_yn === "Y" ||
1524				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"
1525			) {
1526				document.getElementById("group2_txt")?.closest(".swiper-slide")?.classList.add("active");
1527			}
1528
1529			// 숙소환경 버튼 active
1530			if (selectedFilters.ser_camp_spec.some(value => ["BM000", "BM001", "BL004", "BL003", "BM007", "BM013", "BN000", "BM020"].includes(value))) {
1531				document.getElementById("group3_txt")?.closest(".swiper-slide")?.classList.add("active");
1532			}
1533
1534			// 주변환경 버튼 active
1535			if (selectedFilters.ser_camp_position.length > 0 || selectedFilters.ser_camp_spec.some(value => ["BO005", "BO000", "BO002", "BO003", "BO007"].includes(value))) {
1536				document.getElementById("group4_txt")?.closest(".swiper-slide")?.classList.add("active");
1537			}
1538			
1539			// 한줄후기 버튼 active
1540            if (selectedFilters.ser_key_sub_cd2.length > 0) {
1541                document.getElementById("group5_txt")?.closest(".swiper-slide")?.classList.add("active");
1542            }
1543		},
1544		// 구분 필터 미노출 여부 체크
1545		isHeadFilterCheck: function() {
1546			if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){
1547				document.querySelector('.filter_name[data-value="filter_item1"]').closest(".swiper-slide").style.display = "none";
1548				document.getElementById("tab_filter_item1").style.display = "none";
1549				document.getElementById("filter_item1").style.display = "none"
1550			}else{
1551				document.querySelector('.filter_name[data-value="filter_item1"]').closest(".swiper-slide").style.display = "block";
1552				document.getElementById("tab_filter_item1").style.display = "block";
1553                document.getElementById("filter_item1").style.display = "block"
1554			}
1555		}
1556	}
1557
1558    /* 검색 관련 함수 */
1559    const filterUrlParams = new URLSearchParams(window.location.search);
1560    const filterManager = {
1561		_selectedFilters: {
1562			ser_site_tp: [],
1563			ser_pg_tp: [],
1564			ser_camp_spec: [],
1565			ser_camp_position: [],
1566			ser_key_sub_cd2: [],
1567			ser_kid: "",
1568			ser_2peopleOnly: "",
1569			isPg: "",
1570			ser_q_point: "",
1571			ser_deposit_yn: "",
1572			ser_disc_yn: "",
1573			ser_new_yn: "",
1574			ser_long_yn: "",
1575			ser_key_cd: "",
1576			ser_sort: "",
1577			ser_key_cd: "",
1578			ser_key_sub_cd: "",
1579			ser_keyword: "",
1580			ser_only_able: "",
1581			ser_empty_yn: "",
1582			ser_festa_gbn: "",
1583			ser_get_coupon_yn: "",
1584			page: 0
1585		},
1586        init: function () {
1587            const popFilterButtonEl = document.getElementById("popFilterButton");
1588            const popFilterCloseButtonEl = document.getElementById("popFilterCloseButton");
1589            const popFilterResetButtonEl = document.getElementById("popFilterResetButton");
1590            const filterNameEl = document.querySelectorAll('.filter_name');
1591
1592            popFilterButtonEl.addEventListener("click", () => {
1593                this.open()
1594            });
1595            popFilterCloseButtonEl.addEventListener("click", () => {
1596                this.close()
1597            });
1598            popFilterResetButtonEl.addEventListener("click", () => {
1599                this.resetFilters()
1600            });
1601
1602            filterNameEl.forEach(el => {
1603                console.log(el.textContent);
1604
1605                el.addEventListener("click", () => {
1606                    this.open(el.dataset.value)
1607                });
1608            });
1609
1610            // 필터 항목 클릭 이벤트 등록
1611            document.querySelectorAll(".item_list button").forEach(item => {
1612                item.addEventListener("click", (event) => this.toggleFilter(event));
1613            });
1614
1615            //this.sortSelect();
1616			this.setting();
1617            this.popFilter();
1618        },
1619		// 태그 필터 이벤트 생성
1620		createTagClickEvent: function(func){
1621			// 태그 필터 항목 클릭 이벤트 등록
1622            document.querySelectorAll(".tag_name").forEach(item => {
1623                item.addEventListener("click", (event) => {
1624					this.toggleFilter(event);
1625					func();
1626                });
1627            });
1628		},
1629		// 초기 세팅 함수
1630		setting: function(){
1631
1632			const siteTpValue = filterUrlParams.get("site_tp") ? filterUrlParams.get("site_tp").split(",").filter(
1632Boolean) : [];
1633			const serPgTpValue = filterUrlParams.get("ser_pg_tp") ? filterUrlParams.get("ser_pg_tp").split(",").filter(Boolean) : [];
1634			const serCampSpecValue = filterUrlParams.get("ser_camp_spec") ? filterUrlParams.get("ser_camp_spec").split(",").filter(Boolean) : [];
1635			const serCampPositionValue = filterUrlParams.get("ser_camp_position") ? filterUrlParams.get("ser_camp_position").split(",").filter(Boolean) : [];
1636			const serKeySubCd2Value = filterUrlParams.get("ser_key_sub_cd2") ? filterUrlParams.get("ser_key_sub_cd2").split(",").filter(Boolean) : [];
1637
1638			filterManager._selectedFilters = {
1639				ser_site_tp: siteTpValue,
1640				ser_pg_tp: serPgTpValue,
1641				ser_camp_spec: serCampSpecValue,
1642				ser_camp_position: serCampPositionValue,
1643				ser_key_sub_cd2: serKeySubCd2Value,
1644				ser_kid: filterUrlParams.get("ser_kid") || "",
1645				ser_2peopleOnly: filterUrlParams.get("ser_2peopleOnly") || "",
1646				isPg: filterUrlParams.get("isPg") || "",
1647				ser_q_point: filterUrlParams.get("ser_q_point") || "",
1648				ser_deposit_yn: filterUrlParams.get("ser_deposit_yn") || "",
1649				ser_disc_yn:  filterUrlParams.get("ser_disc_yn") || "",
1650				ser_new_yn: filterUrlParams.get("ser_new_yn") || "",
1651				ser_long_yn: filterUrlParams.get("ser_long_yn") || "",
1652				ser_key_cd: filterUrlParams.get("ser_key_cd") || "",
1653				ser_sort: filterUrlParams.get("ser_sort") || "",
1654				ser_key_cd: filterUrlParams.get("ser_key_cd") || "",
1655				ser_key_sub_cd: filterUrlParams.get("ser_key_sub_cd") || "",
1656				ser_keyword: filterUrlParams.get("ser_keyword") || "",
1657				ser_only_able: filterUrlParams.get("ser_only_able") || "",
1658				ser_empty_yn:  filterUrlParams.get("ser_empty_yn") || "",
1659				ser_festa_gbn: filterUrlParams.get("ser_festa_gbn") || "",
1660				ser_get_coupon_yn: filterUrlParams.get("ser_get_coupon_yn") || "",
1661				page: 0
1662			}
1663
1664			// 해당 필터값이 존재하면 active 클래스 추가
1665			Object.keys(filterManager._selectedFilters).forEach(key => {
1666				const value = filterManager._selectedFilters[key];
1667
1668				if (Array.isArray(value)) {
1669					value.forEach(val => {
1670						document.querySelectorAll(`.item_list button[name='${key}'][value='${val}']`).forEach(btn => btn.classList.add("active"));
1671					});
1672				} else if (value === "Y") {
1673					document.querySelectorAll(`.item_list button[name='${key}']`).forEach(btn => btn.classList.add("active"));
1674				}
1675			});
1676			
1677			// 페스타 검색 시 sort 값 E 세팅
1678			if(filterManager._selectedFilters.ser_festa_gbn != ""){
1679			    //filterManager._selectedFilters.ser_sort = "E";
1680			}
1681			
1682			// 리스트 순서 버튼 초기 이벤트
1683			filterManager.sortChangeEvent();
1684			headFilterManager.updateActiveFilters();
1685		},
1686        // 필터 팝업 열기
1687        open: function (filterType) {
1688            const scrollPosition = window.scrollY;
1689            const headInElement = document.querySelector('.head_in');
1690			const containerElement = document.querySelector('.container');
1691            const top = scrollPosition - 60; // head 높이 값 제외
1692
1693            document.body.style.position = 'fixed';
1694            document.body.style.top = `-${top}px`;
1695
1696			containerElement.style.marginTop = '175px';
1697
1698            headInElement.style.position = 'fixed';
1699            headInElement.style.top = `0px`;
1700            headInElement.style.left = '50%';
1701            headInElement.style.width = '100%';
1702            headInElement.style.transform = 'translateX(-50%)';
1703            headInElement.style.maxWidth = '640px';
1704			
1705			if(filterType){
1706				document.querySelector(`.filter_item[data-target='${filterType}']`)?.click();
1707			}
1708			
1709            openLayer('filter_pop');
1710        },
1711        // 필터 팝업 닫기
1712        close: function () {
1713            const headInElement = document.querySelector('.head_in');
1714			const containerElement = document.querySelector('.container');
1715            const scrollY = document.body.style.top;
1716
1717			containerElement.style.marginTop = '115px';
1718
1719            document.body.style.position = '';
1720            document.body.style.top = '';
1721            headInElement.style.position = 'relative';
1722            headInElement.style.top = '';
1723            window.scrollTo(0, parseInt(scrollY || '0') * -1);
1724
1725            closeLayer('filter_pop');
1726        },
1727        // 팝업 필터 페이지 이벤트
1728        popFilter: function () {
1729            const swiper = this.popFilterSwiper();
1730
1731            const fixedTop = document.querySelector('.filter_top_fixed');
1732            let initialTopPosition = fixedTop.offsetTop; // 초기 위치 파악
1733
1734            const updateFixedTop = () => {
1735                if (window.scrollY >= initialTopPosition) {
1736                    fixedTop.classList.add('fixed');
1737                } else {
1738                    fixedTop.classList.remove('fixed');
1739                }
1740            };
1741
1742            // 탭 스크롤 이벤트 설정
1743            const popupContainer = document.querySelector('.filter_pop_ul');
1744            let isManualScroll = false;
1745
1746            popupContainer.addEventListener('scroll', () => {
1747                if (isManualScroll) return; // 수동 스크롤 시 스크롤 이벤트 무시
1748                updateFixedTop();
1749
1750                const allTabs = document.querySelectorAll('.filter_item');
1751                let activeTabFound = false; // 활성화된 탭을 한 번만 찾아내도록 플래그 설정
1752
1753                if (popupContainer.scrollTop === 0) {
1754                    allTabs.forEach(tab => tab.classList.remove('active'));
1755                    allTabs[0].classList.add('active');
1756
1757                    // 모바일에서는 Swiper도 첫 번째 탭으로 이동
1758                    if (window.innerWidth <= 640) {
1759                        swiper.slideTo(0);
1760                    }
1761                    return;
1762                }
1763
1764                allTabs.forEach((tab, index) => {
1765                    const targetId = tab.getAttribute('data-target');
1766                    const targetElement = document.getElementById(targetId);
1767
1768                    if (targetElement && !activeTabFound) {
1769                        const rect = targetElement.getBoundingClientRect();
1770
1771                        if (rect.top <= 128 && rect.bottom >= 128) {
1772                            // 섹션이 화면 내 128px 위에서 보일 때 활성화
1773                            tab.classList.add('active');
1774                            activeTabFound = true; // 첫 번째로 보이는 섹션에 해당하는 탭을 active로 설정
1775
1776                            // Swiper를 해당 탭 위치로 이동 (모바일일 경우만 적용)
1777                            if (window.innerWidth <= 640) { // 모바일 체크
1778                                swiper.slideTo(index); // active 탭으로 swiper 이동
1779                            }
1780                        } else {
1781                            tab.classList.remove('active');
1782                        }
1783                    } else {
1784                        tab.classList.remove('active');
1785                    }
1786                });
1787            });
1788
1789
1790            // 탭 클릭 시 수동으로 활성화 설정
1791            document.querySelectorAll('.filter_item').forEach((tab, index) => {
1792                tab.addEventListener('click', function () {
1793                    if (tab.style.display === 'none') return; // display: none 상태의 탭은 무시
1794
1795                    isManualScroll = true; // 스크롤 이벤트 일시 중지
1796
1797                    // 모든 탭에서 active 제거 후 현재 클릭한 탭에 active 추가
1798                    document.querySelectorAll('.filter_item').forEach(item => item.classList
1799                        .remove('active'));
1800                    this.classList.add('active');
1801
1802                    // 해당 섹션으로 팝업 내부 스크롤 이동
1803                    const targetId = this.getAttribute('data-target');
1804                    const targetElement = document.getElementById(targetId);
1805                    const popupContainer = document.querySelector('.filter_pop_ul');
1806
1807                    if (targetElement && popupContainer) {
1808                        popupContainer.scrollTo({
1809                            top: targetElement.offsetTop - popupContainer.offsetTop,
1810                            behavior: 'smooth'
1811                        });
1812
1813                        if (window.innerWidth <= 640) {
1814                            swiper.slideTo(index); // Swiper 탭 이동
1815                        }
1816
1817                        // 스크롤이 끝난 후 다시 스크롤 이벤트 활성화
1818                        setTimeout(() => {
1819                            isManualScroll = false;
1820                        }, 500);
1821                    }
1822                });
1823            });
1824
1825
1826            // 초기 위치 업데이트를 위한 리사이즈 이벤트 처리
1827            window.addEventListener('resize', () => {
1828                initialTopPosition = fixedTop.offsetTop;
1829                updateFixedTop();
1830            });
1831
1832            updateFixedTop();
1833        },
1834        // 필터 팝업 페이지 탭
1835        popFilterSwiper: function () {
1836            const swiper = new Swiper('.filter_top_fixed', {
1837                slidesPerView: 'auto',
1838                spaceBetween: 8,
1839                freeMode: true
1840            });
1841
1842            return swiper;
1843        },
1844        // 정렬 기준 팝업 이벤트
1845        sortSelect: function (fun) {
1846            const eventBtnEl = document.getElementById('sortChoiceButton');
1847            const options = document.querySelectorAll(".opt");
1848            const parentEl = eventBtnEl.parentNode;
1849        
1850            // 클릭한 옵션의 텍스트를 라벨 안에 넣음
1851            const handleSelect = (item) => {
1852                parentEl.classList.remove("on");
1853                eventBtnEl.innerHTML = item.textContent;
1854        
1855                filterManager._selectedFilters.ser_sort = item.dataset.value;
1856                fun();
1857            };
1858        
1859            // 옵션 클릭 시 클릭한 옵션을 넘김
1860            options.forEach((option) => {
1861                option.addEventListener("click", (event) => {
1862                    event.stopPropagation(); // 이벤트 버블링 방지
1863                    handleSelect(option);
1864                });
1865            });
1866        
1867            // 라벨을 클릭 시 옵션 목록이 열림/닫힘
1868            eventBtnEl.addEventListener("click", (event) => {
1869                event.stopPropagation(); // 이벤트 버블링 방지
1870                parentEl.classList.toggle("on");
1871            });
1872        
1873            // **이외 영역 클릭 시 닫기**
1874            const closeDropdown = (event) => {
1875                if (!parentEl.contains(event.target)) {
1876                    parentEl.classList.remove("on");
1877                }
1878            };
1879        
1880            document.addEventListener("click", closeDropdown);
1881        
1882            // **스크롤 시 닫기**
1883            document.addEventListener("scroll", () => {
1884                parentEl.classList.remove("on");
1885            });
1886        },
1887        // 정렬기준 변경
1888        sortChangeEvent: function(){
1889            // 리스트 순서 버튼 초기 이벤트
1890            const sortChoiceButtonEl = document.getElementById("sortChoiceButton");
1891            if(sortChoiceButtonEl != null){
1892                let buttonText;
1893            
1894                switch (filterManager._selectedFilters.ser_sort) {
1895                    case "R": 
1896                        buttonText = "추천순"; 
1897                        break;
1898                    case "P": 
1899                        buttonText = "조회순"; 
1900                        break;
1901                    case "E": 
1902                        buttonText = "빈자리순"; 
1903                        break;
1904                    case "F": 
1905                        buttonText = "가격순"; 
1906                        break;
1907                    case "S": 
1908                        buttonText = "후기많은순"; 
1909                        break;
1910                    case "N": 
1911                        buttonText = "최근후기순"; 
1912                        break;
1913                    default: 
1914                        buttonText = "추천순"; // 기본값
1915                }
1916            
1917                sortChoiceButtonEl.innerHTML = buttonText;
1918            }
1919        },
1920		// 예약가능 데이터만
1921		toggleEmpty: function(){
1922			const isEmpty = filterManager._selectedFilters.ser_only_able;
1923			const emptyButtonEl = document.getElementById("empty_y");
1924
1925			if(isEmpty == "on"){
1926				filterManager._selectedFilters.ser_only_able = "";
1927				filterManager._selectedFilters.ser_empty_yn = "N";
1928			}else{
1929				filterManager._selectedFilters.ser_only_able = "on";
1930				filterManager._selectedFilters.ser_empty_yn = "Y";
1931			}
1932
1933			this.updateEmptyState();
1934		},
1935		// 예약가능 버튼 이벤트
1936		updateEmptyState: function(){
1937			const emptyButtonEl = document.getElementById("empty_y");
1938
1939			if (filterManager._selectedFilters.ser_only_able == "on") {
1940				emptyButtonEl.classList.add("active");
1941			} else {
1942				emptyButtonEl.classList.remove("active");
1943			}
1944		},
1945        // 필터 항목 클릭 시 활성화/비활성화
1946		toggleFilter: function (event) {
1947			const searchPageType = 'LIST';
1948			const target = event.target;
1949			const name = target.getAttribute("name");
1950			const value = target.getAttribute("value");
1951
1952			// 페스타 버튼일 때
1953			if(name == "ser_festa_gbn"){
1954			
1955				//만만한캠핑인 경우 입실일자 기본값 set
1956				if (value == "DL002") {
1957					searchFilterManager._filter.res_date = "20251001";
1958					searchFilterManager._filter.res_end_date = "20251002";
1959				}
1960			
1961				document.querySelectorAll(".tag_name.festa_button").forEach(item => item.classList.remove("active"));
1962
1963				if(filterManager._selectedFilters[name] == value){
1964					document.querySelector(`.tag_name.festa_button[value='${value}']`).classList.remove("active");
1965					filterManager._selectedFilters[name] = "";
1966				}else{
1967					document.querySelector(`.tag_name.festa_button[value='${value}']`).classList.add("active");
1968					filterManager._selectedFilters[name] = value;
1969					
1970					//filterManager._selectedFilters.ser_sort = "E";
1971                    filterManager.sortChangeEvent();
1972				}
1973				
1974				return;
1975			}
1976
1977			// _selectedFilters[name]이 존재하지 않으면 기본값 설정
1978			if (this._selectedFilters[name] === undefined) {
1979				this._selectedFilters[name] = [];
1980			}
1981
1982			// 배열인 경우 (ex: ser_site_tp, ser_pg_tp 등)
1983            if (Array.isArray(this._selectedFilters[name])) {
1984
1985                // value에 콤마가 있으면 배열로 분리
1986                const valueList = String(value)
1987                    .split(",")
1988                    .map(item => item.trim())
1989                    .filter(item => item !== "");
1990
1991                // valueList 값들이 전부 선택되어 있으면 해제, 아니면 선택
1992                const isSelected = valueList.every(item => this._selectedFilters[name].includes(item));
1993
1994                if (isSelected) {
1995                    // 선택 해제
1996                    this._selectedFilters[name] = this._selectedFilters[name].filter(item => !valueList.includes(item));
1997
1998                    // 원본 value 버튼 비활성화 ex) value="A,B"
1999                    document.querySelectorAll(`.item_list button[name='${name}'][value='${value}']`).forEach(item => item.classList.remove("active"));
2000                    document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.remove("active"));
2001
2002                    // 분리된 value 버튼들도 비활성화 ex) value="A", value="B"
2003                    valueList.forEach(filterValue => {
2004                        document.querySelectorAll(`.item_list button[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.remove("active"));
2005                        document.querySelectorAll(`.tag_name[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.remove("active"));
2006                    });
2007
2008                    if (searchPageType == "LIST" && name == "ser_site_tp") {
2009                        searchFilterManager._filter['site_type'] = searchFilterManager._filter['site_type'].filter(item => !valueList.includes(item));
2010                        searchFilterManager.getSiteType();
2011                    }
2012
2013                } else {
2014                    // 선택 추가 - 중복 방지
2015                    valueList.forEach(filterValue => {
2016                        if (!this._selectedFilters[name].includes(filterValue)) {
2017                            this._selectedFilters[name].push(filterValue);
2018                        }
2019                    });
2020
2021                    // 원본 value 버튼 활성화 ex) value="A,B"
2022                    document.querySelectorAll(`.item_list button[name='${name}'][value='${value}']`).forEach(item => item.classList.add("active"));
2023                    document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.add("active"));
2024
2025                    // 분리된 value 버튼들도 활성화 ex) value="A", value="B"
2026                    valueList.forEach(filterValue => {
2027                        document.querySelectorAll(`.item_list button[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.add("active"));
2028                        document.querySelectorAll(`.tag_name[name='${name}'][value='${filterValue}']`).forEach(item => item.classList.add("active"));
2029                    });
2030
2031                    if (searchPageType == "LIST" && name == "ser_site_tp") {
2032                        valueList.forEach(filterValue => {
2033                            if (!searchFilterManager._filter['site_type'].includes(filterValue)) {
2034                                searchFilterManager._filter['site_type'].push(filterValue);
2035                            }
2036                        });
2037
2038                        searchFilterManager.getSiteType();
2039                    }
2040                }
2041            }
2042			// 배열이 아닌 경우 (ex: ser_kid, ser_2peopleOnly 등)
2043			else {
2044				if(this._selectedFilters[name] == ""){
2045					this._selectedFilters[name] = value;
2046				}else{
2047					this._selectedFilters[name] = "";
2048				}
2049				
2050				document.querySelectorAll(`.item_list button[name='${name}']`).forEach(item => item.classList.toggle("active", this._selectedFilters[name] === "Y")); // 필터 활성화 여부 설정
2051				document.querySelectorAll(`.tag_name[name='${name}'][value='${value}']`).forEach(item => item.classList.toggle("active", this._selectedFilters[name] === "Y")); // 태그 활성화 여부 설정
2052			}
2053
2054			headFilterManager.updateActiveFilters();
2055		},
2056        // 필터 적용 (검색 실행)
2057        applyFilters: function (dataFatch) {
2058            
2059        },
2060        // 필터 초기화
2061        resetFilters: function () {
2062            this._selectedFilters = {
2063				resStartDate: '20260924',
2064				resEndDate: '20260924',
2065				ser_site_tp: [],
2066				ser_pg_tp: [],
2067				ser_camp_spec: [],
2068				ser_camp_position: [],
2069				ser_key_sub_cd2: [],
2070				ser_kid: "N",
2071				ser_2peopleOnly: "N",
2072				isPg: "N",
2073				ser_q_point: "N",
2074				ser_deposit_yn: "N",
2075				ser_disc_yn: "N",
2076				ser_new_yn: "N",
2077				ser_long_yn: "N",
2078				ser_get_coupon_yn: "N",
2079				ser_sort: "R",
2080                ser_key_cd: "",
2081                ser_key_sub_cd: "",
2082                ser_keyword: "",
2083                ser_only_able: "",
2084                ser_empty_yn: "",
2085                ser_festa_gbn: "",
2086				page: 0
2087            };
2088
2089            searchFilterManager.syncFilters();
2090			headFilterManager.updateActiveFilters();
2091
2092            // 모든 필터 항목 비활성화
2093            document.querySelectorAll(".item_list button").forEach(item => {
2094                item.classList.remove("active");
2095            });
2096        },
2097
2098    };
2099
2100	document.addEventListener("DOMContentLoaded", function() {
2101        headFilterManager.init();
2102		filterManager.init();
2103    });
2104</script>
2104
2105
2106					<div class="view_filter">
2107					  <!-- sel_ok - 날짜 선택됐을 때만 노출 -->
2108					  <div>
2109					    <div class="sel_ok" id="empty_y" style="display: none">예약가능</div>
2110					  </div>
2111					  <div class="right_div">
2112						<div class="sel_div">
2113						  <button type="button" id="sortChoiceButton" class="label">추천순</button>
2114						  <ul class="opt_ul">
2115							<li class="opt" data-value="R">추천순</li>
2116							<li class="opt" data-value="P">조회순</li>
2117							<li class="opt" data-value="E">빈자리순</li>
2118							<li class="opt" data-value="F">가격순</li>
2119							<li class="opt" data-value="S">후기많은순</li>
2120							<li class="opt" data-value="N">최근후기순</li>
2121						  </ul>
2122						</div>
2123						<div class="sel_view main-info-box">
2124                            <img src="../images/thumb.png" alt="리스트로 보기" />
2125                            <div class="balloon-badge bottom right" id="viewInfoBox">한눈에 모아보기</div>
2126						</div>
2127					  </div>
2128					</div>
2129
2130					<!-- 목록형일때만 view_type_info 추가 -->
2131                    <div id="DivResvPrList" class="camp_list view_type"></div><!--// camp_list -->
2132					
2133                    <div id="DivResvList" class="camp_list view_type" style="min-height: 50px;"></div><!--// camp_list -->
2134                    <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>
2135
2136                 </div><!--// sear_result_con -->
2137                 <!--↑↑↑↑↑↑ 컨텐츠 끝 *******************↑↑↑↑↑↑↑↑↑ -->
2138            </div> <!--// container -->
2139
2140			
2141<style>
2142    .search_marker{
2143        position: absolute;
2144        top: 50%;
2145        left: 50%;
2146        transform: translate(-50%, -50%);
2147        width: 16px;
2148        height: 16px;
2149        border-radius: 16px;
2150        background: #fff;
2151        z-index: 1;
2152    }
2153	.now_marker{
2154		position: absolute;
2155		top: 50%;
2156		left: 50%;
2157		transform: translate(-50%, -50%);
2158		width: 16px;
2159		height: 16px;
2160		border-radius: 16px;
2161		background: #fff;
2162		z-index: 1;
2163	}
2164	.now_marker:after{
2165		content: "";
2166		display: block;
2167		position: absolute;
2168		top: 50%;
2169		left: 50%;
2170		transform: translate(-50%, -50%);
2171		width: 20px;
2172		height: 20px;
2173		border-radius: 20px;
2174		background: #F27226;
2175		opacity: .5;
2176		z-index: -1;
2177	}
2178	.now_marker:before{
2179		content: "";
2180		display: block;
2181		position: absolute;
2182		top: 50%;
2183		left: 50%;
2184		transform: translate(-50%, -50%);
2185		width: 10px;
2186		height: 10px;
2187		border-radius: 10px;
2188		border: 2px solid #fff;
2189		background: #F27226;
2190	}
2191	.ui-state-active, .ui-state-active a:hover {
2192	    position:relative;
2193	    border-radius: 100rem;
2194	}
2195	.ui-state-active a{
2196	    position: relative;
2197	    border-radius: 100rem;
2198	    background: #f47206 !important;
2199	}
2200	td.ui-state-active.left:before{
2201	    content: "";
2202	    position: absolute;
2203	    top:0;
2204	    left: 0;
2205	    display: block;
2206	    width: 50%;
2207	    height: 100%;
2208	    transform: translateX(100%);
2209	    background: #FFCCAD;
2210	}
2211	td.ui-state-active.right:before{
2212        content: "";
2213        position: absolute;
2214        top:0;
2215        right: 0;
2216        display: block;
2217        width: 50%;
2218        height: 100%;
2219        transform: translateX(-100%);
2220        background: #FFCCAD;
2221    }
2222	.ui-state-active-a{
2223	    background: #FFCCAD !important;
2224	}
2225	.stay_btn_swiper .swiper-slide{ width: auto; }
2226
2227</style>
2228
2229<div class="pop_layer_set2" id="search_pop">
2230    <!-- 필터 눌렀을 때 나오는 창 -->
2231    <div class="filter_pop">
2232		<div class="search head">
2233		  <div class="head_in" style="overflow: initial">
2234			<button type="button" class="btn_close" id="popSearchCloseButton"></button>
2235			<ul class="search_tab">
2236				<li class="main-info-box active" id="listTab">숙소검색</li>
2237				<li class="main-info-box" id="mapTab">
2238				    지도검색
2239				    <div class="balloon-badge bottom center" id="mapInfoBox">가까운 숙소찾기</div>
2240                </li>
2241			</ul>
2242		  </div>
2243		</div>
2244   
2245		<div>
2246		  <!--↓↓↓↓↓↓ 컨텐츠 시작 ↓↓↓↓↓↓-->
2247			<div class="search_content" id="list-search-content" style="display: none;">
2248				<div class="search_form_box">
2249					<div class="search_form_input search">
2250						<input type="text" id="ser_keyword_" list="sear_list" value="" placeholder="숙소명을 입력하세요" style="width: 100%; font-size: 14px; outline: 0; border: 0;"  />
2251						<span class="ico_del" id="deleteKeyword" style="display:none;"></span>
2252						<div id="search_result_info_box" class="search_result_info_box">
2253						    <p class="info">업체명 클릭시, 상세페이지로 이동합니다.</p>
2254						    <p class="info">다른 조건으로 검색하려면, 타 검색항목을 바로 클릭하세요.</p>
2255						</div>
2256						<ul id="search_result_box" class="search_result_box"></ul>
2257					</div>
2258					<div class="search_form_input place">
2259						<span class="placeholder">지역을 선택 하세요.</span>
2260						<div class="search_choice_box">
2261							<div style="display: flex;justify-content: space-between;align-items:center;">
2262								<h3 class="title">지역을 선택해 주세요.</h3>
2263								<p style="color:#8E8E8E;font-size: 12px;">최대 3개 선택</p>
2264							</div>
2265							<div class="content">
2266								<div class="swiper-container place_tab_swiper">
2267									<ul class="swiper-wrapper">
2268										<li class="swiper-slide place_button" data-value="" data-region="" data-arr="-1">지역전체</li>
2269										<!--li class="swiper-slide place_button" data-value="강원권" data-region="" data-arr="0">강원</li>
2270										<li class="swiper-slide place_button" data-value="경상권" data-region="" data-arr="1">경상</li>
2271										<li class="swiper-slide place_button" data-value="경기권" data-region="" data-arr="2">경기</li>
2272										<li class="swiper-slide place_button" data-value="충청권" data-region="" data-arr="3">충청</li>
2273										<li class="swiper-slide place_button" data-value="전ë
2273¼ê¶Œ" data-region="" data-arr="4">전라</li>
2274										<li class="swiper-slide place_button" data-value="제주권" data-region="" data-arr="5">제주</li>
2275										<li class="swiper-slide place_button" data-value="인천" data-region="" data-arr="6">인천</li-->
2276										<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>
2277									</ul>
2278								</div>
2279								<div id="place_result_box" class="place_result_box"></div>
2280								<div id="place_choice_box" class="place_choice_box">
2281									<ul></ul>
2282								</div>
2283							</div>
2284						</div>
2285					</div>
2286					<div class="search_form_input calendar">
2287						<span class="placeholder">날짜를 선택해 주세요.</span>
2288						<div class="search_choice_box">
2289							<h3 class="title">날짜를 선택해 주세요.</h3>
2290							<div class="content">
2291								<div class="datepicker-list"></div>
2292								<div style="display:flex;align-items:center;justify-content:space-between;margin-top:16px;">
2293								    <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>
2294								    <button type="button" class="twonight" >2박 선택</button>
2295								</div>
2296							</div>
2297						</div>
2298					</div>
2299					<div class="search_form_button stay" id="search_site_type_box" >
2300                        <div class="swiper-container stay_btn_swiper">
2301                            <ul class="swiper-wrapper">
2302                                <li class="swiper-slide">
2303                                    <button type="button" class="stay_button active" id="site_tp_all">전체</button>
2304                                </li>
2305                                <li class="swiper-slide">
2306                                    <button type="button" class="stay_button" name="site_tp" value="BB000">오토캠핑</button>
2307                                </li>
2308                                <li class="swiper-slide">
2309                                    <button type="button" class="stay_button" name="site_tp" value="BB001">글램핑</button>
2310                                </li>
2311                                <li class="swiper-slide">
2312                                    <button type="button" class="stay_button" name="site_tp" value="BB002">카라반</button>
2313                                </li>
2314                                <li class="swiper-slide">
2315                                    <button type="button" class="stay_button" name="site_tp" value="BB003">펜션</button>
2316                                </li>
2317                            </ul>
2318                        </div>
2319                    </div>
2320					<div class="search_form_input people">
2321						<span class="placeholder">성인0, 소인0</span>
2322						<div class="search_choice_box">
2323							<h3 class="title">인원을 선택해 주세요.</h3>
2324							<p class="text">소인에 대한 나이기준 및 추가요금 정책은 업체별로 상이하니 예약전 안내사항을 반드시 확인하시기 바랍니다.</p>
2325							<div class="content">
2326								<div class="people_count">
2327									<span class="people_count_text">성인</span>
2328									<div class="count_box adult">
2329										<!-- 0일때 - 버튼에 클래스 disabled 추가 -->
2330										<button type="button" class="count_box_decrease disabled"></button>
2331										<span class="count_box_num">0</span>
2332										<button type="button" class="count_box_increase"></button>
2333									</div>
2334								</div>
2335								<div class="people_count">
2336									<span class="people_count_text">소인</span>
2337									<div class="count_box child">
2338										<button type="button" class="count_box_decrease disabled"></button>
2339										<span class="count_box_num">0</span>
2340										<button type="button" class="count_box_increase disabled"></button>
2341									</div>
2342								</div>
2343							</div>
2344						</div>
2345					</div>
2346				</div>
2347
2348				<!-- <button type="button" class="find_nearby_btn">내 주변에서 검색</button> -->
2349
2350                <!-- 최근 검색 조건 노출 페이지 SearchTypePage TYPE: "LIST" | "MAP" | "MAIN" -->
2351                
2352				<!-- 최근 검색 조건 노출 페이지 END -->
2353				
2354				<!-- 검색 광고 영역 -->
2355				
2356				<div class="recent_searches">
2357				    <div class="title">
2358                        <strong>이달의 땡큐 추천 캠핑장</strong>
2359                    </div>
2360                    <div class="content">
2361                        <div class="swiper-container ad_camp_swiper" style="padding: 0;">
2362                            <ul class="swiper-wrapper" id="adContent">
2363                                                    	
2364                                <li class="swiper-slide swiper-slide-active">
2365                                    <a href="javascript:clkCampPr(1882,17651,'SEARCH');">
2366                                        <div class="pic">
2367                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2368                                                <p class="bat_ad">AD</p>
2369                                            </div>
2370                                            <img src="https://image.thankqcamping.com/file/2025/08/27/e73bfa88-08b0-4c99-9b65-8503a715337a-m.jpg">
2371                                        </div>
2372                                        <div class="txt_box">
2373                                            <p class="tit">산과 벗 캠핑장</p>
2374                                            <p class="txt">
2374충북 진천군</p>
2375                                            <div class="price_g">
2376                                                
2377                                                <p class="price">40,000원~</p>
2378                                            </div>
2379                                        </div>
2380                                    </a>       
2381                                </li>
2382                                                    	
2383                                <li class="swiper-slide swiper-slide-active">
2384                                    <a href="javascript:clkCampPr(2032,3822,'SEARCH');">
2385                                        <div class="pic">
2386                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2387                                                <p class="bat_ad">AD</p>
2388                                            </div>
2389                                            <img src="/file/2025/08/20/thumbM_2025082072245.81.jpg">
2390                                        </div>
2391                                        <div class="txt_box">
2392                                            <p class="tit">제령포레스트펜션&캠핑(구,고릴라펜션)</p>
2393                                            <p class="txt">경기 가평군</p>
2394                                            <div class="price_g">
2395                                                
2396                                                <p class="price">40,000원~</p>
2397                                            </div>
2398                                        </div>
2399                                    </a>       
2400                                </li>
2401                                                    	
2402                                <li class="swiper-slide swiper-slide-active">
2403                                    <a href="javascript:clkCampPr(2061,13572,'SEARCH');">
2404                                        <div class="pic">
2405                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2406                                                <p class="bat_ad">AD</p>
2407                                            </div>
2408                                            <img src="/file/2025/03/21/thumbM_2025032148463.93.jpg">
2409                                        </div>
2410                                        <div class="txt_box">
2411                                            <p class="tit">가평뷰캠핑장</p>
2412                                            <p class="txt">경기 가평군</p>
2413                                            <div class="price_g">
2414                                                
2415                                                <p class="price">50,000원~</p>
2416                                            </div>
2417                                        </div>
2418                                    </a>       
2419                                </li>
2420                                                    	
2421                                <li class="swiper-slide swiper-slide-active">
2422                                    <a href="javascript:clkCampPr(2064,20388,'SEARCH');">
2423                                        <div class="pic">
2424                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2425                                                <p class="bat_ad">AD</p>
2426                                            </div>
2427                                            <img src="/file/2026/08/11/thumbM_2026081152331.27.jpg">
2428                                        </div>
2429                                        <div class="txt_box">
2430                                            <p class="tit">캠프올모</p>
2431                                            <p class="txt">경기 가평군</p>
2432                                            <div class="price_g">
2433                                                
2434                                                <p class="price">70,000원~</p>
2435                                            </div>
2436                                        </div>
2437                                    </a>       
2438                                </li>
2439                                                    	
2440                                <li class="swiper-slide swiper-slide-active">
2441                                    <a href="javascript:clkCampPr(1955,15410,'SEARCH');">
2442                                        <div class="pic">
2443                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2444                                                <p class="bat_ad">AD</p>
2445                                            </div>
2446                                            <img src="/file/2026/06/08/thumbM_2026060852862.18.jpg">
2447                                        </div>
2448                                        <div class="txt_box">
2449                                            <p class="tit">엘모로캠핑파크</p>
2450                                            <p class="txt">경기 양평군</p>
2451                                            <div class="price_g">
2452                                                
2453                                                <p class="price">65,000원~</p>
2454                                            </div>
2455                                        </div>
2456                                    </a>       
2457                                </li>
2458                                                    	
2459                                <li class="swiper-slide swiper-slide-active">
2460                                    <a href="javascript:clkCampPr(1819,17605,'SEARCH');">
2461                                        <div class="pic">
2462                                            <div class="top_bat" style="position: absolute; padding: 6px; margin: 0; justify-content: end;">
2463                                                <p class="bat_ad">AD</p>
2464                                            </div>
2465                                            <img src="/file/2026/06/27/thumbM_2026062769212.89.jpg">
2466                                        </div>
2467                                        <div class="txt_box">
2468                                            <p class="tit">진안국제캠핑장</p>
2469                                            <p class="txt">전북 진안군</p>
2470                                            <div class="price_g">
2471                                                
2472                                                <p class="price">51,000원~</p>
2473                                            </div>
2474                                        </div>
2475                                    </a>       
2476                                </li>
2477                            
2478                            </ul>
2479                        </div>
2480                    </div>
2481				</div>
2482				
2483				<!-- 검색 광고 영역 END -->
2484			</div>
2485
2486			<div id="map-search-content">
2487				<div id="map_search_wrap" style="position: relative; width:100%; height: calc(100dvh - 61px - 75px);">
2488					<div class="search_form_box" style="padding: 16px;position: absolute; top:0; left;0; width: 100%; z-index: 3;">
2489						<div class="search_form_input calendar">
2490							<span class="placeholder">날짜를 선택해 주세요.</span>
2491							<div class="search_choice_box">
2492								<h3 class="title">날짜를 선택해 주세요.</h3>
2493								<div class="content">
2494									<div class="datepicker-map"></div>
2495								</div>
2496							</div>
2497						</div>
2498
2499						<div class="search_form_input people">
2500							<span class="placeholder">성인0, 소인0</span>
2501							<div class="search_choice_box">
2502								<h3 class="title">인원을 선택해 주세요.</h3>
2503								<p class="text">소인에 대한 나이기준 및 추가요금 정책은 업체별로 상이하니 예약전 안내사항을 반드시 확인하시기 바랍니다.</p>
2504								<div class="content">
2505									<div class="people_count">
2506										<span class="people_count_text">성인</span>
2507										<div class="count_box adult">
2508											<!-- 0일때 - 버튼에 클래스 disabled 추가 -->
2509											<button type="button" class="count_box_decrease disabled"></button>
2510											<span class="count_box_num">0</span>
2511											<button type="button" class="count_box_increase"></button>
2512										</div>
2513									</div>
2514									<div class="people_count">
2515										<span class="people_count_text">소인</span>
2516										<div class="count_box child">
2517											<button type="button" class="count_box_decrease disabled"></button>
2518											<span class="count_box_num">0</span>
2519											<button type="button" class="count_box_increase disabled"></button>
2520										</div>
2521									</div>
2522								</div>
2523							</div>
2524						</div>
2525					</div>			
2526
2527					<div class="search_marker">
2528					    <img width="20" src="/images/search/search-place.png" alt="검색 위치" />
2529					</div>
2530					
2531					<div id="search_map" style="width:100%;
2531 height: calc(100dvh - 61px);"></div>
2532
2533					<div style="position: absolute; bottom: 25px; right: 1rem;">	
2534						<button type="button" class="find_nearby_btn" id="map_nearby_button">내 주변 검색</button>
2535					</div>
2536				</div>
2537			</div>
2538
2539		  <!--↑↑↑↑↑↑↑↑↑ 컨텐츠 끝 ↑↑↑↑↑↑↑↑↑ -->
2540		</div>
2541
2542		<div class="btm_foot">
2543			<div class="btn_set type2">
2544				<ul>
2545					<li class="btn_wp">				
2546						<button type="button" class="btn_res" id="submitSearch"><span id="btn_res_txt">검색</span></button>					
2547					</li>
2548				</ul>
2549			</div>
2550		</div>
2551
2552    </div>
2553</div>
2554
2555<!-- camp Search (숙소 검색) -->
2556<div class="pop_layer_set" id="filter_pop">
2557	<div class="pop_layer filter_pop">
2558
2559		<div class="pop_title">
2560			<p class="tit">숙소검색</p>
2561			<button type="button" class="clo2" id="popFilterCloseButton"></button>
2562		</div>
2563
2564		<div class="pop_con">
2565			<div class="search_box">
2566				<div class="sear_set" style="max-width:100%;">
2567					<input type="text" id="ser_camp_keyword" list="sear_list" value="" placeholder="숙소명 또는 추천 키워드로 검색해보세요"  />
2568				</div>
2569			</div>
2570
2571			<ul id="search_result_box" class="search_result_box">
2572				<li>
2573					<div class="title">
2574						<strong>강원 곰배령에버그린</strong>
2575					</div>
2576					<p>펜션, 강원 인제군</p>
2577				</li>
2578				<li>
2579					<div class="title">
2580						<strong>강원 곰배령에버그린</strong>
2581					</div>
2582					<p>펜션, 강원 인제군</p>
2583				</li>
2584				<li>
2585					<div class="title">
2586						<strong>강원 곰배령에버그린</strong>
2587					</div>
2588					<p>펜션, 강원 인제군</p>
2589				</li>
2590				<li>
2591					<div class="title">
2592						<strong>강원 곰배령에버그린</strong>
2593					</div>
2594					<p>펜션, 강원 인제군</p>
2595				</li>
2596			</ul>
2597		
2598
2599			<div class="recent_searches">
2600				<div class="title">
2601					<strong>최근검색어</strong>
2602					<button type="button">전체삭제</button>
2603				</div>
2604				<div class="content">
2605					<div class="swiper-container pop_recent_keyword_swiper">
2606						<ul class="swiper-wrapper">
2607							<li class="swiper-slide">
2608								<div class="box">
2609									<span>키워드 1</span>
2610									<button class="deleted_button" type="button"><img src="/images/tot_clo.png" alt="" /></button>
2611								</div>
2612							</li>
2613							<li class="swiper-slide">
2614								<div class="box">
2615									<span>키워드 2</span>
2616									<button class="deleted_button" type="button"><img src="/images/tot_clo.png" alt="" /></button>
2617								</div>
2618							</li>
2619						</ul>
2620					</div>
2621				</div>
2622			</div>
2623
2624			<div class="recent_searches">
2625				<div class="title">
2626					<strong>땡큐 검색 키워드 추천</strong>
2627				</div>
2628				<div class="content">
2629					<div class="swiper-container pop_recent_keyword_swiper">
2630						<ul class="swiper-wrapper">
2631							<li class="swiper-slide">
2632								<div class="box keyword">숙박 세일 페스타</div>
2633							</li>
2634							<li class="swiper-slide">
2635								<div class="box keyword">댕댕이랑 태안가는 달</div>
2636							</li>
2637							<li class="swiper-slide">
2638								<div class="box keyword">신규입점</div>
2639							</li>
2640						</ul>
2641					</div>
2642				</div>
2643			</div>
2644
2645			<div class="recent_searches">
2646				<div class="title">
2647					<strong>이용객 후기에서 찾은 검색 키워드 추천</strong>
2648				</div>
2649				<div class="content">
2650					<div class="none_slide_box">
2651						<div class="box keyword2">놀이시설이 많아 아이들과 함께하기 좋은 캠핑장</div>
2652						<div class="box keyword2">사진이 잘나오는 뷰가 멋진 캠핑장</div>
2653						<div class="box keyword2">사장님이 친절하고 시설관리가 잘되어있는 캠핑장</div>
2654						<div class="box keyword2">조용하고 매너타임이 잘지켜지는 캠핑장</div>
2655					</div>
2656				</div>
2657			</div>
2658
2659			<div class="recent_searches">
2660				<div class="title" style="display: block">
2661					<strong>실시간 급상승 검색 숙소</strong>
2662					<p class="description">지역별 실시간 검색 순위를 보고싶으시면 <span>여기</span>를 눌러 선호지역을 선택해주세요. (최대3개지역 등록 가능)</p>
2663				</div>
2664				<div class="content">
2665					<ul class="rank">
2666						<li><span class="rank-number">1</span> <span class="company-name">업체명</span></li>
2667						<li><span class="rank-number">2</span> <span class="company-name">업체명</span></li>
2668						<li><span class="rank-number">3</span> <span class="company-name">업체명</span></li>
2669						<li><span class="rank-number">4</span> <span class="company-name">업체명</span></li>
2670						<li><span class="rank-number">5</span> <span class="company-name">업체명</span></li>
2671						<li><span class="rank-number">6</span> <span class="company-name">업체명</span></li>
2672						<li><span class="rank-number">7</span> <span class="company-name">업체명</span></li>
2673						<li><span class="rank-number">8</span> <span class="company-name">업체명</span></li>
2674						<li><span class="rank-number">9</span> <span class="company-name">업체명</span></li>
2675						<li><span class="rank-number">10</span> <span class="company-name">업체명</span></li>
2676					</ul>
2677				</div>
2678			</div>
2679
2680			<div class="btm_foot">
2681				<div class="btn_set type2">
2682					<ul>
2683						<li class="btn_wp">				
2684							<button type="button" class="btn_res"><span id="btn_res_txt">검색</span></button>					
2685						</li>
2686					</ul>
2687				</div>
2688			</div>
2689
2690		</div>
2691
2692	</div>
2693</div>
2694
2695<!-- script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpClientId=9qnra9njt9"></script -->
2696<script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=7pi6a4tp01"></script>
2696
2697<script>
2698	// SearchTypePage 값: "MAIN" | "MAP" | "LIST" | "COLLECT" 
2699
2700	/* 팝업 관련 함수 */
2701	const popSearchManager = {
2702		scrollPosition: 0,
2703		init: function(){
2704			const popFilterButtonEl = document.getElementById("top_search_input");
2705            const popFilterCloseButtonEl = document.getElementById("popSearchCloseButton");
2706
2707			popFilterButtonEl.addEventListener("click", () => {
2708                this.open();
2709				tabManager.init();
2710				
2711				this.createInfoBox();
2712            });
2713
2714            popFilterCloseButtonEl.addEventListener("click", () => {
2715                this.deleteInfoBox();
2716                this.close();
2717            });
2718
2719			this.pageSet();
2720		},
2721		// 타입별 페이지 세팅
2722		pageSet: function(){
2723			const listType = "LIST";
2724			
2725			if(listType == "COLLECT" || listType == "CAMPCOUPON"){
2726				// 리스트 검색 버튼명 변경
2727				const listTabButtonEl = document.getElementById("listTab")
2728				const searchKeywordInputEl = document.querySelector(".search_form_input.search")
2729				listTabButtonEl.innerText = "필터 검색"
2730				searchKeywordInputEl.style.display = "none"
2731				
2732				// 지도 검색 버튼 미노출
2733				const mapTabButtonEl = document.getElementById("mapTab")
2734				mapTabButtonEl.style.display = "none"
2735			}
2736		},
2737		// 필터 팝업 열기
2738        open: function (filterType) {
2739            this.scrollPosition = window.scrollY; // 현재 스크롤 위치 저장
2740			document.getElementById("search_pop").classList.add("on");
2741			document.body.style.overflow = "hidden"; 
2742			document.body.style.top = `-${this.scrollPosition}px`; // 현재 위치 유지
2743        },
2744		// 필터 팝업 닫기
2745        close: function () {
2746            document.getElementById("search_pop").classList.remove("on");
2747			document.body.style.overflow = "visible"; 
2748			document.body.style.top = ""; // 원래 상태로 복구
2749			window.scrollTo(0, this.scrollPosition); // 스크롤 위치 복원
2750        },
2751        // 팝업 오픈 시 말풍선 노출
2752        createInfoBox: function(){
2753            document.getElementById("mapInfoBox").classList.add("active");
2754            setTimeout(() => {
2755                mapInfoBox.classList.remove("active");
2756            }, 5000);
2757        },
2758        // 팝업 닫을 시 말풍선 제거
2759        deleteInfoBox: function(){
2760            document.getElementById("mapInfoBox").classList.remove("active");
2761        },
2762
2763		// 검색 페이지 타입이 MAP, LIST, COLLECT 일 때 search input placeholder 업데이트
2764		updateSearchInput: function(){
2765		    const listType = "LIST";
2766			const popFilterInputEl = document.querySelector(".search_div .text");
2767			let filterTexts = [];
2768
2769			// 검색 키워드 추가
2770			if (searchFilterManager._inputFieldEl.value) {
2771				filterTexts.push(searchFilterManager._inputFieldEl.value);
2772			}
2773
2774			// 지역 정보 추가
2775			if (searchFilterManager._filter.region || searchFilterManager._filter.sub_region.length > 0) {
2776				let regionText = "";
2777				if (searchFilterManager._filter.sub_region.length > 0) {
2778					regionText += " " + searchFilterManager._filter.sub_region.join(", ").replace(/ㆍ/g, ", "); // 서브 지역 여러 개일 경우 콤마로 연결
2779				}else{
2780				    regionText += searchFilterManager._filter.region;
2781				}
2782				filterTexts.push(regionText);
2783			}else{
2784			    if(listType == "LIST" || listType == "COLLECT" || listType == "CAMPCOUPON"){
2785			        filterTexts.push("지역 전체");
2786			    }
2787			}
2788
2789			// 날짜 추가
2790			const dateStr = searchFilterManager.choiceDateStr();
2791			if (dateStr) {
2792				filterTexts.push(dateStr);
2793			}
2794			
2795			// COLLECT 일때, 숙소구분 타입
2796			if (listType == "COLLECT" || listType == "CAMPCOUPON") {
2797                let siteTypeText = "";
2798                
2799                if (searchFilterManager._filter.site_type.length > 0) {
2800                    const siteTypeMap = {
2801                        "BB000": "오토캠핑",
2802                        "BB001": "글램핑",
2803                        "BB002": "카라반",
2804                        "BB003": "펜션"
2805                    };
2806            
2807                    // 코드 값을 한글로 변환
2808                    siteTypeText += " " + searchFilterManager._filter.site_type
2809                        .map(code => siteTypeMap[code] || code) // 매핑된 값이 없으면 원래 코드 유지
2810                        .join(", ");
2811                    
2812                    filterTexts.push(siteTypeText);
2813                } else {
2814                    filterTexts.push("숙소구분 전체");
2815                }
2816            }
2817
2818
2819			// 인원 추가
2820			let peopleText = [];
2821			if (searchFilterManager._filter.adultCount > 0) {
2822				peopleText.push(`성인 ${searchFilterManager._filter.adultCount}`);
2823			}
2824			if (searchFilterManager._filter.childCount > 0) {
2825				peopleText.push(`소인 ${searchFilterManager._filter.childCount}`);
2826			}
2827			if (peopleText.length > 0) {
2828				filterTexts.push(peopleText.join("/"));
2829			}
2830
2831			popFilterInputEl.innerHTML = filterTexts.join("ㆍ");
2832		}
2833
2834	}
2835
2836	/* 탭 관련 함수 */
2837	const tabManager = {
2838		init: function(){
2839			const tabs = document.querySelectorAll(".search_tab li");
2840			const listType = "LIST";
2841			const listTypeNum = listType == "MAP" ? 1 : 0;
2842
2843			 // 초기에 숙소 검색 활성화
2844			this.setActiveTab(listTypeNum);
2845
2846			// 탭 클릭 이벤트
2847			tabs.forEach((tab, index) => {
2848				tab.addEventListener("click", () => tabManager.setActiveTab(index));
2849			});
2850		},
2851		isListActive: function() {
2852			return this.currentTab === 'list'; // 'list' 탭이 활성화되었으면 true
2853		},
2854		setActiveTab: function(index){
2855			const listType = "LIST";
2856			const tabs = document.querySelectorAll(".search_tab li");
2857			const listSearchContent = document.getElementById("list-search-content");
2858			const mapSearchContent = document.getElementById("map-search-content");
2859			const mapBoxContent = document.getElementById("map_search_wrap");
2860
2861			// 모든 탭에서 active 제거
2862			tabs.forEach(tab => tab.classList.remove("active"));
2863			// 클릭한 탭에 active 추가
2864			tabs[index].classList.add("active");
2865
2866			if (index === 0) {
2867				// 숙소검색 활성화
2868				listSearchContent.style.display = "block";
2869				mapSearchContent.style.display = "none";
2870				
2871				this.updateSearchButton(() => searchFilterManager.submitSearch());
2872			} else {
2873				// 지도검색 활성화
2874				listSearchContent.style.display = "none";
2875				mapSearchContent.style.display = "block";
2876
2877				const width = mapBoxContent.clientWidth;  // 가로값
2878				const height = mapBoxContent.clientHeight; // 세로값
2879
2880				console.log("가로:", width, "세로:", height);
2881
2882				if(searchMapManager._MAP == null){
2883					// 지도 관련 이벤트
2884					searchMapManager.init();
2885				}
2886				
2887				if(listType == "MAP"){
2888					// 지도 페이지에 있는 메인 지도 가운데 좌표 가져ì˜
2888¤ê¸°
2889					if(typeof _MAP != "undefined"){
2890						const mainMapCenter = _MAP.getCenter();
2891						searchMapManager._MAP.setCenter(new naver.maps.LatLng(mainMapCenter._lat, mainMapCenter._lng));
2892						searchMapManager._MAP.setSize(new naver.maps.Size(width, height));
2893					}
2894				} else{
2895					searchMapManager._MAP.setSize(new naver.maps.Size(width, height));
2896				}
2897				
2898				this.updateSearchButton(() => searchFilterManager.submitMapSearch());
2899			}
2900		},
2901		updateSearchButton: function(eventHandler){
2902			const searchButton = document.getElementById("submitSearch");
2903            
2904            // 기존 이벤트 제거 후 새로운 이벤트 추가
2905            searchButton.replaceWith(searchButton.cloneNode(true));
2906            const newSearchButton = document.getElementById("submitSearch");
2907        
2908            newSearchButton.addEventListener("click", eventHandler);
2909		}
2910	}
2911
2912	/* 스와이퍼 관련 함수 */
2913	const swiperManager = {
2914		init: function(){
2915			this.listFilter();
2916			this.popRecentKeyword();
2917			this.placeTab();
2918			this.stayBtn();
2919			this.adCampList();
2920		},
2921		// 리스트 페이지 필터 선택 구분
2922		listFilter: function(){
2923			const recent_swiper = new Swiper('.recent_swiper', {
2924				pagination: false,
2925				slidesPerView: 'auto',
2926				paginationClickable: true,
2927				spaceBetween: 8,
2928				freeMode: true,
2929				lazyLoading: true,
2930				observer: true,
2931				observeParents: true,
2932				loop: false,
2933            });
2934
2935			return recent_swiper;
2936		},
2937		// 숙박구분분 선택 탭
2938		stayBtn: function(){
2939			const recent_swiper = new Swiper('.stay_btn_swiper', {
2940				pagination: false,
2941				slidesPerView: 'auto',
2942				paginationClickable: true,
2943				spaceBetween: 6,
2944				freeMode: true,
2945				lazyLoading: true,
2946				observer: true,
2947				observeParents: true,
2948				loop: false,
2949            });
2950
2951			return recent_swiper;
2952		},
2953		// 지역 선택 탭
2954		placeTab: function(){
2955			const recent_swiper = new Swiper('.place_tab_swiper', {
2956				pagination: false,
2957				slidesPerView: 'auto',
2958				paginationClickable: true,
2959				spaceBetween: 8,
2960				freeMode: true,
2961				lazyLoading: true,
2962				observer: true,
2963				observeParents: true,
2964				loop: false,
2965            });
2966
2967			return recent_swiper;
2968		},
2969		// 팝업 최근 검색어
2970		popRecentKeyword: function(){
2971			const recent_swiper = new Swiper('.pop_recent_keyword_swiper', {
2972				pagination: false,
2973				slidesPerView: 'auto',
2974				paginationClickable: true,
2975				spaceBetween: 8,
2976				freeMode: true,
2977				lazyLoading: true,
2978				observer: true,
2979				observeParents: true,
2980				loop: false,
2981            });
2982
2983			return recent_swiper;
2984		},
2985		// 검색 광고 영역
2986		adCampList: function(){
2987            const ad_camp_swiper = new Swiper('.ad_camp_swiper', {
2988                pagination: false,
2989                slidesPerView: 'auto',
2990                paginationClickable: true,
2991                spaceBetween: 8,
2992                freeMode: true,
2993                lazyLoading: true,
2994                observer: true,
2995                observeParents: true,
2996                loop: false,
2997            });
2998
2999            return ad_camp_swiper;
3000        },
3001	};
3002
3003
3004	/* 검색어 입력 관련 함수 */
3005	const searchUrlParams = new URLSearchParams(window.location.search);
3006	const searchFilterManager = {
3007	    _searchType: "LIST",
3008		_searchFormEl: document.querySelectorAll('.search_form_input'),
3009		_inputFieldEl: document.getElementById("ser_keyword_"),
3010		_placeCategoryButtonEl: document.querySelectorAll(".place_button"), 
3011		_filter: {
3012			site_type: searchUrlParams.get("site_tp") ? searchUrlParams.get("site_tp").split(",") : [],
3013			res_date: searchUrlParams.get("res_dt") || "",
3014			res_end_date: searchUrlParams.get("res_edt") || "",
3015			ser_res_date: searchUrlParams.get("res_dt") || "",
3016			ser_res_end_date: searchUrlParams.get("res_edt") || "",
3017			region: searchUrlParams.get("region") || "",
3018			sub_region: searchUrlParams.get("sub_region")  ? searchUrlParams.get("sub_region").split(",") : [],
3019			adultCount: searchUrlParams.get("ser_adult_count") || 0,
3020			childCount: searchUrlParams.get("ser_child_count") || 0,
3021			lat: null,
3022			lng: null
3023		},
3024		init: function(){
3025			// 기존 날짜 세팅
3026			this.getResDate();
3027			// 기존 인원 세팅
3028			this.getPersonCount();
3029			// 키워드 검색 이벤트
3030            this._inputFieldEl.value = searchUrlParams.get("ser_keyword");
3031            this._inputFieldEl.addEventListener("keyup", this.getKeywordCampName);
3032            if(this._inputFieldEl.value != ""){
3033                document.getElementById("deleteKeyword").style.display = "inline";
3034            }
3035			// 기존 숙소구분 세팅
3036			this.getSiteType();
3037			this.choiceSiteType();
3038
3039			// 팝업 오픈 input 텍스트 세팅
3040			if(searchFilterManager._searchType == "MAP" || searchFilterManager._searchType == "LIST" || searchFilterManager._searchType == "COLLECT" || searchFilterManager._searchType == "CAMPCOUPON"){
3041			    popSearchManager.updateSearchInput();
3042			}
3043			
3044			if(searchFilterManager._searchType == "LIST" && !(searchFilterManager._filter.ser_res_date == "" && searchFilterManager._filter.ser_res_end_date == "" )){
3045			    const emptyButtonEl = document.getElementById("empty_y");
3046			    emptyButtonEl.style.display = "block";
3047			}
3048
3049			// 검색하기 버튼 이벤트
3050			document.getElementById("submitSearch").addEventListener("click", this.submitSearch);
3051
3052			// 검색 인풋 초기화 버튼 이벤트
3053			document.getElementById("deleteKeyword").addEventListener("click", function(){
3054				document.getElementById("search_result_box").style.display = "none";
3055				document.getElementById("search_result_info_box").style.display = "none";
3056				document.getElementById("deleteKeyword").style.display = "none";
3057				searchFilterManager._inputFieldEl.value = ""
3058			});
3059
3060			// 달력 일정 초기화 버튼
3061			document.getElementById("calendarResetButton").addEventListener("click", function(){
3062				searchFilterManager.getResDate(true);
3063			});
3064			
3065
3066			// 필터 인풋 버튼 이벤트
3067			this._searchFormEl.forEach(input => {
3068				input.addEventListener('click', function(event) {
3069					document.querySelectorAll('.search_form_input').forEach(el => {
3070						document.getElementById("search_result_box").style.display = "none";
3071						document.getElementById("search_result_info_box").style.disply = "none";
3072						el.classList.remove("active");
3073					});
3074
3075					this.classList.add("active");
3076					document.querySelectorAll('.search_choice_box').forEach(box => {
3077						box.style.display = 'none';
3078					});
3079
3080					const choiceBox = this.querySelector('.search_choice_box');
3081					if (choiceBox) {
3082						choiceBox.style.display = 'block';
3083					}
3084
3085					event.stopPropagation();
3086				});
3087			});
3088
3089			document.addEventListener('click', function() {
3090				document.querySelectorAll('.search_choice_box').forEach(box => {
3091					box.style.display = 'none';
3092					if(searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == ""){
3093						searchFilterManager._filter.res_end_date = searchFilterManager._filter.res_date;
3094						searchFilterManager.updateDatePlaceholder();
3095					}
3096				});
3097				document.querySelectorAll('.search_form_input').forEach(el => {
3098					document.getElementById("search_result_box").style.display = "none";
3099					document.getElementById("search_result_info_box").style.display = "none";
3100					el.classList.remove("active");
3101				});
3102			});
3103
3104			this.updateRegionPlaceholder();
3105			this._placeCategoryButtonEl.forEach((button, index) => {
3106				button.addEventListener('click', function () {
3107					searchFilterManager._placeCategoryButtonEl.forEach(btn => btn.classList.remove("active"));
3108
3109					const region_grp = button.getAttribute('data-value');
3110					const region = button.getAttribute('data-region');
3111					const region_arr = button.getAttribute('data-arr');
3112					const placeChoiceBox = document.getElementById('place_choice_box');
3113					const placeChoiceUl = placeChoiceBox.querySelector('ul');
3114                  
3115					button.classList.add("active");
3116					searchFilterManager._filter.region = region_grp;
3117					searchFilterManager._filter.sub_region = [];
3118                    placeChoiceUl.innerHTML = '';
3119					searchFilterManager.updateRegionPlaceholder();
3120					
3121
3122					searchFilterManager.getRegionList(region_grp, region, region_arr);
3123				});
3124			});
3125			
3126			
3127
3128			// 내 주변에서 검색 버튼
3129			document.getElementById("map_nearby_button").addEventListener("click", function(){ 
3130			    location.href="/search/mapSearch.hbb";
3131			})
3132			
3133		},
3134
3135		// 싱크 맞춰야할 데이터 관리 searchFilterManager.syncFilters();
3136		syncFilters: function () {
3137			
3138			// LIST 페이지 동기화
3139			if (searchFilterManager._searchType == "LIST") {
3140			    filterManager._selectedFilters.ser_site_tp = [...searchFilterManager._filter.site_type];
3141				filterManager._selectedFilters['ser_site_tp'] = [...searchFilterManager._filter.site_type];
3142
3143				// UI 반영
3144				document.querySelectorAll(`.item_list button[name='ser_site_tp']`).forEach(item => {
3145					const value = item.getAttribute('value');
3146					if (searchFilterManager._filter.site_type.includes(value)) {
3147						item.classList.add("active");
3148					} else {
3149						item.classList.remove("active");
3150					}
3151				});
3152				
3153				document.querySelectorAll(`.stay_button[name='site_tp']`).forEach(item => {
3154                    const value = item.getAttribute('value');
3155                    if (searchFilterManager._filter.site_type.includes(value)) {
3156                        item.classList.add("active");
3157                    } else {
3158                        item.classList.remove("active");
3159                    }
3160                });
3161
3162				headFilterManager.updateActiveFilters();
3163			}
3164
3165			// site_type이 비어 있으면 '전체' 버튼 활성화, 아니면 비활성화
3166			const allButtonEl = document.getElementById("site_tp_all");
3167			if (searchFilterManager._filter.site_type.length === 0) {
3168				allButtonEl.classList.add("active");
3169			} else {
3170				allButtonEl.classList.remove("active");
3171			}
3172		},
3173
3174		// 키워드 검색
3175		getKeywordCampName: function(){
3176			const resultBoxEl = document.getElementById("search_result_box");
3177			const resultInfoBoxEl = document.getElementById("search_result_info_box");
3178
3179			if(searchFilterManager._inputFieldEl.value.length > 0) {
3180				document.getElementById("deleteKeyword").style.display = "inline";
3181			}else{
3182				document.getElementById("deleteKeyword").style.display = "none";
3183			}
3184			
3185			if(searchFilterManager._inputFieldEl.value.length > 1) {
3186				console.log(searchFilterManager._inputFieldEl.value);
3187				
3188				$.ajax({
3189					type: "POST",
3190					url: "/resv/ax_camp_name.hbb",
3191					data:{ser_camp_name: searchFilterManager._inputFieldEl.value},
3192					success: onSuccess,
3193					error: onError
3194				});
3195				
3196				function onSuccess(dataobj) {
3197					const result = JSON.parse(dataobj);
3198					const keyword = searchFilterManager._inputFieldEl.value.trim(); 
3199					let contents = [];
3200
3201					if (result.length === 0) {
3202						// 결과가 없을 때
3203						contents.push(
3204						`<li>
3205							<a href="javascript:;">
3206								<span class="searchPlace_icon"></span>
3207								<p class="keword_text">검색된 캠핑장이 없습니다.</span></p>
3208							</a>
3209						</li>`);
3210					} else {
3211						// 결과가 있을 때
3212						result.forEach((data) => {
3213							const highlightedName = data.campName.replace(
3214								new RegExp(`(${keyword})`, "gi"),
3215								`<span style="color: #F27226; font-weight: bold;">$1</span>`
3216							);
3217
3218							const el = 
3219							`<li>
3220								<a href="javascript:clkViewDirect('${data.campSeq}');">
3221									<span class="searchPlace_icon"></span>
3222									<p class="keword_text">${highlightedName}</p>
3223									<p class="keword_content">${data.campType}, ${data.shortAddress}</p>
3224								</a>
3225							</li>`;
3226							contents.push(el);
3227						});
3228					}
3229
3230					document.getElementById('search_result_box').innerHTML = contents.join("");
3231				}
3232
3233
3234				function onError() {}
3235
3236				resultBoxEl.style.display = 'block';
3237				resultInfoBoxEl.style.display = 'block';
3238			} else {
3239				document.getElementById('search_result_box').innerHTML = "";
3240				resultBoxEl.style.display = 'none';
3241				resultInfoBoxEl.style.display = 'none';
3242			}
3243		},
3244
3245		getRegionList: function(region_grp, region, arr){
3246		    const site_tp = searchFilterManager._filter.site_type ? searchFilterManager._filter.site_type.join(",") : "";
3247		    const listType = "LIST";
3248		    
3249			$.ajax({
3250				type: "POST",
3251				url: "/search/axRegion.hbb",
3252				data: {region_grp: region_grp, region: region, site_tp: site_tp},
3253				success: onSuccess,
3254				error: onError
3255			});
3256
3257			function onSuccess(dataobj) {
3258				document.getElementById('place_result_box').innerHTML = dataobj;
3259				
3260				if(listType == "COLLECT" || listType == "CAMPCOUPON"){
3261				    document.querySelectorAll('.sub_region .tnum').forEach(el => el.remove());
3262				}
3263				
3264				searchFilterManager.choiceRegion();
3265			}
3266
3267			function onError() {}
3268		},
3269		choiceRegion: function() {
3270			const allSubRegionButtonEl = document.getElementById("all_sub_region");
3271			const subRegionButtonsEl = document.querySelectorAll('.sub_region');
3272
3273			// 페이지 로드 시 선택된 지역들에 대한 UI 상태 동기화
3274			this.syncSubRegionUI();
3275
3276			subRegionButtonsEl.forEach(button => {
3277				button.addEventListener('click', () => {
3278					const value = button.getAttribute('data-sub-region');
3279
3280					if (this._filter.sub_region.includes(value)) {
3281						// 선택된 지역에서 제거
3282						this._filter.sub_region = this._filter.sub_region.filter(item => item !== value);
3283						button.classList.remove('active');
3284					} else {
3285						// 선택된 개수가 3개 미만일 때만 추가
3286						if (this._filter.sub_region.length < 3) {
3287							this._filter.sub_region.push(value);
3288							button.classList.add('active');
3289						} else {
3290							return; // 선택 개수 제한 초과 시 처리
3291						}
3292					}
3293
3294					// 지역 뱃지 업데이트
3295					this.addRegionBadge();
3296					this.updateRegionPlaceholder();
3297				});
3298			});
3299
3300			// "모든 지역 선택" 버튼 처리
3301			allSubRegionButtonEl.addEventListener('click', () => {
3302				this._filter.sub_region = [];
3303				subRegionButtonsEl.forEach(button => button.classList.remove('active'));
3304				allSubRegionButtonEl.classList.add('active');
3305
3306				// 지역 뱃지 및 플래이스홀더 업데이트
3307				this.addRegionBadge();
3308				this.updateRegionPlaceholder();
3309			});
3310		},
3311		// 지역 UI 상태 동기화
3312		syncSubRegionUI: function() {
3313			const subRegionButtonsEl = document.querySelectorAll('.sub_region');
3314			const allSubRegionButtonEl = document.getElementById("all_sub_region");
3315
3316			// 기존 선택된 지역들에 대한 UI 상태 업데이트
3317			subRegionButtonsEl.forEach(button => {
3318				const value = button.getAttribute('data-sub-region');
3319				if (this._filter.sub_region.includes(value)) {
3320					button.classList.add('active');
3321				} else {
3322					button.classList.remove('active');
3323				}
3324			});
3325
3326			// "모든 지역 선택" 버튼 처리
3327			if (this._filter.sub_region.length === 0) {
3328				allSubRegionButtonEl.classList.add('active');
3329			} else {
3330				allSubRegionButtonEl.classList.remove('active');
3331			}
3332		},
3333		// 지역 선택 시 아래 뱃지 추가
3334		addRegionBadge: function () {
3335			const placeChoiceBox = document.getElementById('place_choice_box');
3336			const placeChoiceUl = placeChoiceBox.querySelector('ul');
3337
3338			// 기존 뱃지들이 중복되지 않도록 처리
3339			placeChoiceUl.innerHTML = ''; // 기존 뱃지들 초기화
3340			this._filter.sub_region.forEach(sub_region => {
3341				const li = document.createElement('li');
3342				li.classList.add('badge_button');
3343				li.setAttribute('data-value', sub_region);
3344				li.innerHTML = `
3345					${sub_region}
3346					<button type="button" class="place_choice_delete btn_close" data-value="${sub_region}">
3347						<img src="/images/tot_clo.png">
3348					</button>
3349				`;
3350
3351				li.querySelector('.place_choice_delete').addEventListener('click', () => {
3352					this._filter.sub_region = this._filter.sub_region.filter(item => item !== sub_region);
3353					document.querySelector(`.sub_region[data-sub-region="${sub_region}"]`)?.classList.remove('active');
3354					this.addRegionBadge(); // 뱃지 업데이트
3355					this.updateRegionPlaceholder(); // 플래이스홀더 업데이트
3356				});
3357
3358				placeChoiceUl.appendChild(li);
3359			});
3360		},
3361		// 지역 선택 시 placeholder 업데이트
3362		updateRegionPlaceholder: function() {
3363			const regionPlaceholder = document.querySelector('.place .placeholder');
3364			
3365			if (this._filter.region.length > 0) {
3366				if(this._filter.sub_region.length > 0){
3367					document.getElementById('all_sub_region')?.classList.remove("active");
3368					regionPlaceholder.innerHTML = this._filter.region + ' ' + (this._filter.sub_region.length > 0 ? this._filter.sub_region.join(', ') : '');
3369				}else{
3370					document.getElementById('all_sub_region')?.classList.add("active");
3371					regionPlaceholder.innerHTML = this._filter.region;
3372				}
3373			} else {
3374				document.getElementById('all_sub_region')?.classList.add("active");
3375				regionPlaceholder.innerHTML = '지역을 선택 하세요.';
3376			}
3377		},
3378
3379		getPersonCount: function() {
3380			// 성인 카운트 관련 요소
3381			const adultCountEl = document.querySelectorAll(".count_box.adult .count_box_num");
3382			const adultIncreaseBtn = document.querySelectorAll(".count_box.adult .count_box_increase");
3383			const adultDecreaseBtn = document.querySelectorAll(".count_box.adult .count_box_decrease");
3384
3385			// 아이(소인) 카운트 관련 요소
3386			const childCountEl = document.querySelectorAll(".count_box.child .count_box_num");
3387			const childIncreaseBtn = document.querySelectorAll(".count_box.child .count_box_increase");
3388			const childDecreaseBtn = document.querySelectorAll(".count_box.child .count_box_decrease");
3389
3390			// 초기 값 반영
3391			adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3392			childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3393
3394			// 성인 증가 버튼 클릭 이벤트
3395			adultIncreaseBtn.forEach(btn => {
3396				btn.addEventListener("click", function () {
3397					searchFilterManager._filter.adultCount++;
3398					adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3399					
3400					searchFilterManager.updatePersonPlaceholder();
3401					searchFilterManager.updateButtonState();
3402				});
3403			});
3404
3405			// 성인 감소 버튼 클릭 이벤트
3406			adultDecreaseBtn.forEach(btn => {
3407				btn.addEventListener("click", function () {
3408					if (searchFilterManager._filter.adultCount > 1 || (searchFilterManager._filter.adultCount == 1 && searchFilterManager._filter.childCount == 0)) {
3409						searchFilterManager._filter.adultCount--;
3410						adultCountEl.forEach(el => el.textContent = searchFilterManager._filter.adultCount);
3411
3412						searchFilterManager.updatePersonPlaceholder();
3413						searchFilterManager.updateButtonState();
3414					}
3415				});
3416			});
3417
3418			// 아이(소인) 증가 버튼 클릭 이벤트
3419			childIncreaseBtn.forEach(btn => {
3420				btn.addEventListener("click", function () {
3421					if (searchFilterManager._filter.adultCount > 0) {
3422						searchFilterManager._filter.childCount++;
3423						childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3424						
3425						searchFilterManager.updatePersonPlaceholder();
3426						searchFilterManager.updateButtonState();
3427					}
3428				});
3429			});
3430
3431			// 아이(소인) 감소 버튼 클릭 이벤트
3432			childDecreaseBtn.forEach(btn => {
3433				btn.addEventListener("click", function () {
3434					if (searchFilterManager._filter.childCount > 0) {
3435						searchFilterManager._filter.childCount--;
3436						childCountEl.forEach(el => el.textContent = searchFilterManager._filter.childCount);
3437
3438						searchFilterManager.updatePersonPlaceholder();
3439						searchFilterManager.updateButtonState();
3440					}
3441				});
3442			});
3443
3444			// 업데이트 상태
3445			this.updateButtonState();
3446			this.updatePersonPlaceholder();
3447		},
3448		// 인원 버튼 상태 업데이트
3449		updateButtonState: function(){
3450			const adultDecreaseBtn = document.querySelectorAll(".count_box.adult .count_box_decrease");
3451			const childDecreaseBtn = document.querySelectorAll(".count_box.child .count_box_decrease");
3452			const childIncreaseBtn = document.querySelectorAll(".count_box.child .count_box_increase");
3453
3454			// 성인 버튼 상태
3455			if (searchFilterManager._filter.adultCount == 0 || (searchFilterManager._filter.adultCount == 1 && searchFilterManager._filter.childCount > 0)) {
3456				adultDecreaseBtn.forEach(adult => {
3457					adult.classList.add("disabled");
3458				})
3459			} else {
3460				adultDecreaseBtn.forEach(adult => {
3461					adult.classList.remove("disabled");
3462				})
3463			}
3464			// 아이 버튼 상태
3465			if (searchFilterManager._filter.adultCount == 0) {
3466				childIncreaseBtn.forEach(child => {
3467					child.classList.add("disabled");
3468				})
3469			} else {
3470				childIncreaseBtn.forEach(child => {
3471					child.classList.remove("disabled");
3472				})
3473			}
3474			// 아이 버튼 상태
3475			if (searchFilterManager._filter.childCount == 0) {
3476				childDecreaseBtn.forEach(child => {
3477					child.classList.add("disabled");
3478				})
3479			} else {
3480				childDecreaseBtn.forEach(child => {
3481					child.classList.remove("disabled");
3482				})
3483			}
3484		},
3485		// 인원 수 선택 시 placeholder 업데이트
3486		updatePersonPlaceholder: function() {
3487			const personPlaceholders = document.querySelectorAll('.people .placeholder'); 
3488			const adultCount = this._filter.adultCount;
3489			const childCount = this._filter.childCount;
3490
3491			personPlaceholders.forEach(holder => holder.innerHTML = `성인${adultCount}, 소인${childCount}`);
3492		},
3493
3494		getResDate: function(isReset){
3495			if(isReset || (searchFilterManager._filter.res_date == "" && searchFilterManager._filter.res_end_date == "")){
3496				const today = new Date();
3497				const tomorrow = new Date(today);
3498				tomorrow.setDate(today.getDate() + 1);
3499
3500				// 날짜 포맷 (yyyyMMdd)
3501				const todayStr = today.getFullYear() + ('0' + (today.getMonth() + 1)).slice(-2) + ('0' + today.getDate()).slice(-2);
3502				const tomorrowStr = tomorrow.getFullYear() + ('0' + (tomorrow.getMonth() + 1)).slice(-2) + ('0' + tomorrow.getDate()).slice(-2);
3503
3504				this._filter.res_date = todayStr;
3505				this._filter.res_end_date = tomorrowStr;
3506
3507				// datePicker 값도 개별적으로 초기화
3508				$(".datepicker-list").datepicker("setDate", today);
3509				$(".datepicker-map").datepicker("setDate", today);
3510			}
3511
3512			if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){
3513				const siteTypeBoxEl = document.getElementById("search_site_type_box");
3514				siteTypeBoxEl.style.display = "none";
3515			}
3516			
3517			// 날짜를 placeholder에 반영
3518			this.updateDatePlaceholder();
3519		},
3520		choiceDateStr: function(){
3521		    const datePlaceholders = document.querySelectorAll('.calendar .placeholder');
3522		    
3523			// res_date를 Date 객체로 변환 (yyyyMMdd 형식)
3524			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));
3525			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));
3526			
3527			// res_end_date도 동일하게 처리
3528			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));
3529			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));
3530
3531			// 날짜 형식이 올바른지 확인
3532			if (isNaN(startDate) || isNaN(endDate)) {
3533				datePlaceholders.forEach(holder => holder.innerHTML = '날짜를 선택해 주세요.');
3534				return;
3535			}
3536
3537			// 날짜를 'yyyy.MM.dd' 형식으로 변환 (02.02)
3538			//const startFormatted = startDate.getFullYear().toString().slice(-2) + '.' + ('0' + (startDate.getMonth() + 1)).slice(-2) + '.' + ('0' + startDate.getDate()).slice(-2);
3539			//const endFormatted = startDate.getFullYear().toString().slice(-2) + '.' + ('0' + (endDate.getMonth() + 1)).slice(-2) + '.' + ('0' + endDate.getDate()).slice(-2);
3540			const startFormatted = ('0' + (startDate.getMonth() + 1)).slice(-2) + '.' + ('0' + startDate.getDate()).slice(-2);
3541            const endFormatted = ('0' + (endDate.getMonth() + 1)).slice(-2) + '.' + ('0' + endDate.getDate()).slice(-2);
3542            const serStartFormatted = ('0' + (serStartDate.getMonth() + 1)).slice(-2) + '.' + ('0' + serStartDate.getDate()).slice(-2);
3543            const serEndFormatted = ('0' + (serEndDate.getMonth() + 1)).slice(-2) + '.' + ('0' + serEndDate.getDate()).slice(-2);
3544
3545			// 요일 계산 (짧은 요일 이름)
3546			const startDay = startDate.toLocaleString('ko-KR', { weekday: 'short' });
3547			const endDay = endDate.toLocaleString('ko-KR', { weekday: 'short' });
3548			const serStartDay = serStartDate.toLocaleString('ko-KR', { weekday: 'short' });
3549            const serEndDay = serEndDate.toLocaleString('ko-KR', { weekday: 'short' });
3550		
3551            if (this._filter.ser_res_date == "" || this._filter.ser_res_end_date == "") {
3552                datePlaceholders.forEach(holder => holder.innerHTML = `${serStartFormatted} ${serStartDay} - ${serEndFormatted} ${serEndDay}, ${this.calculateNights()}`);
3553                return '일정 선택';
3554            }
3555
3556			if((this._filter.res_date != "" && this._filter.res_end_date == "") || startFormatted == endFormatted){
3557				return `${startFormatted} ${startDay}, ${this.calculateNights()}(피크닉)`;
3558			}
3559
3560			return `${startFormatted} ${startDay} - ${endFormatted} ${endDay}, ${this.calculateNights()}`;
3561		},
3562		// 날짜 변경 시 placeholder 업데이트
3563		updateDatePlaceholder: function() {
3564			const datePlaceholders = document.querySelectorAll('.calendar .placeholder');
3565			const dateChoiceInfo = document.querySelector(".twonight");
3566    
3567			// 결과 출력 (예: 2025.02.19 목 - 2025.02.20 금, 1박)
3568			datePlaceholders.forEach(holder => holder.innerHTML = searchFilterManager.choiceDateStr());	
3569			// 결과 출력 (예: 당일, 1박 선택, 2박 선택)
3570			dateChoiceInfo.innerHTML = searchFilterManager.choiceDateStr();
3571		},
3572		// 숙박일수 계산
3573		calculateNights: function() {
3574			// 시작 날짜와 종료 날짜를 yyyyMMdd 형식에서 Date 객체로 변환
3575			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));
3576			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));
3577			
3578			// 날짜가 유효한지 확인
3579			if (isNaN(startDate) || isNaN(endDate)) {
3580				console.error("Invalid date format");
3581				return 0; // 날짜가 유효하지 않으면 0박
3582			}
3583
3584			// 날짜 차이 계산 (단위: 박)
3585			const difference = (endDate - startDate) / (1000 * 60 * 60 * 24);
3586
3587			// 0박 이하로 계산된 경우에는 당일로 처리
3588			return difference <= 0 ? `당일` : `${difference}박`;
3589		},
3590
3591		// 숙소 구분 세팅
3592		getSiteType: function () {
3593			const allButtonEl = document.getElementById("site_tp_all");
3594			const value = searchFilterManager._filter['site_type'];
3595
3596			// 모든 버튼의 'active' 클래스 초기화
3597			document.querySelectorAll(`.stay_button[name='site_tp']`).forEach(btn => btn.classList.remove("active"));
3598
3599			if (Array.isArray(value) && value.length > 0) {
3600				value.forEach(val => {
3601					document.querySelectorAll(`.stay_button[name='site_tp'][value='${val}']`).forEach(btn => btn.classList.add("active"));
3602				});
3603				allButtonEl.classList.remove("active"); // 개별 선택 시 '전체' 비활성화
3604			} else {
3605				allButtonEl.classList.add("active"); // 아무것도 선택되지 않으면 '전체' 활성화
3606			}
3607		},
3608		// 숙소 구분 노출 여부
3609		isSiteType: function(){
3610		    const siteTypeBoxEl = document.getElementById("search_site_type_box");
3611		
3612		    if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date || (searchFilterManager._filter.res_date != "" && searchFilterManager._filter.res_end_date == "")){ 
3613                siteTypeBoxEl.style.display = "none";
3614            }else{
3615                siteTypeBoxEl.style.display = "block";
3616            }
3617		},
3618		// 숙소 구분 선택
3619		choiceSiteType: function () {
3620			const allButtonEl = document.getElementById("site_tp_all");
3621			const siteTypeButtonEl = document.querySelectorAll('button[name="site_tp"]');
3622			
3623			// 전체 버튼 클릭 이벤트
3624            allButtonEl.addEventListener('click', () => {
3625                // 전체 선택 시 모든 개별 버튼 비활성화 & site_type 초기화
3626                this._filter.site_type = [];
3627                document.querySelectorAll(`button[name='site_tp']`).forEach(btn => btn.classList.remove('active'));
3628                allButtonEl.classList.add("active"); // 전체 버튼 활성화
3629        
3630                // LIST 페이지 필터 동기화
3631                searchFilterManager.syncFilters();
3632            });
3633
3634            // 개별 버튼 클릭 이벤트
3635			siteTypeButtonEl.forEach(button => {
3636				button.addEventListener('click', () => {
3637					const value = button.getAttribute('value');
3638
3639					if (this._filter.site_type.includes(value)) {
3640						// 선택된 값 제거
3641						this._filter.site_type = this._filter.site_type.filter(item => item !== value);
3642						document.querySelectorAll(`button[name='site_tp'][value='${value}']`).forEach(btn => btn.classList.remove('active'));
3643					} else {
3644						// 선택된 값 추가
3645						this._filter.site_type.push(value);
3646						document.querySelectorAll(`button[name='site_tp'][value='${value}']`).forEach(btn => btn.classList.add('active'));
3647					}
3648					
3649					// 숙소 구분 필터 싱크 맞추기
3650					searchFilterManager.syncFilters();
3651				});
3652			});
3653		},
3654        // 최근 검색 테이블 등록
3655        insertRecentSearch: function(){
3656            let status = "NO";
3657            
3658            const params = {
3659                search_keyword: searchFilterManager._inputFieldEl.value,
3660                site_tp: searchFilterManager._filter.site_type.join(","),
3661                res_date: searchFilterManager._filter.res_date,
3662                res_end_date: searchFilterManager._filter.res_end_date,
3663                region: searchFilterManager._filter.region,
3664                sub_region: searchFilterManager._filter.sub_region.join(","),
3665                adult_count: searchFilterManager._filter.adultCount,
3666                child_count: searchFilterManager._filter.childCount,   
3667            };
3668
3669            $.ajax({
3670                type: "POST",
3671                url: "/search/ax_insert_recent_search.hbb",
3672                data: params,
3673                success: onSuccess,
3674                error: onError
3675            });
3676            
3677            function onSuccess(dataobj) {
3678                status = dataobj;
3679                searchFilterManager.getRecentSearch();
3680            }
3681            function onError() {}   
3682            
3683            return status;
3684        },
3685        //최근검색리스트 가져오기
3686        getRecentSearch: function(){
3687            $.ajax({
3688                type: "POST",
3689                url: "/search/ax_get_recent_search.hbb",
3690                success: onSuccess,
3691                error: onError
3692            });
3693            
3694            function onSuccess(dataobj){
3695                const recentContentEl = document.getElementById("recentContent");
3696                recentContent.innerHTML = dataobj;
3697                
3698                document.addEventListener("click", function (event) {
3699                    const deleteButton = event.target.closest(".recentDeleteButton");
3700                    const searchButton = event.target.closest(".recentButton");
3701                
3702                    // 최근검색조건 삭제 이벤트
3703                    if (deleteButton) {
3704                        event.stopPropagation();
3705                        searchFilterManager.deleteRecentSearch(deleteButton);
3706                        return;
3707                    }
3708                
3709                    // 최근검색조건 이동 이벤트
3710                    if (searchButton) {
3711                        searchFilterManager.submitRecentSearch(searchButton);
3712                    }
3713                });
3714            }
3715            
3716            function onError(){}
3717        },
3718        //최근검색 개별 삭제
3719        deleteRecentSearch: function(el){
3720            const campSearchSeq = el.dataset.seq;
3721        
3722            $.ajax({
3723                type: "POST",
3724                url: "/search/ax_delete_recent_search.hbb",
3725                data: { delete_type: "ONE", camp_search_seq: campSearchSeq },
3726                success: function (response) {
3727                    const element = document.querySelector(`[data-value="${campSearchSeq}"]`);
3728                    if (element) {
3729                      element.remove();
3730                    }
3731                },
3732                error: function () {
3733                    
3734                }
3735            });
3736        },
3737        //최근검색 전체 삭제
3738        deleteALLRecentSearch: function(){
3739            $.ajax({
3740                type: "POST",
3741                url: "/search/ax_delete_recent_search.hbb",
3742                data: { delete_type: "ALL" },
3743                success: function (response) {
3744                    const element = document.getElementById("recentContent");
3745                    if (element) {
3746                        element.innerHTML = `<li class="swiper-slide" style="width: 100%"><div class="box" style="justify-content: center">조회된 내역이 없습니다.</div></li>`;
3747                    }
3748                },
3749                error: function () {
3750                    
3751                }
3752            });
3753        },
3754        //최근검색 클릭 이벤트
3755        submitRecentSearch: function(el){
3756            popSearchManager.close();
3757            
3758            if(searchFilterManager._searchType == "LIST"){
3759                searchFilterManager._filter.site_type = el.dataset.sitetp.split(",")
3760                searchFilterManager._filter.res_date = el.dataset.resdate
3761                searchFilterManager._filter.res_end_date = el.dataset.resenddate
3762                searchFilterManager._filter.ser_res_date = el.dataset.resdate
3763                searchFilterManager._filter.ser_res_end_date = el.dataset.resenddate
3764                searchFilterManager._filter.region = el.dataset.region
3765                searchFilterManager._filter.sub_region = el.dataset.subregion.split(",")
3766                searchFilterManager._filter.adultCount = el.dataset.adultcount
3767                searchFilterManager._filter.childCount = el.dataset.childcount
3768                
3769                popSearchManager.updateSearchInput();
3770                searchFilterManager.updateRegionPlaceholder();
3771                headFilterManager.isHeadFilterCheck();
3772                DataListManager.fetchData(true);
3773                
3774                return;
3775            }
3776        
3777            // URLSearchParams 객체 생성
3778            const searchParams = new URLSearchParams({
3779                site_tp: el.dataset.sitetp,
3780                res_dt: el.dataset.resdate,
3781                res_edt: el.dataset.resenddate,
3782                region: el.dataset.region,
3783                sub_region: el.dataset.subregion,
3784                ser_adult_count: el.dataset.adultcount,
3785                ser_child_count: el.dataset.childcount,
3786                ser_keyword: ""
3787            });
3788            
3789            window.location.href = `/resv/list.hbb?${searchParams.toString()}`;
3790        },
3791		//리스트 검색하기
3792		submitSearch: function () {
3793		    popSearchManager.close();
3794		    
3795		    if(searchFilterManager._searchType == "COLLECT" || searchFilterManager._searchType == "CAMPCOUPON"){
3796		        searchFilterManager._filter.ser_res_date = searchFilterManager._filter.res_date;
3797                searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date; 
3798                                
3799		        popSearchManager.updateSearchInput();
3800		        CollectManager.fetchDatas(true);
3801		        return;
3802		    }
3803		    
3804		    if(searchFilterManager._searchType == "LIST"){
3805		        const result = searchFilterManager.insertRecentSearch();
3806		        console.log(result);
3807		        
3808		        searchFilterManager._filter.ser_res_date = searchFilterManager._filter.res_date;
3809                searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date; 
3810		    
3811		        popSearchManager.updateSearchInput();
3812				headFilterManager.isHeadFilterCheck();
3813		        DataListManager.fetchData(true);
3814		        
3815                return;
3816            }
3817            
3818            // 최근 검색 내역 등록
3819            const result = searchFilterManager.insertRecentSearch();
3820            console.log(result);
3821
3822			const strSubRegion = searchFilterManager._filter.sub_region.join(",");
3823			const keyword = searchFilterManager._inputFieldEl.value;
3824
3825			// URLSearchParams 객체 생성
3826			const searchParams = new URLSearchParams({
3827				site_tp: searchFilterManager._filter.site_type,
3828				res_dt: searchFilterManager._filter.res_date,
3829				res_edt: searchFilterManager._filter.res_end_date,
3830				region: searchFilterManager._filter.region,
3831				sub_region: strSubRegion,
3832				ser_adult_count: searchFilterManager._filter.adultCount,
3833				ser_child_count: searchFilterManager._filter.childCount,
3834				ser_keyword: keyword
3835			});
3836
3837			// filterManager._selectedFilters가 존재할 경우 URL에 추가
3838			const params = (typeof filterManager !== "undefined" && filterManager._selectedFilters) ? filterManager._selectedFilters : {};
3839
3840			// filterManager._selectedFilters 값이 있으면 추가
3841			Object.keys(params).forEach((key) => {
3842				const value = filterManager._selectedFilters[key];
3843
3844				if (Array.isArray(value) && value.length > 0) {
3845					// 배열이면 쉼표로 구분된 문자열로 변환하여 추가
3846					searchParams.append(key, value.join(","));
3847				} else if (value) {
3848					// 값이 비어있지 않으면 추가
3849					searchParams.append(key, value);
3850				}
3851			});
3852			
3853			// 최종 URL 이동
3854			window.location.href = `/resv/list.hbb?${searchParams.toString()}`;
3855		},
3856		//지도 검색하기
3857		submitMapSearch: function(){
3858		    popSearchManager.close();
3859		    
3860		    const markerCoordinate = searchMapManager.getMarkerCoordinate();
3861            const lat = markerCoordinate.lat();
3862            const lng = markerCoordinate.lng();
3863            const zoom = searchMapManager._MAP.getZoom();
3864
3865		    if(searchFilterManager._searchType == "MAP"){
3866                popSearchManager.updateSearchInput();
3867                
3868                _MAP.setZoom(zoom);
3869                _MAP.setCenter(new naver.maps.LatLng(lat, lng));
3870                DataManager.fetchData(_MAP, true);
3871                return;
3872            }
3873            
3874			const URL= `/search/mapSearch.hbb?zoom=${zoom}&res_dt=${searchFilterManager._filter.res_date}&res_edt=${searchFilterManager._filter.res_end_date}&lat=${lat}&lng=${lng}`;
3875		
3876			// URL 이동
3877			window.location.href = URL;
3878		}
3879	}
3880
3881	/* 달력 관련 함수 */
3882	const searchCalendarManager = {
3883		init: function(){
3884			$.datepicker.setDefaults({
3885				  closeText: "닫기",
3886				  prevText: "이전달",
3887				  nextText: "다음달",
3888				  currentText: "오늘",
3889				  monthNames: ["1월", "2월", "3월", "4월", "5월", "6월","7월", "8월", "9월", "10월", "11월", "12월"],
3890				  monthNamesShort: ["1월", "2월", "3월", "4월", "5월", "6월","7월", "8월", "9월", "10월", "11월", "12월"],
3891				  dayNames: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
3892				  dayNamesShort: ["일", "월", "화", "수", "목", "금", "토"],
3893				  dayNamesMin: ["일", "월", "화", "수", "목", "금", "토"],
3894				  weekHeader: "주",
3895				  dateFormat: "yymmdd",
3896				  firstDay: 0,
3897				  isRTL: false,
3898				  showMonthAfterYear: true,
3899				  yearSuffix: "년",
3900				  defaultDate: searchFilterManager._filter.ser_res_date
3901			})
3902			$(".datepicker-list").datepicker({
3903				minDate: 0,
3904				selectOtherMonths: true,
3905				beforeShowDay: searchCalendarManager.funcBeforeShowDay,
3906				onSelect: function (selected, event) {
3907					var dt = $(this).val();
3908					searchCalendarManager.selectCalendar(dt);	    	
3909				}
3910			});
3911
3912			$(".datepicker-map").datepicker({
3913				minDate: 0,
3914				selectOtherMonths: true,
3915				beforeShowDay: searchCalendarManager.funcBeforeShowDay,
3916				onSelect: function (selected, event) {
3917					var dt = $(this).val();
3918					searchCalendarManager.selectCalendar(dt);	    	
3919				}
3920			});
3921		},
3922		selectCalendar: function(dt){
3923			if(searchFilterManager._filter.res_end_date=="" && searchFilterManager._filter.res_date <= dt) {
3924				//예약불가검색
3925				if(searchFilterManager._filter.res_date < dt) {
3926					var s_dt = searchFilterManager._filter.res_date
3927					var s_days = diff_date(searchFilterManager._filter.res_date, dt)
3928				} else {
3929					var s_dt = dt
3930					var s_days = diff_date(dt,searchFilterManager._filter.res_date)
3931				}
3932
3933				if (s_days > 6) {
3934					action_popup.alert("최대 6박까지 검색이 가능합니다.")
3935					searchFilterManager._filter.res_date = dt
3936					searchFilterManager._filter.res_end_date = ""
3937					searchFilterManager._filter.ser_res_date = dt
3938                    searchFilterManager._filter.ser_res_end_date = ""
3939					searchFilterManager._filter.site_type = ['BB006']
3940					
3941					// 숙소 구분 필터 싱크 맞추기
3942                    searchFilterManager.syncFilters();
3943                    
3944					return
3945				}
3946
3947				searchFilterManager._filter.res_date = s_dt
3948				searchFilterManager._filter.ser_res_date = s_dt
3949				var ndt = new Date(s_dt.substr(0,4),parseInt(s_dt.substr(4,2))-1,parseInt(s_dt.substr(6,2)));
3950				ndt.setDate(ndt.getDate() + s_days);
3951				searchFilterManager._filter.res_end_date = ndt.getFullYear()+''+filldate(ndt.getMonth()+1)+''+filldate(ndt.getDate())
3952				searchFilterManager._filter.ser_res_end_date = searchFilterManager._filter.res_end_date
3953				searchFilterManager._filter.res_day = s_days
3954				if(searchFilterManager._filter.ser_res_date == searchFilterManager._filter.ser_res_end_date){
3955				    searchFilterManager._filter.site_type = ['BB006']
3956				}else{
3957				    searchFilterManager._filter.site_type = []
3958				}
3959				$(".datepicker-list").datepicker({beforeShowDay: searchCalendarManager.funcBeforeShowDay});
3960				$(".datepicker-map").datepicker({beforeShowDay: searchCalendarManager.funcBeforeShowDay});
3961			} else {
3962				searchFilterManager._filter.res_date = dt
3963				searchFilterManager._filter.res_end_date = ""
3964				searchFilterManager._filter.ser_res_date = dt
3965                searchFilterManager._filter.ser_res_end_date = ""
3966				searchFilterManager._filter.site_type = ['BB006']
3967			}
3968
3969			searchFilterManager.syncFilters();
3970            searchFilterManager.isSiteType();
3971			searchFilterManager.updateDatePlaceholder();
3972		},
3973		funcBeforeShowDay: function (date) {
3974            var result = null;
3975            var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
3976            result = [true, ""]; // 기본값은 빈 문자열
3977        
3978            var formattedDate = y + '' + filldate(m + 1) + '' + filldate(d); // 현재 날짜 포맷팅
3979        
3980            // 선택한 날짜가 범위 내에 있을 때 ui-state-active 클래스 추가
3981            if (searchFilterManager._filter.res_date <= formattedDate && searchFilterManager._filter.res_end_date >= formattedDate) {
3982                if(searchFilterManager._filter.res_date == searchFilterManager._filter.res_end_date){
3983                    result = [true, "ui-state-active"];
3984                }else{
3985                    if(searchFilterManager._filter.res_date == formattedDate){
3986                        result = [true, "ui-state-active left"];
3987                    }else if(searchFilterManager._filter.res_end_date == formattedDate){
3988                        result = [true, "ui-state-active right"];
3989                    }else{
3990                        result = [true, "ui-state-active-a"];
3991                    }
3992                }
3993                
3994            }
3995            // 그 외에는 기본값으로 빈 문자열을 반환
3996            else {
3997                result = [true, ""];
3998            }
3999        
4000            return result;
4001        },
4002	}
4003
4004	// 네이버 지도 관련
4005    const searchMapManager = {
4006		_LAT: null,
4007		_LNG: null,
4008		_MAP: null,
4009		init: function() {
4010			// 대체 좌표
4011			this._LAT = 37.82883056;
4012			this._LNG = 127.5117778;
4013			this.createMap(searchMapManager._LAT, searchMapManager._LNG);
4014			
4015			if(app_yn=='Y') {
4016			    if(app_os=='android'){
4017			        window.Android.getGpsLocation();
4018			    }
4019                if(app_os=='ios'){
4020                    goIosAp('getGpsLocation');
4021                }
4022            }else{
4023                if (navigator.geolocation) {
4024                    navigator.geolocation.getCurrentPosition(searchMapManager.locationSuccess.bind(this), searchMapManager.locationError.bind(this));
4025                } else {
4026                    this.locationError("이 브라우저는 Geolocation을 지원하지 않습니다.");
4027                }
4028            }
4029		
4030		},
4031		locationSuccess: function(position) {
4032			this._LAT = position.coords.latitude;
4033			this._LNG = position.coords.longitude;
4034			searchMapManager.createMap(searchMapManager._LAT, searchMapManager._LNG);
4035		},
4036		locationError: function(error) {
4037			switch(error.code) {
4038				case error.PERMISSION_DENIED:
4039					console.log("사용자가 위치 정보 요청을 거부했습니다.");
4040					break;
4041				case error.POSITION_UNAVAILABLE:
4042					console.log("위치 정보를 사용할 수 없습니다.");
4043					break;
4044				case error.TIMEOUT:
4045					console.log("위치 정보 요청이 시간 초과되었습니다.");
4046					break;
4047				case error.UNKNOWN_ERROR:
4048					console.log("알 수 없는 오류가 발생했습니다.");
4049					break;
4050			}
4051		},
4052        createMap: function(lat, lng) {
4053            const mapOptions = {
4054                center: new naver.maps.LatLng(lat, lng),
4055                zoom: 10
4056            };
4057
4058            this._MAP = new naver.maps.Map("search_map", mapOptions);
4059        },
4060		getMarkerCoordinate: function(){
4061			return this._MAP.getCenter();
4062		}
4063    };
4064    
4065    // 앱 함수
4066    function getLocation(data) {
4067		console.log("===== 앱 호출 =====");
4068		// 검색 데이터
4069		const serLat = parseFloat("");
4070        const serLng = parseFloat("");
4071
4072		// data를 ','로 분리하여 변수에 저장
4073		let [lat, lng] = data.split(',').map(Number);
4074
4075		// 값 설정
4076		searchMapManager._LAT = lat;
4077		searchMapManager._LNG = lng;
4078		
4079		if(searchMapManager._MAP == null){
4080		    searchMapManager.createMap(searchMapManager._LAT, searchMapManager._LNG);
4081		}
4082
4083		if (typeof _LAT !== "undefined" && typeof _LNG !== "undefined") {
4084		    _myLat = lat;
4085		    _myLng = lng;
4086		    
4087			_LAT = _myLat;
4088			_LNG = _myLng;
4089			
4090			if(_MAP == null){
4091			    if(!isNaN(serLat) || !isNaN(serLng)){
4092                    MapManager.init(serLat, serLng);
4093                    return;
4094                }
4095                
4096                MapManager.init(_LAT, _LNG);
4097			}
4098		}
4099	}
4100
4101
4102	// 초기화 코드
4103	$(document).ready(function () {
4104		// 팝업 관련 이벤트
4105		popSearchManager.init();
4106		// 탭 관련 이벤트
4107		tabManager.init();
4108		// 스와이퍼 관련 이벤트
4109		swiperManager.init();
4110		// 검색 관련 이벤트
4111		searchFilterManager.init();
4112		// 달력 관련 이벤트
4113		searchCalendarManager.init();
4114	});
4115</script>
4115
4116
4117        </div><!-- //wrap_in -->
4118       
4119    </div> <!--// wrap -->
4120<input type="hidden" name="festa_yn" value="Y">
4121</form>
4122</body>
4123<script>
4124	const mem_grade = "0";
4125	const enter_path = "";
4126</script>
4126
4127<script src="/js/search_list.js?version=20260914-1"></script>
4127
4128<script>
4129$(window).scroll(function(){
4130    if($("#wrap").css("display") != "none") {
4131        sc_top = Math.ceil($(window).scrollTop())
4132        sc_hei = Math.ceil($(document).height() - $(window).height())
4133        //$(".head_in").html(sc_hei + "/" + sc_top)
4134        if(sc_hei - 150 < sc_top && !DataListManager._isPending) {
4135            DataListManager.goResSerNext()
4136        }
4137    }
4138});
4139
4140document.addEventListener("DOMContentLoaded", function() {
4141    // 필터 순서 정렬 이벤트
4142    filterManager.sortSelect(() => DataListManager.fetchData(true));
4143
4144    // 데이터 조회 이벤트
4145    DataListManager.init();
4146
4147    // 태그 검색하기 버튼 이벤트
4148    filterManager.createTagClickEvent(()=>{
4149        filterManager._selectedFilters.page = 0;
4150        DataListManager.fetchData(true);
4151    });
4152
4153    // 필터 검색하기 버튼 이벤트
4154    filterManager.updateEmptyState();
4155    document.getElementById("searchSubmitButton").addEventListener('click', function(){
4156        filterManager.close();
4157        filterManager._selectedFilters.page = 0;
4158        DataListManager.fetchData(true);
4159    })
4160
4161    // 예약가능 버튼 이벤트
4162    document.getElementById("empty_y").addEventListener('click', function(){
4163        filterManager._selectedFilters.page = 0;
4164        filterManager.toggleEmpty();
4165        DataListManager.fetchData(true);
4166    })
4167
4168    // 뷰 타입 버튼 이벤트
4169    document.addEventListener("click", function (event) {
4170        const selViewBtn = document.querySelector(".sel_view img");
4171        const galleryView = DataListManager._viewType;
4172
4173        // `.sel_view` 버튼 클릭 시 실행
4174        if (event.target.closest(".sel_view")) {
4175            if (galleryView == "PIC") {
4176                DataListManager._viewType = "LIST";
4177                selViewBtn.src = "../images/thumb-pic.png";
4178                selViewBtn.alt = "갤러리형으로 보기";
4179                document.getElementById("DivResvList").classList.add("view_type_info");
4180                document.getElementById("DivResvPrList").classList.add("view_type_info");
4181            } else {
4182                DataListManager._viewType = "PIC";
4183                selViewBtn.src = "../images/thumb.png";
4184                selViewBtn.alt = "리스트로 보기";
4185                document.getElementById("DivResvList").classList.remove("view_type_info");
4186                document.getElementById("DivResvPrList").classList.remove("view_type_info");
4187            }
4188        }
4189    });
4190
4191    // 찜 버튼
4192    document.getElementById("DivResvList").addEventListener("click", function (event) {
4193        if (event.target.classList.contains("btn_zzim")) {
4194            event.preventDefault();
4195            event.stopPropagation();
4196
4197            const memseq = "";
4198            const $zzimEl = $(event.target);
4199            const campseq = $zzimEl.data("value");
4200
4201            if(memseq == ""){
4202                action_popup.alert('로그인후 이용해 주세요.');
4203                return;
4204            }
4205
4206            chgFavor($zzimEl,campseq,1)
4207        }
4208    });
4209
4210    // 신기능 안내 말풍선
4211    document.getElementById("viewInfoBox").classList.add("active");
4212    setTimeout(() => {
4213        viewInfoBox.classList.remove("active");
4214    }, 5000);
4215});
4216
4217</script>
4217
4218</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.