PageSourceSearch

https://sell.chutcha.net/js/common/common_v2.js?t=20260924_v_1

js chutcha.net collected 2026-09-24 13:22:44 UTC 28,247 bytes, 856 lines download raw bytes

1// 자주쓰는 변수
2// 프로토콜
3var URL_PROTOCOL = $(location).attr("protocol");
4// 현재 도메인
5var URL_URI = $(location).attr("hostname");
6// 도메인 뒤의 경로
7var URL_PATHNAME  = $(location).attr('pathname');
8
9// 쿠키 굽기
10function setCookie(name, value, expiredays) {
11	var date = new Date();
12  date.setTime(date.getTime() + (expiredays * 24 * 60 * 60 * 1000));
13  var expires = date.toGMTString();
14	document.cookie = name + "=" + escape(value) + "; path=/; expires=" + expires + ";"
15}
16
17// 쿠키 읽기
18function getCookie(cName) {
19    cName = cName + '=';
20    var cookieData = document.cookie;
21    var start = cookieData.indexOf(cName);
22    var cValue = '';
23    if(start != -1){
24        start += cName.length;
25        var end = cookieData.indexOf(';', start);
26        if(end == -1)end = cookieData.length;
27        cValue = cookieData.substring(start, end);
28    }
29    return unescape(cValue);
30}
31
32// get 파라미터 가져오기
33function getParameterByName(name) {
34    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
35    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
36    var results = regex.exec(location.search);
37    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
38}
39
40/* 이메일 유효성 검사 함수 */
41function email_validator(email_data,email_data2){
42	var oEmailRegexp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/
43	var sMail = email_data + '@' + email_data2;
44	return oEmailRegexp.test(sMail);
45}
46
47/* 이메일 유효성 검사 함수 */
48function email_validator_div(email_data){
49	var oEmailRegexp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/
50	var sMail = email_data;
51	return oEmailRegexp.test(sMail);
52}
53
54// 숫자 콤마제거
55function removeCommas(x){
56	return x.replace(/[^0-9]/g,'');
57}
58
59// 숫자 1000자리마다 콤마 붙이기
60function numberWithCommas(val,rc) {
61	// val += ""; // Str 형이어야만 가능하므로 형변환하기
62	// return Number(val.replace(/,/gi,'')).toLocaleString('en');
63	if(rc == true){
64		val = removeCommas(val);// 기존 콤마 제거
65	}
66	str = "" + val + "";
67	var retValue = "";
68	for ( i = 0; i < str.length; i++) {
69		if (i > 0 && (i % 3) == 0) {
70			retValue = str.charAt(str.length - i - 1) + "," + retValue;
71		} else {
72			retValue = str.charAt(str.length - i - 1) + retValue;
73		}
74	}
75	return retValue;
76}
77
78// 글자수 체크 후 정해진 글자수 넘으면 경고창 띄우면서 제거
79function chk_letters(chk_element,chk_num,limit_num){
80	// 키입력시 체크
81	$(document).on('keyup keydown paste',chk_element, function() {
82		var content = $(this).val();
83		var cont_leng = content.length;
84		if(cont_leng > limit_num){
85			$(this).val(content.substr(0, limit_num));
86			alert("최대 "+limit_num+"자 까지 입력가능 합니다.\n글자수를 초과한 부분은 자동으로 지워집니다.");
87		}
88		content = $(this).val();
89		cont_leng = content.length;
90		$(chk_num).html(cont_leng);
91	});
92
93	// 포커스 잃을 때 한 번 더 체크
94	$(document).blur("blur",chk_element,function() {
95		var content = $(this).val();
96		var cont_leng = content.length;
97		if(cont_leng > limit_num){
98			$(this).val(content.substr(0, limit_num));
99			alert("최대 "+limit_num+"자 까지 입력가능 합니다.\n글자수를 초과한 부분은 자동으로 지워집니다.");
100        }
101		content = $(this).val();
102		cont_leng = content.length;
103		$(chk_num).html(cont_leng);
104	});
105
106	if($(chk_element).val() !== undefined){
107		var content = $(chk_element).val();
108		var cont_leng = content.length;
109		if(cont_leng > limit_num){
110			$(chk_element).val(content.substr(0, limit_num));
111			alert("최대 "+limit_num+"자 까지 입력가능 합니다.\n글자수를 초과한 부분은 자동으로 지워집니다.");
112		}
113		content = $(chk_element).val();
114		cont_leng = content.length;
115		$(chk_num).html(cont_leng);
116	}
117
118}
119
120
121// 한글입력방지
122function hangul_disable(obj){
123	//좌우 방향키, 백스페이스, 딜리트, 탭키에 대한 예외
124	//if(event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 ) return;
125	return obj = obj.replace(/[\ㄱ-ㅎㅏ-ㅣ가-힣]/g, '');
126}
127
128// 비밀번호 유효성 검사 (영문 숫자 조합 6~15자)
129function passwd_chk(obj){
130	var chk_num = new Array();
131	var chk_char = new Array();
132	chk_num = obj.match(/[0-9]/g);
133	chk_char = obj.match(/[a-z]/ig);
134	if(chk_num != null && chk_char != null && chk_num.length > 0 && chk_char.length > 0 && obj.length > 5 && obj.length < 16){
135		return true;
136	}else{
137		return false;
138	}
139}
140
141// 이메일 중복 검사
142function email_dup_chk(user_email){
143	var dup_flag = false;
144
145	$.ajax({
146		type : 'POST',
147		url			: '/login/dup_email_chk',
148		dataType : 'json',
149		async		: false,
150		data		: {
151			'user_email':user_email,
152		},
153		success 	:function(data){
154			if(data.code === 200){
155				dup_flag = true;
156			}
157		}
158	});
159
160	return dup_flag;
161}
162
163// 닉네임 중복 검사
164function nick_dup_chk(user_name){
165	var dup_flag = false;
166
167	$.ajax({
168		type : 'POST',
169		url			: '/login/dup_nick_chk',
170		dataType : 'json',
171		async		: false,
172		data		: {
173			'user_name':user_name,
174		},
175		success 	:function(data){
176			if(data.code === 200){
177				dup_flag = true;
178			}else if(data.code === 500){
179				dup_flag = data.msg;
180			}
181		}
182	});
183
184	return dup_flag;
185}
186
187//휴대전화번호 입력시 자동으로 하이픈 넣기
188function auto_hypen(str) {
189	var RegNotNum = /[^0-9]/g;
190	var RegPhonNum = "";
191	var DataForm = "";
192
193	// return blank
194	if (str == "" || str == null)
195		return "";
196
197	// delete not number
198	str = str.replace(RegNotNum, '');
199
200	/* 4자리 이하일 경우 아무런 액션도 취하지 않음. */
201	if (str.length < 4)
202		return str;
203	/* 지역번호 02일 경우 10자리 이상입력 못하도록 제어함. */
204	if (str.substring(0, 2) == "02" && str.length > 10) {
205		str = str.substring(0, 10);
206	}
207	if (str.length > 3 && str.length < 7) {
208		if (str.substring(0, 2) == "02") {
209			DataForm = "$1-$2";
210			RegPhonNum = /([0-9]{2})([0-9]+)/;
211		} else {
212			DataForm = "$1-$2";
213			RegPhonNum = /([0-9]{3})([0-9]+)/;
214		}
215	} else if (str.length == 7) {
216		if (str.substring(0, 2) == "02") {
217			DataForm = "$1-$2-$3";
218			RegPhonNum = /([0-9]{2})([0-9]{3})([0-9]+)/;
219		} else {
220			DataForm = "$1-$2";
221			RegPhonNum = /([0-9]{3})([0-9]{4})/;
222		}
223	} else if (str.length == 8) {
224		DataForm = "$1-$2";
225		RegPhonNum = /([0-9]{4})([0-9]{4})/;
226	} else if (str.length == 9) {
227		if (str.substring(0, 2) == "02") {
228			DataForm = "$1-$2-$3";
229			RegPhonNum = /([0-9]{2})([0-9]{3})([0-9]+)/;
230		} else {
231			DataForm = "$1-$2-$3";
232			RegPhonNum = /([0-9]{3})([0-9]{3})([0-9]+)/;
233		}
234	} else if (str.length == 10) {
235		if (str.substring(0, 2) == "02") {
236			DataForm = "$1-$2-$3";
237			RegPhonNum = /([0-9]{2})([0-9]{4})([0-9]+)/;
238		} else {
239			DataForm = "$1-$2-$3";
240			RegPhonNum = /([0-9]{3})([0-9]{3})([0-9]+)/;
241		}
242	} else if (str.length == 11) {
243		if (str.substring(0, 2) == "02") {
244			DataForm = "$1-$2-$3";
245			RegPhonNum = /([0-9]{2})([0-9]{4})([0-9]+)/;
246		} else if(str.substring(0,3) == "050") {
247      DataForm = "$1-$2-$3";
248			RegPhonNum = /([0-9]{4})([0-9]{3})([0-9]+)/;
249    }else{
250			DataForm = "$1-$2-$3";
251			RegPhonNum = /([0-9]{3})([0-9]{4})([0-9]+)/;
252		}
253	}else if (str.length > 10) {
254		if (str.substring(0, 2) == "02") {
255			DataForm = "$1-$2-$3";
256			RegPhonNum = /([0-9]{2})([0-9]{4})([0-9]+)/;
257		} else if(str.substring(0,3) == "050") {
258      DataForm = "$1-$2-$3";
259			RegPhonNum = /([0-9]{4})([0-9]{4})([0-9]+)/;
260    }else{
261			DataForm = "$1-$2-$3";
262			RegPhonNum = /([0-9]{3})([0-9]{4})([0-9]+)/;
263		}
264	} else {
265		if (str.substring(0, 2) == "02") {
266			DataForm = "$1-$2-$3";
267			RegPhonNum = /([0-9]{2})([0-9]{3})([0-9]+)/;
268		} else {
269			DataForm = "$1-$2-$3";
270			RegPhonNum = /([0-9]{3})([0-9]{3})([0-9]+)/;
271		}
272	}
273
274	while (RegPhonNum.test(str)) {
275		str = str.replace(RegPhonNum, DataForm);
276	}
277	return str;
278
279}
280
281/*//////////////////////////// SMS 인증 시작 ///////////////////////*/
282var _is_sendSms = false;
283var _SMS_MAX_LIMIT_SEC = 180;
284var _SMS_iLimitTime = _SMS_MAX_LIMIT_SEC;
285var _SMS_oInterval = null;
286var _bIsPhoneChecked = false;
287var _is_reSendCnt = 0;
288
289// sms 인증문자 전송후 시간처리
290function set_smsAuthTime(value){
291	if (!send_sms(value)){ return; };
292
293	// 모든 것을 초기화한다.
294	if (_SMS_oInterval != null) {
295		clearInterval(_SMS_oInterval);
296		_SMS_oInterval = null;
297		_SMS_iLimitTime = _SMS_MAX_LIMIT_SEC;
298	}
299
300	_SMS_oInterval = setInterval(decrement_time, 1000);
301	$('#phone_auth_btn').text('재전송');
302	//$('.phone_auth_key').show();
303	$('#phone_limit_time').show();
304}
305
306// 인증번호 문자발송하기
307function send_sms(value)
308{
309	var ret = false;
310	// 문자 보내기
311	$.ajax({
312		url : "/lib/send_chk_sms",
313		async : false,
314		type : "POST",
315		data : {
316			"phone" : value
317		},
318		dataType : 'json',
319		success : function(data) {
320			if (data == 0){
321				alert('이미 등록된 휴대폰 번호입니다.');
322			}else if(data == 1){
323                $('#phone_auth_num').prop('readonly', true);
324                $(".input_final #phone_auth_num").attr("readonly",false);
325                $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
326                $('#basic_modal .inner_wrap .modal_msg').html('인증번호가 발송되었습니다.'); //모달 문구 변경
327                $("#basic_modal").modal({ // 모달 open
328                    escapeClose: false,
329                    clickClose: false,
330                    showClose: false
331                });
332				$("#phone_auth_key_btn").addClass("on");
333				$('#phone_auth_btn').addClass('on');
334				// 2019.02.25 added by june: 인증번호 입력란 보여주기 start
335				$('#regcar_auth_number').show();
336				$('#regcar_change_phone').addClass("regmem");
337                //$('#regcar_change_phone').show();
338				$('#phone_auth_num_area').show();
339				// 2019.02.25 added by june: 인증번호 입력란 보여주기 end
340				_is_sendSms = true;
341				ret = true;
342			}else if( data == -1){
343				alert('메세지 발송오류! 재시도 해주세요!');
344			}
345		}
346	});
347	return ret;
348}
349
350/* 정수형 숫자(초 단위)를 "시:분:초" 형태로 표현하는 함수 */
351function toHourMinSec(t){
352	var hour;
353	var min;
354	var sec;
355
356	// 정수로부터 남은 시, 분, 초 단위 계산
357	hour = Math.floor(t / 3600);
358	min = Math.floor((t - (hour * 3600)) / 60);
359	sec = t - (hour * 3600) - (min * 60);
360
361	// hh:mm:ss 형태를 유지하기 위해 한자리 수일 때 0 추가
362	if (hour < 10)
363		hour = "0" + hour;
364	if (min < 10)
365		min = "0" + min;
366	if (sec < 10)
367		sec = "0" + sec;
368
369	//2분 59초
370	return (min + ":" + sec);
371}
372
373// 시간을 1초씩 내린다.
374function decrement_time(){
375	var html_data = toHourMinSec(_SMS_iLimitTime);
376
377	if ($('#phone_auth_key').length == 1) {
378		if(html_data == "00:00"){
379            $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
380            $('#basic_modal .inner_wrap .modal_msg').html('인증시간을 초과하였습니다.<br />재전송을 진행해주세요.'); //모달 문구 변경
381            $("#basic_modal").modal({ // 모달 open
382                escapeClose: false,
383                clickClose: false,
384                showClose: false
385            });
386            $("#phone_auth_num_area").hide();
387		}else{
388            $('#phone_auth_key').attr('placeholder','인증번호 입력 ('+html_data+')');
389		}
390
391
392	}
393
394	if(html_data == "00분 00초"){
395		html_data = "인증시간이 지났습니다. 다시 시도하십시오.";
396		$("#phone_auth_key_btn").removeAttr("style");
397	}else{
398		html_data = "인증번호 입력 시간이 "+html_data+" 남았습니다.";
399	}
400
401
402	if($('#phone_limit_time').css("display") == "none"){
403		$('#phone_limit_time').html("");
404	}else{
405		$('#phone_limit_time').html(html_data);
406	}
407
408
409	if (_SMS_iLimitTime > 0) {
410		_SMS_iLimitTime --;
411		return;
412	}
413
414	// 시간이 다됐을 경우 interval을 멈춘다.
415	clearInterval(_SMS_oInterval);
416
417	// 시간이 만료되면 임의 키 삭제처리
418	$.ajax({
419		url : "/lib/init_phone_key",
420		async : false,
421		type : "POST",
422		data : {
423			"init" : true
424		},
425		dataType : 'json',
426		success : function(data) {}
427	});
428
429}
430
431// 휴대폰 인증번호 발송
432$(document).on('click','#phone_auth_btn',function(){
433	if (_is_reSendCnt > 4){
434		alert('인증에 실패하였습니다.');return;
435	}
436
437	if (_bIsPhoneChecked){
438		alert('이미 인증되었습니다.');return;
439	}
440
441	var value = $('#phone_auth_num').val();
442	if (value.length == 0){
443		alert('번호를 모두 입력해주세요.');return;
444	}
445
446	var sPhoneRegExp = /^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/;
447	if (sPhoneRegExp.test(value) === false) {
448		alert('휴대폰 형식으로 입력해주세요.');return;
449		return;
450	}
451
452	_bIsPhoneChecked = false;
453	set_smsAuthTime(value);
454
455	_is_reSendCnt = _is_reSendCnt+1;
456
457});
458
459// 휴대폰 인증번호 확인
460$(document).on('click','#phone_auth_key_btn',function(){
461	if (!_is_sendSms){
462        $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
463        $('#basic_modal .inner_wrap .modal_msg').html('인증번호 전송 이력이 없거나<br />인증시간을 초과하였습니다.<br />재전송을 진행해주세요.'); //모달 문구 변경
464        $("#basic_modal").modal({ // 모달 open
465            escapeClose: false,
466            clickClose: false,
467            showClose: false
468        });return;
469	}
470
471	if (_SMS_iLimitTime == 0){
472		_is_sendSms = false;
473        $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
474        $('#basic_modal .inner_wrap .modal_msg').html('인증시간을 초과하였습니다.<br />재전송을 진행해주세요.'); //모달 문구 변경
475        $("#basic_modal").modal({ // 모달 open
476            escapeClose: false,
477            clickClose: false,
478            showClose: false
479        });
480        return;
481	}
482
483	var value = $('#phone_auth_key').val();
484	if (value.length != 6){
485        $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
486        $('#basic_modal .inner_wrap .modal_msg').html('정확한 인증번호를<br />입력해주세요.'); //모달 문구 변경
487        $("#basic_modal").modal({ // 모달 open
488            escapeClose: false,
489            clickClose: false,
490            showClose: false
491        });return;
492	}
493
494	// 인증번호 확인하기
495	$.ajax({
496		url : "/lib/confirm_phone_key",
497		async : false,
498		type : "POST",
499		data : {
500			"iAuthUserNum" : value
501		},
502		dataType : 'json',
503		success : function(data) {
504			if (data.code == 200){
505				_bIsPhoneChecked = true;
506				$("#bIsPhoneChecked").val("auth");
507				$('#bIsPhoneChecked').trigger('change');
508				clearInterval(_SMS_oInterval);
509				$('#phone_auth_btn').text('완료');
510				$('#phone_auth_btn').removeClass("on");
511				$('#phone_auth_num').attr('readonly',true);
512				//$('.phone_auth_key').css("display","none");
513        		$('#phone_limit_time').css("display","none");
514				$("#phone_auth_key_btn").attr("disabled",true);
515				$("#phone_auth_key_btn").removeClass("on");
516				$('#regcar_change_phone').removeClass('on'); // 전화번호가 변경되셨나요?
517				$('#regcar_auth_number').hide();  // 인증번호 입력란 hide
518				// 19.04.17 modified by june
519				$('#phone_auth_num_area').hide(); // 인증번호 입력란 hide
520
521                $('.input_final #phone_auth_btn').hide();
522                $('.input_final #phone_auth_num').attr('readonly',false);
523                $('.input_final #phone_auth_btn').text('인증');
524                $('#temp_save_phone_num').val($('#phone_auth_num').val());
525				validateRegister();
526                $('#basic_modal .inner_wrap .modal_title').text(''); //모달 문구 변경
527                $('#basic_modal .inner_wrap .modal_msg').html(data.msg); //모달 문구 변경
528                $("#basic_modal").modal({ // 모달 open
529                    escapeClose: false,
530                    clickClose: false,
531                    showClose: false
532                });return;
533			}else if(data.code == 404){
534				alert(data.msg);
535				_is_sendSms = false;
536			}else if( data.code == 500){
537				alert(data.msg);
538			}
539		}
540	});
541});
542/*//////////////////////////// SMS 인증 종료 ///////////////////////*/
543
544
545// 이미지 업로드시 미리보기, 단일 파일
546function img_upload_preview(ee,ele_path){
547	if (ee.currentTarget.files && ee.currentTarget.files[0]) {
548		var reader = new FileReader();
549		reader.onload = function (e) {
550			$(ele_path).attr('src', e.target.result);
551		}
552
553		reader.readAsDataURL(ee.currentTarget.files[0]);
554	}
555}
556
557// 로그인 후 리퍼러에 따른 페이지 이동
558function login_ref_href(refer){
559	// 로그인 정상이면 로그인전 페이지로 이동
560	if(refer){
561		// 리퍼러가 있으면 리퍼러로 이동
562		// 리퍼러 주소 확인해서 일정 주소는 메인으로 바로 이동
563		var url_val = $(location).attr('protocol')+"//"+$(location).attr('host');
564		if(refer == url_val+"/login/join_complete" || refer == url_val+"/login/privacy_modify_complete" || refer == url_val+"/login/join_social_complete" || refer == url_val+"/login/"){
565			location.href = '/';
566		}else{
567			location.href=refer+"?lf=y";
568		}
569	}else{
570		// 리퍼러가 없으면 메인페이지로 이동
571		location.href='/';
572	}
573	return false;
574}
575
576
577// 로그인 인증 세션키 생성
578function login_session_key_gen(){
579	var return_val = "";
580	$.ajax({
581		type : 'POST',
582		url			: '/login/login_session_key_gen',
583		dataType : 'text',
584		async		: false,
585		success :function(data){
586			return return_val = data;
587		}
588	});
589	return return_val;
590}
591
592
593// 차량번호 유효성체크
594function numberPlateValidation(ts)
595{
596    var regex1 = "^\\d{2,3}[가|나|다|라|마|거|너|더|러|머|버|서|어|저|고|노|도|로|모|보|소|오|조|구|누|두|루|무|부|수|우|주|바|사|아|자|허|배|호|하\\x20]\\d{4}/*$";
597    var regex2 = "^[서울|부산|대구|인천|대전|광주|울산|제주|경기|강원|충남|전남|전북|경남|경북|세종]{2}\\d{2,3}[가|나|다|라|마|거|너|더|러|머|버|서|어|저|고|노|도|로|모|보|소|오|조|구|누|두|루|무|부|수|우|주|바|사|아|자|허|배|호|하\\x20]\\d{4}$";
598
599    var car_number = ts;
600    var is_match1 = car_number.match(regex1);
601	// console.log(is_match1);
602    var is_match2 = car_number.match(regex2);
603	// console.log(is_match2);
604
605    var return_val = new Array(is_match1,is_match2);
606    return return_val;
607
608}
609
610// document ready start
611$(document).ready(function(){
612    //숫자만 입력가능하게
613	$(document).on("keydown keypress keyup focus",".only_number",function (event) {		
614		if (!((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105) || event.which == 8 || event.which == 9 || event.which == 46 || event.which == 37 || event.which == 39 || event.which == 190)){
615            // 숫자만 입력받기 숫자가 아닐경우 입력 취소
616            event.preventDefault();
617        }
618		if(this.value.length > 1 && !$(this).hasClass("auto_hypen")){
619			this.value = this.value.replace(/(^0+)/, "");
620		}
621		$(this).val(this.value.replace(/[^0-9]/g,''));
622    });
623
624    //탭으로 넘어온게 아니라면 정규식으로 숫자로 변환
625    $('.only_number').not('.withoutcomma').blur(function (event) {
626        if( this.value!='' || this.value!=0 ) {
627            this.value = numberWithCommas(this.value);
628            if($(this).hasClass("withkm")){
629                this.value = this.value+' km';
630            }
631        }
632    });
633
634    //숫자만(소수점포함) 입력가능하게
635    $(document).on("keydown",".only_number_dec",function (event) {
636        if (!((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105) || event.which == 8 || event.which == 9 || event.which == 46 || event.which == 37 || event.which == 39 || event.which == 190)){
637            // 숫자만 입력받기 숫자가 아닐경우 입력 취소
638            event.preventDefault();
639        }
640    });
641
642    $(document).on("keyup focus",".only_number_dec",function (event) {
643        if (!((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105) || event.which == 8 || event.which == 9 || event.which == 46 || event.which == 37 || event.which == 39 || event.which == 190)){
644            this.value = this.value.replace(/[^-\.0-9]/g,'');
645        }
646    });
647
648    //탭으로 넘어온게 아니라면 정규식으로 숫자로 변환
649    $('.only_number_dec').not('.withoutcomma').blur(function (event) {
650        if( this.value!='' || this.value!=0 ) {
651            this.value = numberWithCommas(this.value);
652        }
653    });
654
655    // 전화번호 입력시 자동으로 하이픈 입력(숫자만 입력가능)
656    $(document).on("keydown",".auto_phone_hypen",function (event) {
657        if (!((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105) || event.which == 8 || event.which == 9 || event.which == 46 || event.which == 37 || event.which == 39)){
658            // 숫자만 입력받기 숫자가 아닐경우 입력 취소
659            event.preventDefault();
660        }
661        $(this).val(auto_hypen($(this).val()));
662    });
663
664    $(document).on("keyup focus",".auto_phone_hypen",function (event) {
665        $(this).val(auto_hypen($(this).val()));
666    });
667
668    // 상단고정 헤더가 있을 경우 헤더 높이만큼 여백생성
669    $("html").css({
670        "padding-top":$(".sub_common_header.fixed_header").outerHeight(),
671        "min-height":"calc(100vh - "+$(".sub_common_header.fixed_header").outerHeight()+"px)"
672    });
673
674	bg_extend();
675});
676// document ready end
677
678function bg_extend(){
679	$(".bg_extend").removeAttr("style");
680	if($(".site_wrap").outerHeight() < $("html").height()){
681		var extend_color = "#f8f9fa";
682		if($(".bg_extend").hasClass("white")){
683			extend_color = "#fff";
684		}
685		$(".bg_extend").css({
686			"height":$("html").height() - $(".site_wrap").outerHeight(),
687			"background":extend_color
688		});
689	}
690}
691
692
693// 기본 모달 동작
694$(document).on("click","#basic_modal .close_btn",function(){
695	$("#basic_modal").attr("class","modal");
696    $.modal.close();
697});
698
699$(document).on("click", "#confirm_modal .cancel_btn", function () {
700	$("#confirm_modal").attr("class","modal");
701    $.modal.close();
702});
703
704$(document).on("click",".app_down_modal_btn",function(){
705	// 어떤 위치의 버튼인지 여부
706	var this_loc = $(this).attr("data-btn_loca");
707
708	$modal = $("#app_down_modal");
709
710	// 모달에 클래스 추가
711	if(this.dataset?.modal_add_class) {
712		$modal.addClass(this.dataset?.modal_add_class);
713	}
714
715	// $modal.find('p').html('지금 바로 첫차 앱을 다운 받고 더 편리하고<br>다양한 첫차옥션 서비스를 이용하세요!');
716	$modal.find('h1').html('잠깐! 이 서비스는<br />첫차 앱에서 이용하실 수 있어요.');
717
718	// if(this_loc == "setting_btn"){
719	// 	$("#app_down_modal").addClass("setting_btn_modal");
720	//     $modal.find('h1').html('<span>계정 설정</span>은 첫차 앱에서<br>확인, 설정 가능합니다.');
721	// }else if(this_loc == "add_car_btn"){
722	// 	$("#app_down_modal").addClass("add_car_btn_modal");
723	//     $modal.find('h1').html('<span>차량 추가</span>는 첫차 앱에서<br>추가하실 수 있습니다.');
724	// }else if(this_loc == "regcar_modify_btn"){
725	// 	$("#app_down_modal").addClass("regcar_modify_btn_modal");
726	//     $modal.find('h1').html('<span>차량 정보 수정</span>은 첫차 앱에서<br>가능합니다.');
727	// }else if(this_loc == "btn_req_qna"){
728	// 	$("#app_down_modal").addClass("btn_req_qna_modal");
729	//     $modal.find('h1').html('<span>고객센터 문의</span>는 첫차 앱에서<br>가능합니다.');
730	// }else if(this_loc == "btn_img_detail"){
731	// 	$("#app_down_modal").addClass("btn_img_detail_modal");
732	//     $modal.find('h1').html('<span>사진 상세보기</span>는 첫차 앱에서<br>이용하실 수 있습니다.');
733	// }else if(this_loc == "btn_dealer_detail_btn"){
734	// 	$("#app_down_modal").addClass("btn_dealer_detail_modal");
735	//     $modal.find('h1').html('<span>딜러 정보 확인</span>은 첫차 앱에서<br>이용하실 수 있습니다.');
736	// }else if(this_loc == "dealer_review_cnt"){
737	// 	$("#app_down_modal").addClass("btn_dealer_detail_modal");
738	//     $modal.find('h1').html('<span>딜러 정보 확인</span>은 첫차 앱에서<br>이용하실 수 있습니다.');
739	// }else if(this_loc == "btn_dealer_hugi_btn"){
740	// 	$("#app_down_modal").addClass("btn_dealer_hugi_modal");
741	//     $modal.find('h1').html('<span>거래 후기</span>는 첫차 앱에서<br>이용하실 수 있습니다.');
742	// }else if(this_loc == "regcar_register_btn"){ // 재등록하기
743	// 	$("#app_down_modal").addClass("regcar_register_modal");
744	//     $modal.find('h1').html('<span>차량 재등록</span>은 첫차 앱에서<br>이용하실 수 있습니다.');
745	// }else if(this_loc == "regcar_guide_btn"){ // 거래절차 안내
746	// 	$("#app_down_modal").addClass("regcar_step_guide_modal");
747	//     $modal.find('h1').html('<img src="/images/sub/btn_regcar_step_guide_bg.png" alt="">');
748	// }else if(this_loc == "btn_req_find"){
749	// 	$("#app_down_modal").addClass("setting_btn_modal");
750	//     $modal.find('h1').html('<span>아이디/비밀번호 찾기</span>는<br>첫차 앱에서 가능합니다.');
751	// }
752
753
754
755	$modal.modal({showClose: false});
756});
757
758$(document).on("click",".app_download_btn",function(){
759	var os_platform = $(this).attr("data-platform");
760	if(os_platform == "Android"){
761		window.open("https://app.adjust.com/jsr?url=https%3A%2F%2Fhc8a.adj.st%2f%3fadjust_t=tnsnf3q%26adjust_deeplink_js=1%26adjust_deeplink=chutcha%3a%2f%2fgoto%3Ftype%3dsmcmain%26adjust_campaign=smc%26adjust_adgroup=main_middle%26adjust_creative=more_contents");
762	}else if(os_platform == "iOS"){
763		window.open("https://app.adjust.com/jsr?url=https%3A%2F%2Fhc8a.adj.st%2f%3fadjust_t=tnsnf3q%26adjust_deeplink_js=1%26adjust_deeplink=chutcha%3a%2f%2fgoto%3Ftype%3dsmcmain%26adjust_campaign=smc%26adjust_adgroup=main_middle%26adjust_creative=more_contents");
764	}else{
765		alert("첫차는 안드로이드 기기 또는 아이폰, 아이패드에서 이용가능합니다.");
766	}
767});
768
769$(document).on("click","#app_down_modal .cancel_btn",function(){
770	$("#app_down_modal").attr("class","modal");
771	$.modal.close();
772});
773
774
775// 확인모달 보기
776function regCarAlertModal(title, msg)
777{
778    $('#basic_modal .inner_wrap .modal_title').html(title); //모달 문구 변경
779    $('#basic_modal .inner_wrap .modal_msg').html(msg); //모달 문구 변경
780    $("#basic_modal").modal({ // 모달 open
781        escapeClose: false,
782        clickClose: false,
783        showClose: false
784    });
785}
786
787// 디바이스 타입 체크
788function checkDeviceType(){
789    var type = "";
790    if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) {
791        if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
792            type = "IOS";
793        } else if (navigator.userAgent.match(/Android/i)) {
794            type = "ANDROID";
795        }
796    } else {
797        type = "PC";
798    }
799    return type;
800}
801
802// 전화번호 유효성 검사
803function checkExpPhone(phone)
804{
805    phone = phone.replace(/-/gi,'');
806
807    var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;
808    if ( !regExp.test( phone ) ) {
809        return false;
810    }
811    return true;
812}
813
814// IE계열 브라우저인지 확인
815function detectIE() {
816    var ua = window.navigator.userAgent;
817
818    var msie = ua.indexOf('MSIE ');
819    if (msie > 0) {
820        // IE 10 or older => return version number
821        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
822    }
823
824    var trident = ua.indexOf('Trident/');
825    if (trident > 0) {
826        // IE 11 => return version number
827        var rv = ua.indexOf('rv:');
828        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
829    }
830
831    var edge = ua.indexOf('Edge/');
832    if (edge > 0) {
833       // Edge (IE 12+) => return version number
834       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
835    }
836
837    // other browser
838    return false;
839}
840
841
842// js querystring 가져오기
843function scriptQuery() {
844    var script = document.getElementsByTagName('script');
845    script = script[script.length-1].src
846       .replace(/^[^\?]+\?/, '')
847       .replace(/#.+$/, '')
848       .split('&');
849     var queries = {}
850       , query;
851     while(script.length){
852          query = script.shift().split('=');
853          queries[query[0]] = query[1];
854     }
855     return queries;
856}

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.