PageSourceSearch

https://www.incheonbridge.com/resources/common/common_board.js

js incheonbridge.com collected 2026-10-02 12:10:38 UTC 21,438 bytes, 640 lines download raw bytes

1/**
2 * 게시판 공통 스크립트 파일
3 * 
4 * @author dylan, HDINC
5 * @create 2017.09.05
6 */
7
8try {
9	if( typeof max_upload_count == 'undefined') {
10		var max_upload_count = 0;
11	}
12	if( typeof use_wysiwyg == 'undefined') {
13		var use_wysiwyg = 0;
14	}
15	if( typeof use_attach_file == 'undefined') {
16		var use_attach_file = 0;
17	}
18	if( ! obj_editors) {
19		var obj_editors = undefined;
20	}
21	if( typeof editor_skin_url == 'undefined') {
22		var editor_skin_url = '';
23	}
24	if( typeof valid_file_types_is_image == 'undefined') {
25		var valid_file_types_is_image = 0;
26	}
27	if( typeof use_title_image == 'undefined') {
28		var use_title_image = 0;
29	}
30	if( typeof use_chk_pwd_del_file == 'undefined') {
31		var use_chk_pwd_del_file = 1;
32	}
33	if( typeof page_mode == 'undefined') {
34		var page_mode = '';
35	}
36	if( typeof URL_CHK_PWD == 'undefined') {
37		var URL_CHK_PWD = "";
38	}
39	if( typeof URL_DEL == 'undefined') {
40		var URL_DEL = "";
41	}
42	if( typeof URL_EDIT == 'undefined') {
43		var URL_EDIT = "";
44	}
45}
46catch(e) {};
47
48	
49$('document').ready(function(){	
50	
51	//업로드 가능한 파일 종류
52	var valid_file_types = ["jpg", "jpeg", "gif", "png", "bmp", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf", "zip", "hwp"];
53
54	// 보안 강화를 위해 업로드 가능한 파일 체크 루틴 추가 
55	var is_valid_file = function(name) {
56		var ext = name.substring(name.lastIndexOf(".") + 1, name.length).toLowerCase();
57		var rst = false;
58		for (var i = 0; i < valid_file_types.length; i++) {
59			if (ext == valid_file_types[i]) {
60				rst = true;
61				break;
62			}
63		}
64		return rst;
65	};
66	
67	// 파일 선택시 이벤트 처리
68	// - 선택한 파일 용량 체크
69	$("body").on('change', '.css_file', function(e){
70		var $this = $(e.target);
71		var $p = $this.parent().eq(0);
72		var file_name = $this.attr("name");
73		var file_html = '<input type="file" name="'+ file_name +'" class="css_file floatL" style="width:430px;">';
74		
75		// 1.허용 파일 체크
76		if( ! is_valid_file($this[0].files[0].name) ) {
77			alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_brd_01']);
78			$this.remove();
79			$p.append(file_html);
80			e.preventDefault();
81			return false;
82		}
83		// -- 허용 파일 체크 추가 함수
84		if (typeof is_valid_file_only_img == 'function') { 
85			if( ! is_valid_file_only_img(e, $this[0].files[0].name) ) {
86				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_brd_01']);
87				$this.remove();
88				$p.append(file_html);
89				e.preventDefault();
90				return false;
91			}
92		}
93		
94		// 2.파일 용량 제한 체크
95		var $show_input = $this.parent().prev();
96		var sel_file_size = $this[0].files[0].size;
97		// - 수정(2021.02.08)
98		// - 업로드 파일이 2개 이상 필요한 경우 각 파일별 용량체크할 수 있도록 제한용량 값을 태그 attr에 설정방식도 가능하게 수정(기존 단일방식도 유효함)
99		var limit_size = file_upload_max_size;
100		if( ! limit_size) {
101			limit_size = +$this.parents('.file_wrapper').attr('file-upload-max-size');
102		}
103		// 선택한 파일이 용량 초과한 경우
104		if(sel_file_size >= limit_size) {
105			// 
106			var info_size = numberToCurrency(Math.floor(parseInt(sel_file_size)/1024768));
107			var info_msg = (CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_brd_02']).replace('[x]', info_size);
108			alert(info_msg);
109			
110			// 새로 생성
111			var selector = "#"+ $this.parents(".file_wrapper").attr('id');
112			append_file_tag_block(selector, file_name);
113			// 기존 값이 있으면 대입
114			if($show_input.val() != '') {
115				$show_input.val( $show_input.val() );
116			}
117			// html을 제거한뒤
118			$this.parents('.css_file_container').remove();
119
120			$this.remove();
121			$p.append(file_html);
122			
123			e.preventDefault();
124			return false;
125		}
126
127		var matches = '';
128		// 수정일 경우 기존 파일명과 선택한 파일명이 같으면 업로드하지 않도록 한다.
129		if($show_input.val()) {
130			matches = $this.val().match(eval('/'+ $show_input.val() +'/g'));
131		}
132		// 파일명이 같으면 업로드하지 않는다
133		if(matches) {
134			alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_brd_03']);
135			$this.remove();
136			$p.append(file_html);
137			
138			e.preventDefault();
139		}
140		else {
141			$show_input.val( $this.val() );
142		}
143	});// end change event handler
144	
145	
146	// 파일 첨부 기능 사용시 HTML 블럭 생성 및 추가
147	if(use_attach_file) {
148		// 업로드 가능한 파일이 이미지만인 경우
149		if(valid_file_types_is_image == 1) {
150			valid_file_types = ["jpg", "jpeg", "gif", "png", "bmp"];
151		}
152		$('#info_files_valid_types').text( "* 업로드 가능한 파일 종류 : "+ valid_file_types.join(", "));
153		
154		// 첨부된 파일이 있는 경우, 다운로드 링크 생성
155		if($('#file_wrapper_data').text().trim() != "") {
156			create_attach_file_link("#file_wrapper", page_mode == "edit");
157		}
158		// 파일 블럭 생성
159		if(max_upload_count > $('.css_attach_files').length) {
160			append_file_tag_block("#file_wrapper");
161		}
162	}// end if
163	
164	
165	// 파일 다운로드
166	$("body").on('click', '.css_download', function(e){
167		e.preventDefault();
168		var real = $(e.target).parent().attr('data-real').trim();
169		var org = $(e.target).parent().attr('data-org').trim();
170		var data = {real:real, gnb:_gnb, lnb:_lnb, icb_csrf_token:$("input[name=icb_csrf_token]").val()};
171		var fn_succ = function(data) {
172			if(data.rst == 'succ') {
173				window.location.href = URL_FILE_DOWNLOAD +'?real='+ real +"&org="+ org +'&gnb='+ _gnb +"&lnb="+ _lnb;
174			}
175			else {
176				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['warn_board_01']);
177			}
178		};
179		req_ajax.run(URL_FILE_EXIST_CHK, data, fn_succ);
180	});// end 파일 다운로드 event handler
181	
182
183	
184	// 파일 삭제
185	$("body").on('click', '.css_del_file', function(e){
186		e.preventDefault();
187		var $this = $(e.target);
188
189		// 파일 삭제시 비번 체크 기능 사용 여부
190		if(use_chk_pwd_del_file) {
191			// 비번 입력 확인
192			var pwd = $('input[name=pwd]').val();
193			if(pwd == '') {
194				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_login_02']);
195				$('input[name=pwd]').focus();
196				return;
197			}
198		}
199		
200		var real = $this.parent().attr('data-real');
201		var org = $this.parent().attr('data-org');
202		var file_seq = $this.parent().attr('data-file-seq');
203		var msg = CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['warn_board_03'].replace('[x]', org);
204		var fn_del_file = function($this) {
205			// 삭제 처리 요청
206			var url = URL_FILE_DEL;
207			var rsc = {file_seq:file_seq, real:real, gnb: _gnb, lnb: _lnb, icb_csrf_token:$("input[name=icb_csrf_token]").val()}
208			var fn_succ = function(data) {
209				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_01']);
210				// file 태그 추가
211				var selector = "#"+ $this.parents(".file_wrapper").attr('id');
212				var file_name = $this.parents(".file_wrapper").attr('data-file-name');
213				append_file_tag_block(selector, file_name);
214				// file 다운로드 태그 삭제
215				$this.parent().remove();
216			};
217			req_ajax.run(url, rsc, fn_succ);
218		};
219		if(confirm(msg)) {
220			// 파일 삭제시 비번 체크 기능 사용 여부
221			if(use_chk_pwd_del_file) {
222				// 비번 체크
223				var seq = $('input[name=seq]').val();
224				req_ajax.run(
225					URL_CHK_PWD
226					, { seq: seq, pwd: pwd, gnb: _gnb, lnb: _lnb, icb_csrf_token:$("input[name=icb_csrf_token]").val()}
227					, function(data) {
228							if(data.rst == 'succ') {
229								// 삭제 처리 요청
230								fn_del_file($this);
231//							var url = URL_FILE_DEL;
232//							var rsc = {file_seq:file_seq, real:real, gnb: _gnb, lnb: _lnb, icb_csrf_token:$("input[name=icb_csrf_token]").val()}
233//							var fn_succ = function(data) {
234//								alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_01']);
235//								// file 태그 추가
236//								var selector = "#"+ $this.parents(".file_wrapper").attr('id');
237//								var file_name = $this.parents(".file_wrapper").attr('data-file-name');
238//								append_file_tag_block(selector, file_name);
239//								// file 다운로드 태그 삭제
240//								$this.parent().remove();
241//							};
242//							req_ajax.run(url, rsc, fn_succ);
243							//
244							}
245							else {
246								alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_login_06']);
247								$('input[name=pwd]').focus();
248							}
249						} 
250					, function(data){
251							var msg = CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_02'];
252							if(data.msg) msg += '[' + data.msg +']';
253							alert(msg);
254					}); //req_ajax.run
255			}
256			else {
257				fn_del_file($this);
258			}
259		}
260	});// end 파일 삭제 event handler
261	
262
263	// 파일 추가 버튼 이벤트 핸들러
264	$("body").on('click', '.css_add_file, .css_open_file, .css_rm_file_block', function(e){
265		e.preventDefault();
266		var $this = $(e.target);
267		
268		// 파일 업로드 블럭 추가
269		if($this.hasClass('css_add_file')) {
270			if($('.css_attach_files').length - use_title_image >= max_upload_count) {
271				var limit_msg = (CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_board_06']).replace('[x]', max_upload_count);
272				alert(limit_msg);
273				return false;
274			}
275			// 파일input html 태그 생성
276			var selector = "#"+ $this.parents(".file_wrapper").attr('id');
277			var file_name = $this.parents(".file_wrapper").attr('data-file-name');
278			append_file_tag_block(selector, file_name);
279		}
280		// 파일찾기 버튼 클릭 핸들러
281		else if($this.hasClass('css_open_file')) {
282			$this.next().click();
283		}
284		// 추가한 항목 제거 이벤트 핸들러
285		else if($this.hasClass('css_rm_file_block')) {
286			if($('.css_rm_file_block').length > 1) {
287				$this.parents('.css_file_container').remove();
288			}
289		}
290	});// end 파일 추가 event handler
291	
292
293//	$('#btnSubmit').click(function(e){
294//		e.preventDefault();
295//
296//		var url = URL_ADD;
297//		if(page_mode == 'edit') url = URL_EDIT; 
298//		if(page_mode == 'del') url = URL_DEL;
299//		if( ! url) {
300//			alert("잘못된 경로입니다.\n- url변수 오류");
301//			return false;
302//		}
303//		
304//		$('form[name="frmWrite"]').attr('action', url).ajaxForm({
305//			type : 'post',
306//			success: function(responseText, statusText){
307//				console.log(statusText)
308//				if(statusText == 'success') {
309//					alert("전송성공!!");
310//				}
311//			}, 
312//			error: function(data){ 
313//				console.log(data.responseText)
314//				alert("에러발생!!"); 
315//			}
316//		}).submit();
317//	});
318	
319	
320	//
321	// form 전송 - edit,add 공통
322	$('form[name="frmWrite"]').submit(function(e) {
323
324		var msg = CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_03'];
325		if(page_mode == 'del') msg = CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['warn_cmm_03'];
326
327		if( ! confirm(msg)) {
328			return false;
329		}
330
331		var url = URL_ADD;
332		if(page_mode == 'edit') url = URL_EDIT; 
333		if(page_mode == 'del') url = URL_DEL;
334		
335		if( ! url) {
336			alert("잘못된 경로입니다.\n- url변수 오류");
337			return false;
338		}
339			
340		if(use_wysiwyg == 1) {
341			var cont = obj_editors.getById["content"].getIR(); 
342			cont = cont.replace('<p>'+ String.fromCharCode(160) +'</p>', '').replace('<p>&nbsp;</p>', '').replace('<p><br></p>', '');
343			cont = cont.replace("<div id=\"dicLayer\" style=\"color: rgb(0, 0, 0); font-size: 12px; font-family: Arial; background: -webkit-linear-gradient(bottom, rgb(255, 235, 0), rgb(255, 220, 0)); display: none;\"><div id=\"dicLayerContents\"><\/div><div id=\"dicLayerArrowB\"><\/div><div id=\"dicLayerArrowF\"><\/div><\/div><div id=\"dicRawData\" style=\"display: none;\"><\/div>", '');
344
345			$('textarea[name=contents]').val(cont);
346		}
347		
348		// 전송
349		// for HTML5 browsers
350		if(window.FormData !== undefined)  {
351			// ie 9 이하 외 브라우저 때문에 여기서 이벤트 흐름을 끊어준다.
352			e.preventDefault();
353			
354			var formData = new FormData(this);
355			
356			$('#loading').show();
357			setTimeout(function(){
358				$.ajax({
359					url: url,
360					type: 'POST',
361					data: formData,
362					dataType: 'json', //
363					mimeType: "multipart/form-data",
364					contentType: false,
365					cache: false,
366//					async: false,
367					processData: false,
368					success: function(data, textStatus, jqXHR) {
369//						console.log(data);
370//						var obj = JSON.parse(data);
371						if(data.rst == 'succ') {
372							if(data.file_err == 1) {
373								alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['warn_board_04']);
374							}
375							if($.find('#btnList').length > 0){
376								$('#btnList').click();
377							}else{
378								location.reload();
379							}
380						}
381						else {
382							if(_is_local) objectPrint(data);
383							if(_is_local) objectPrint(jqXHR);
384							if(_is_local) console.log('textStatus : '+ textStatus);
385							alert(obj.msg);
386						}
387					},
388					error: function(jqXHR, textStatus, errorThrown) {
389						objectPrint(jqXHR);
390						objectPrint(textStatus);
391						if(_is_local) objectPrint(jqXHR);
392						if(_is_local) objectPrint(textStatus);
393						if(_is_local) objectPrint(errorThrown);
394					
395						var msg = CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_02'];
396//						if(data && data.msg) msg += '[' + data.msg +']';
397						alert(msg);
398						$('#loading').hide();
399					},
400					beforeSend: function(xhr) {
401						$('#loading').show();
402					}
403				})
404				.done(function( data ) {
405					$('#loading').hide();
406				});
407			}, 5000);
408		 }
409		 // for olden browsers
410		 else {
411
412			// <form> 태그에 action을 직업 기입한 경우 크롬에서 폼 전송 안되는 문제 발생.
413			$(this).attr("action", url);
414			var formObj = $(this);//*
415		 
416			//generate a random id
417			var iframeId = 'unique' + (new Date().getTime());
418	 
419			//create an empty iframe
420			var iframe = $('<iframe src="javascript:false;" style="width:1000px;height:500px;background-color:white;" name="'+iframeId+'" />');
421	 
422			//hide it
423			iframe.hide();
424	 
425			//set form target to iframe
426			formObj.attr('target', iframeId);
427	 
428			//Add iframe to body
429			iframe.appendTo('body');
430			iframe.load(function(e) {
431				$('#btnList').click();
432			});
433		}
434	});// end 폼전송 event handler
435	
436	/**
437	 * for Naver StartEditor2 - Start
438	 */
439	if(use_wysiwyg == 1 && typeof nhn != "undefined") {
440		// 컨텐츠 내용
441		var tmp_content = $('#content_data').val();
442		// setup the naver se2 editor
443		nhn.husky.EZCreator.createInIFrame({
444			oAppRef: obj_editors,
445			elPlaceHolder: "content",
446			sSkinURI: editor_skin_url,	// edit, add view 페이지 상단에 선언되어 있음
447			htParams : {
448				bUseToolbar : true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
449				bUseVerticalResizer : true,		// 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
450				bUseModeChanger : true,			// 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
451				//aAdditionalFontList : aAdditionalFontSet,		// 추가 글꼴 목록
452				fOnBeforeUnload : function(){
453					//alert("완료!");
454				}
455			}, //boolean
456			fOnAppLoad : function(){
457				if(tmp_content) {
458					obj_editors.getById["content"].exec("PASTE_HTML", [tmp_content]);
459				}
460			},
461			fCreator: "createSEditor2"
462		});
463	}
464	else {
465		$('#content').val( $('#content_data').val() ).css('width', '90%');
466	}
467	/**
468	 * for Naver StartEditor2 - End
469	 */
470});// end of document ready
471
472
473// 폼 전송
474var fn_onsubmit = function(form, url, get_submit) {
475	var $frm = $('form[name='+ form +']');
476	$frm.attr('action', url);
477	// frm 폼에 route가 없을때만 추가하도록 수정
478	if($frm.find("input[name=route]").length == 0) {
479		$frm.append('<input type="hidden" name="route" value="view"></input>');
480	}
481
482	if(get_submit === undefined) {
483		// list로 이동할 거라 폼 전송 이벤트 핸들러 제거
484		$('form[name="'+ form +'"]').off('submit');
485		$frm.submit();
486	}
487	else {
488		return $frm;
489	}
490};
491
492//파일블럭 html 태그 생성
493var append_file_tag_block = function(selector, file_name, force_show_buttons) {
494	file_name = file_name ? file_name : "__file__[]";
495	var hb = '<div class="css_attach_files css_file_container floatC marginT05" style="line-height:35px;">'
496	+ '<div class="floatL cssFileForm">'
497	+ '<input type="text" class="floatL" readonly="readonly" style="width:432px;background:none;border:none;"></input>'
498	+ '<div class="file_up" style="width:500px;padding-right: 0px;">'
499	+ '<button type="button" class="buttonS bWhite css_open_file floatL" style="margin:-26px 0 0 429px;padding-top:5px;padding-bottom:5px;">파일찾기</button>'
500	+ '<input type="file" name="'+ file_name +'" class="css_file floatL" style="width:430px;"></div></div>'
501	// 2개 이상 첨부할 수 있는 경우만 추가/제거 버튼 추가
502	// title이미지용에는 추가버튼 제외처리 - 2018.04.06 dylan
503	if(file_name != '__file_title__[]' && max_upload_count > 1 || force_show_buttons) {
504		hb += '<div class="floatL" style="margin:-3px 0 0 5px;"><button type="button" class="buttonS bGray css_add_file">추가</button>&nbsp;'
505		hb += '<button type="button" class="buttonS bGray css_rm_file_block">제거</button></div>'
506	}
507	hb += '</div>';
508	//
509	if(selector) $(selector).append(hb);
510}		
511
512//첨부파일 다운로드 링크 생성
513//@param boolean show_delete 삭제버튼 추가 여부, 1:추가, 0:추가안함-기본 
514var create_attach_file_link = function(selector, show_delete) {
515	if($(selector +"_data").text().trim() == "") {
516		return;
517	}
518	var r_p = _filepath;
519	var arr = $(selector +"_data").text().trim().split('|');
520	$(selector).empty();
521	$.each(arr, function(i, o) {
522		var arr_f = o.split('&');
523		var file_seq = arr_f[0].split('=')[1];
524		var str_real = arr_f[1].split('=')[1];
525		var str_org = arr_f[2].split('=')[1].trim();
526		var u = r_p + str_real;
527		var ht = '<div class="css_attach_files" data-real="'+ str_real +'" data-org="'+ str_org +'" data-file-seq="'+ file_seq
528			+'">';
529		if(show_delete) {
530			ht += '<button class="css_del_file buttonS bGray" style="margin-right:10px;">삭제</button>';
531		}
532		ht += '<a href="#" class="css_download" title="'+ str_org +'">'+ str_org +'</a></div>';
533		$(selector).append(ht);
534	});
535//	console.log(selector);
536};
537
538
539//기본 파일첨부 기능 외 대표이미지 첨부기능 사용인 경우, 
540// 1.파일블럭 생성 
541// 2.다운로드 링크 생성
542$('document').ready(function(){
543	if(typeof use_title_image != 'undefined') {
544		var title_data = $('#file_wrapper_title_data').text().trim();
545		
546		// 파일 블럭 생성
547		if((page_mode == "add" || page_mode == "edit") && title_data == "") {
548			append_file_tag_block("#file_wrapper_title", "__file_title__[]");
549		}
550
551		// 첨부된 파일이 있는 경우, 다운로드 링크 생성
552		if(title_data != "") {
553			create_attach_file_link("#file_wrapper_title", page_mode == "edit");
554		}
555	}
556});
557
558
559// 단순 폼 전송용
560var simple_submit = function(url, form_name, cfm_msg_id, rst_msg_id) {
561	var txt_cfm_msg_id = typeof cfm_msg_id == 'undefined' ? 'info_cmm_03' : cfm_msg_id;
562	var txt_rst_msg_id = typeof rst_msg_id == 'undefined' ? 'info_cmm_01' : rst_msg_id;
563	if(confirm(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE][txt_cfm_msg_id])) {
564		var rsc = $('form[name='+ form_name +']').serialize();
565		var fn_succes = function(data, textStatus, jqXHR) {
566			if(data.rst == 'succ') {
567				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE][txt_rst_msg_id]);
568				if($.find('#btnList').length > 0){
569					$('#btnList').click();
570				}
571			}
572			else {
573				alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_02']);
574			}
575		};
576		var fn_error = function(data, textStatus, jqXHR) {
577			alert(CFG_JS_CMM_MSG[CFG_JS_CMM_MSG_LOCALE]['info_cmm_02']);
578		};
579		req_ajax.run(url, rsc, fn_succes, fn_error);
580	}//
581};
582
583
584/**
585 * XXX 사용안함, 아래 다음맵 사용
586 * 네이버 지도 api를 이용한 주소 -> 좌표 변환 함수
587 * 
588 * @param string address 변환할 주소
589 * @param function callback 변환된 좌표로 실행할 함수 객체
590 */
591var get_geocoord_by_addr = function(address, callback) {
592	if(! address || ! naver || ! naver.maps || ! naver.maps.Service) {
593		if(! address) {
594			alert("주소값이 없습니다.");
595		}
596		else {
597			alert("잘못된 네이버 지도 객체입니다.");
598		}
599		return;
600	}
601	naver.maps.Service.geocode({
602		address: address
603	}
604	, function(status, response) {
605//		console.log(status);
606//		console.log(response);
607		if(status == "500" || response == "undefined") {
608			return alert('잘못된 주소입니다.');
609		}
610		else if (status === naver.maps.Service.Status.ERROR) {
611			 return alert('네이버 지도 API 서비스 장애입니다.\n잠시 후 다시 시도해 주세요.');
612		}
613		else {
614			var item = response.result.items[0],
615			point = new naver.maps.Point(item.point.x, item.point.y);
616			callback(point);
617		}
618	});
619};
620
621
622/**
623 * 다음맵 주소->좌표 변환 함수
624 */
625var daum_get_geocoord_by_addr = function(address, callback) {
626	var geocoder = new kakao.maps.services.Geocoder();
627	var _callback = function(result, status) {
628		if (status === kakao.maps.services.Status.OK) {
629			var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
630			// console.log('result', result);
631			// console.log('coords', coords);
632			callback(coords);
633		}
634		else {
635			return alert('지도 API 서비스 장애입니다.\n잠시 후 다시 시도해 주세요.');
636		}
637	};
638
639	geocoder.addressSearch(address, _callback);
640};

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.