PageSourceSearch

https://srhr.kr/js/post_comment.js?1760938173

js srhr.kr collected 2026-09-24 10:31:36 UTC 34,255 bytes, 1,079 lines download raw bytes

1
2var POST_COMMENT = function(){
3
4	var post_code,total_count,comment_count_obj,comment_form,comment_body, comment_area,child_comment_code,use_sub_secret_comment;
5	var $comment_container;
6	var comment_img_box;
7
8	var main_comment_image, comment_image, sub_comment_image , use_secret_comment;
9
10	var commentInit = function(code){
11		post_code = code;
12		comment_count_obj = $('#comment_count');
13		total_count = Math.round(comment_count_obj.text());
14		$comment_container = $('#comment_container');
15		comment_form = $('#comment_form');
16		comment_body = $('#comment_body');
17		comment_area = $('#comment_area');
18		comment_img_box = $('#comment_img_box');
19		use_secret_comment = $('#use_secret_comment');
20		captcha_answer = $('#captcha_answer');
21		captcha_key = $('#captcha_key');
22		captcha_img = $('#captcha_img');
23
24		main_comment_image = [];
25		comment_image = {};
26		sub_comment_image = {};
27
28		$secret = comment_form.find('._secret');
29		$secret.on('click', function(){
30			if($secret.hasClass('active')){
31				$secret.removeClass('active');
32				$secret.val('N');
33				use_secret_comment.val('N');
34			}else{
35				$secret.addClass('active');
36				$secret.val('Y');
37				use_secret_comment.val('Y');
38			}
39		});
40
41
42		/*
43		comment_area.off('input keyup  paste change','._comment_textarea')
44			.on('input keyup  paste change','._comment_textarea', function (e) {
45				var input = $(this);
46				setTimeout(function(){
47					input.limitLength({max_byte:3000});
48				}, 0);
49		});
50
51		comment_area.off('keydown.enter','._comment_textarea')
52			.on('keydown.enter','._comment_textarea', function (e) {
53				if (e.keyCode == 13) {
54					var target = $('#'+$(this).data('action'));
55					target.click();
56					e.preventDefault();
57				}
58			});
59			*/
60
61		comment_area.off('input keyup keydown paste change','._comment_nick')
62			.on('input keyup keydown paste change','._comment_nick', function () {
63				var input = $(this);
64				setTimeout(function(){
65					input.limitLength({max_byte:30});
66				}, 0);
67			});
68
69		/*
70		comment_area.off('input keyup keydown paste change','._comment_password')
71			.on('input keyup keydown paste change','._comment_password', function () {
72				var input = $(this);
73				setTimeout(function(){
74					input.limitLength({max_byte:30});
75				}, 0);
76			});
77			*/
78
79
80		$("#comment_image_upload_btn").fileupload({
81			url: '/ajax/comment_image_upload.cm',
82			dataType: 'json',
83			singleFileUploads:false,
84			limitMultiFileUploads: 5,
85			dropZone: null,
86			maxFileSize : 20000000, //20mb
87			limitMultiFileUploadSize : 110000000, //110 mb
88			start: function (e, data) {},
89			progress: function (e, data) {},
90			done: function (e, data) {
91				$("#comment_image_box").show();
92				$.each(data.result.comment_images,function(i,file){
93					var url = CDN_UPLOAD_URL+file.url;
94					var html ='<span class="file-add"><input type="hidden" name="tmp_img[]" value="'+file.tmp_idx+'"><div class="file-add-bg" style="background: url('+url+') no-repeat center center;"></div><em class="del" onclick="POST_COMMENT.removeCommentImg($(this))"></em></span>';
95					$("#comment_image_box").append(html);
96
97				});
98			},
99			fail: function (e, data) {
100			}
101		});
102
103		autosize(comment_area.find('.textarea_block textarea'));
104
105		//$("#comment_image_box").sortable({
106		//	placeholder: 'ui-state-highlight'
107		//});
108	};
109
110	var removeCommentImg = function(obj){
111		var box_obj = obj.parent().parent();
112		obj.parent().remove();
113		if(box_obj.find('.file-add').length == 0)box_obj.hide();
114	};
115
116	var updateAttachToolPosition = function(form,editor){
117		var $tool = form.find('._attach_tool');
118		var scroll_top = editor.$window.scrollTop();
119		var el_offset = editor.$el.offset();
120
121		var boundingRect;
122
123		var range = editor.selection.ranges(0);
124		if (range && range.collapsed && editor.selection.inEditor()) {
125			var remove = false;
126
127			editor.markers.remove();
128			if (editor.$el.find('.fr-marker').length == 0) {
129				editor.markers.insert();
130				remove = true;
131			}
132
133			var $marker = editor.$el.find('.fr-marker:first');
134			$marker.css('line-height','inherit');
135			$marker.css('display', 'inline');
136			var offset = $marker.offset();
137			boundingRect = {};
138			boundingRect.left = offset.left;
139			boundingRect.width = 0;
140			boundingRect.height = parseInt($marker.css('line-height'), 10) || 20;
141
142			var marker_tag_name = $marker.parent().prop("tagName");
143			marker_tag_name = marker_tag_name.toLowerCase();
144			if($.inArray(marker_tag_name, ['p','span','h1','h2','h3','h4','h5','h6','h7','h8','strong','b','font','a','i'])) {
145				var outer_h = Math.round($marker.parent().outerHeight());
146				boundingRect.height = outer_h;
147			}
148			boundingRect.top = offset.top - $(editor.original_window).scrollTop();
149			boundingRect.right = 1;
150			boundingRect.bottom = 1;
151			boundingRect.ok = true;
152			$marker.css('display', 'none');
153
154			if (remove) editor.markers.remove();
155		}
156		else if (range) {
157			boundingRect = range.getBoundingClientRect();
158		}
159
160		var attach_tool_left = el_offset.left-boundingRect.left;
161		$tool[attach_tool_left ==0?'show':'hide']();
162		var attach_tool_top = scroll_top+boundingRect.top-el_offset.top + (boundingRect.height/2) - ($tool.outerHeight()/2);
163		$tool.css('top',attach_tool_top);
164	};
165
166	var hideAttachTool = function(obj){
167		obj.find('._attach_tool').removeClass('open');
168	};
169
170
171	var commentIncreaseTotalCount = function(){
172		total_count++;
173		comment_count_obj.text(total_count);
174	};
175
176	var commentDecreaseTotalCount = function(decrease_count = 1){
177		total_count -= decrease_count;
178		comment_count_obj.text(total_count);
179	};
180
181	var is_writing = false;
182	var commentAdd = function(){
183		if(!is_writing){
184			var data = comment_form.serializeObject();
185
186			if (data.captcha_key) {
187				if (data.body.length > 0 && data.captcha_answer.length === 0) {
188					refreshCaptcha();
189					alert(getLocalizeString("설명_보안문자입력", "", "보안 문자를 입력해 주세요."));
190					return;
191				}
192			}
193
194			var menu_url = window.location.pathname;
195			data.menu_url = menu_url;
196			$.ajax({
197				type:'post',
198				data:data,
199				url:'/ajax/post_comment_add.cm',
200				dataType:'json',
201				success:function(result){
202          tokenRefresh(comment_form, result.refresh_token, result.refresh_token_key);
203					if(result.msg=='SUCCESS') {
204						comment_body.val('');
205						$("#comment_image_box").empty().hide();
206						commentFormHide();
207						commentIncreaseTotalCount();
208						if(result.comment_sorting_type == 'forward_new_comment'){
209							$comment_container.prepend(result.html);
210							moveToCommentListTop();
211						}else {
212							$comment_container.find('div.comment_list div.comment:last').length === 0 ? $comment_container.append(result.html) : $comment_container.find('div.comment_list div.comment:last').after(result.html);
213						}
214						autosize.update($('.comment_textarea').find('#comment_body'));
215					}else
216						alert(result.msg);
217
218					is_writing = false;
219				},
220				complete:function(){
221					if (data.captcha_key) {
222						refreshCaptcha();
223					}
224				}
225			});
226			is_writing = true;
227		}
228	};
229
230	var refreshCaptcha = function(form_type = 'comment', code){
231		var sub_form_captcha_answer = $('#sub_form_captcha_answer_'+code);
232		var sub_form_captcha_key = $('#sub_form_captcha_key_'+code);
233		var sub_form_captcha_img = $('#sub_form_captcha_img_'+code);
234		
235		$.ajax({
236			type:'post',
237			data:{
238				'captcha_key': form_type == 'comment' ? captcha_key.val() : sub_form_captcha_key.val(),
239				'target': 'comment',
240			},
241			url:'/ajax/refresh_captcha.cm',
242			dataType:'json',
243			success:function(result){
244				if (result.msg == 'SUCCESS') {
245					if (form_type == 'comment') {
246						captcha_answer.val('');
247						captcha_img.attr('src', result.captcha_img);
248						captcha_key.val(result.key);
249					} else if (form_type == 'sub_form') {
250						sub_form_captcha_answer.val('');
251						sub_form_captcha_img.attr('src', result.captcha_img);
252						sub_form_captcha_key.val(result.key);
253					}
254				} else {
255					alert(result.msg);
256				}
257			}
258		});
259	};
260
261	var commentFormHide = function(){
262		$comment_container = $('#comment_container');
263
264		$comment_container.find('._comment_area').show();
265		$comment_container.find('._sub_comment_wrap').show();
266		$comment_container.find('._sub_form').hide();
267		$comment_container.find('._comment_edit_form').hide();
268		$comment_container.find('.write').show();
269	};
270
271	var commentShowEdit = function(code, interlock_type){
272		var obj = $('#'+code);
273		var comment_edit_body = obj.find('._comment_edit_body_'+code);
274		var comment_wrap = obj.find('._comment_wrap_'+code);
275
276		comment_image[code] = [];
277		comment_edit_body.data('org_body',comment_edit_body.val());
278		commentFormHide();
279		comment_wrap.find('._comment_area').hide();
280		comment_wrap.find('.write').hide();
281
282		$.ajax({
283			type:'post',
284			data: {'code' : code, 'board_type': interlock_type},
285			url:'/ajax/append_post_comment_html.cm',
286			dataType:'json',
287			success:function(res){
288				obj.find('._comment_edit_form_'+code).html(res.html);
289				autosize.update(obj.find('._comment_edit_body'));
290				if(comment_wrap.find("._comment_body img").length>0) $("#comment_image_modify_box_"+code).show();
291				$("#comment_image_upload_modify_btn_"+code).fileupload({
292					url: '/ajax/comment_image_upload.cm',
293					dataType: 'json',
294					singleFileUploads:false,
295					limitMultiFileUploads: 5,
296					dropZone: null,
297					maxFileSize : 20000000, //20mb
298					limitMultiFileUploadSize : 110000000, //110 mb
299					start: function (e, data) {},
300					progress: function (e, data) {},
301					done: function (e, data) {
302						$("#comment_image_modify_box_"+code).show();
303						$.each(data.result.comment_images,function(i,file){
304							var url = CDN_UPLOAD_URL+file.url;
305							var html ='<span class="file-add"><input type="hidden" name="tmp_img[]" value="'+file.tmp_idx+'"><div class="file-add-bg" style="background: url('+url+') no-repeat center center;"></div><em class="del" onclick="POST_COMMENT.removeCommentImg($(this))"></em></span>';
306							$("#comment_image_modify_box_"+code).append(html);
307
308						});
309					},
310					fail: function (e, data) {
311					}
312				});
313				autosize(comment_area.find('.textarea_block textarea'));
314			}
315		});
316
317		obj.find('._comment_edit_form_'+code).show();
318
319	};
320
321	var commentEdit = function(code){
322		var obj = $('#'+code);
323		var comment_edit_body = obj.find('._comment_edit_body_'+code);
324
325		var form = obj.find('._comment_edit_form_'+code+' ._edit_form');
326
327		var comment_body = obj.find('._comment_wrap_'+code+' ._comment_body_'+code);
328
329
330		var data = form.serializeObject();
331
332		var new_img = form.find("input[name='tmp_img[]']");
333		var org_img = form.find("input[name='org_img[]']");
334		var img_old_cnt = form.find("input[name='org_image_old_cnt']");
335		var secret_comment = form.find("input[name='secret_comment']");
336
337		if((comment_edit_body.val() == comment_edit_body.data('org_body')) && (new_img.length == 0) && (img_old_cnt.val() == org_img.length) && secret_comment.val() == secret_comment.attr('orig')) {
338			commentFormHide();
339			return;
340		}
341		$.ajax({
342			type:'post',
343			data:data,
344			url:'/ajax/post_comment_add.cm',
345			dataType:'json',
346			success:function(result){
347        tokenRefresh(form, result.refresh_token, result.refresh_token_key);
348				if(result.msg=='SUCCESS') {
349					comment_edit_body.data('org_body', result.data.body);
350					comment_body.html('<div>'+result.data.body+'</div>');
351					comment_body.append(result.data.img_html);
352					switch(secret_comment.val()){
353						case 'Y':
354							$('#icon_' + code).show();
355							break;
356						case 'N':
357							$('#icon_' + code).hide();
358							break;
359					}
360					commentFormHide();
361					commentDestroyEdit(code);
362				}else
363					alert(result.msg);
364			}
365		});
366
367	};
368
369	var commentEditMap = function(code){
370		var obj = $('#'+code);
371		var comment_edit_body = obj.find('._comment_edit_body_'+code);
372
373		var form = obj.find('._comment_edit_form_'+code+' ._edit_form');
374
375		var comment_body = obj.find('._comment_wrap_'+code+' ._comment_body_'+code);
376
377
378		var data = form.serializeObject();
379
380		var new_img = form.find("input[name='tmp_img[]']");
381		var org_img = form.find("input[name='org_img[]']");
382		var img_old_cnt = form.find("input[name='org_image_old_cnt']");
383
384		if((comment_edit_body.val() == comment_edit_body.data('org_body')) && (new_img.length == 0) && (img_old_cnt.val() == org_img.length)) {
385			commentFormHide();
386			return;
387		}
388		$.ajax({
389			type:'post',
390			data:data,
391			url:'/ajax/map_comment_add.cm',
392			dataType:'json',
393			success:function(result){
394				if(result.msg=='SUCCESS') {
395					comment_edit_body.data('org_body', result.data.body);
396					comment_body.html(result.data.body);
397					comment_body.append(result.data.img_html);
398					commentFormHide();
399					commentDestroyEdit(code);
400				}else
401					alert(result.msg);
402			}
403		});
404	};
405
406	var commentDestroyEdit = function(code){
407		var obj = $('#'+code);
408		comment_image[code] = [];
409	};
410
411	var commentDestroyAddEditor = function(code){
412		var obj = $('._add_sub_form_'+code);
413		comment_image[code] = [];
414		var comment_edit_body = obj.find('._comment_add_body_'+code);
415		comment_edit_body.val('');
416	};
417
418	var commentCancelEdit = function(code){
419		var obj = $('#'+code);
420		var comment_edit_body = obj.find('._comment_edit_body_'+code);
421		comment_edit_body.val(comment_edit_body.data('org_body'));
422		commentFormHide();
423		commentDestroyEdit(code);
424	};
425
426	var commentShowSubForm = function(code){
427		var obj = $('#'+code);
428		var sub_form = obj.find('._sub_form_'+code);
429
430		var use_sub_secret_comment = sub_form.find('#use_sub_secret_comment');
431		$sub_secret = sub_form.find('._secret');
432		$sub_secret.on('click', function(){
433			if($sub_secret.hasClass('active')){
434				$sub_secret.removeClass('active');
435				$sub_secret.val('N');
436				use_sub_secret_comment.val('N');
437			}else{
438				$sub_secret.addClass('active');
439				$sub_secret.val('Y');
440				use_sub_secret_comment.val('Y');
441			}
442		});
443
444		commentFormHide();
445		if(sub_form.data('show')=='Y'){
446			sub_form.data('show', 'N');
447			$('body').off('mouseup.sub_comment');
448		}else {
449			sub_form.data('show', 'Y');
450			obj.find('._sub_form_' + code).show();
451			sub_comment_image[code] = [];
452			var comment_add_body = obj.find('._comment_add_body_' + code);
453
454			$('body').off('mouseup.sub_comment')
455				.on('mouseup.sub_comment', function (e) {
456					var $c_target = $(e.target);
457					var $s_form = $c_target.closest('._sub_form_' + code+', ._show_sub_form_btn_'+code);
458					if ($s_form.length == 0) {
459
460						var text = comment_add_body.val();
461						sub_form.data('show', 'N');
462						if(text == '') {
463							$('body').off('mouseup.sub_comment');
464							commentFormHide();
465						}
466					}
467				});
468		}
469		$("#comment_image_upload_btn_"+code).fileupload({
470			url: '/ajax/comment_image_upload.cm',
471			dataType: 'json',
472			singleFileUploads:false,
473			limitMultiFileUploads: 5,
474			dropZone: null,
475			maxFileSize : 20000000, //20mb
476			limitMultiFileUploadSize : 110000000, //110 mb
477			start: function (e, data) {},
478			progress: function (e, data) {},
479			done: function (e, data) {
480				$("#comment_image_box_"+code).show();
481				$.each(data.result.comment_images,function(i,file){
482					var url = CDN_UPLOAD_URL+file.url;
483					var html ='<span class="file-add"><input type="hidden" name="tmp_img[]" value="'+file.tmp_idx+'"><div class="file-add-bg" style="background: url('+url+') no-repeat center center;"></div><em class="del" onclick="POST_COMMENT.removeCommentImg($(this))"></em></span>';
484					$("#comment_image_box_"+code).append(html);
485
486				});
487			},
488			fail: function (e, data) {
489			}
490		});
491	};
492
493	var commentAddSub = function(code){
494		var obj = $('#'+code);
495		var comment_sub_body = obj.find('._comment_add_body_'+code);
496		var form = obj.find('._add_sub_form_'+code);
497		var $image_box = obj.find('#comment_image_box_'+code);
498		var data = form.serializeObject();
499
500		var tmp_img = {'temp_images':sub_comment_image[code]};
501		data = $.extend(data,tmp_img);
502
503		if (data.captcha_key) {
504			if (data.body.length > 0 && data.captcha_answer.length === 0) {
505				POST_COMMENT.refreshCaptchaSubForm(code);
506				alert(getLocalizeString('설명_보안문자입력','','보안 문자를 입력해 주세요.'));
507				return;
508			}
509		}
510
511		$.ajax({
512			type:'post',
513			data:data,
514			url:'/ajax/post_comment_add.cm',
515			dataType:'json',
516			success:function(result){
517				tokenRefresh(form, result.refresh_token, result.refresh_token_key);
518
519				if(result.msg=='SUCCESS') {
520					comment_sub_body.val('');
521					commentFormHide();
522					commentAddSubHTML(result.data.parent_code !='' ? result.data.parent_code : result.data.code,result.html);
523					commentDestroyAddEditor(code);
524					//self.location.hash=result.data.code;
525
526					$image_box.empty();
527				} else {
528					alert(result.msg);
529				}
530			},
531			complete:function(){
532				if (data.captcha_key) {
533				  POST_COMMENT.refreshCaptchaSubForm(code);
534				}
535			}
536		});
537	};
538
539  var tokenRefresh = function(form, refresh_token, refresh_token_key){
540    form.find('input[name="comment_token"]').val(refresh_token ? refresh_token : "");
541    form.find('input[name="comment_token_key"]').val(refresh_token_key ? refresh_token_key : "");
542  };
543  
544	var commentMapAddSub = function(code){
545		var obj = $('#'+code);
546		var comment_sub_body = obj.find('._comment_add_body_'+code);
547		var form = obj.find('._add_sub_form_'+code);
548		var data = form.serializeObject();
549
550		var tmp_img = {'temp_images':sub_comment_image[code]};
551		data = $.extend(data,tmp_img);
552
553		$.ajax({
554			type:'post',
555			data:data,
556			url:'/ajax/map_comment_add.cm',
557			dataType:'json',
558			success:function(result){
559				if(result.msg=='SUCCESS') {
560					comment_sub_body.val('');
561					commentFormHide();
562					if(result.map_listing == 'map'){
563						var map_sub_comment_count = 0;
564						map_sub_comment_count = Math.round($('#list_'+result.list_idx).find('#comment_count').text());
565						map_sub_comment_count++;
566						$('#list_'+result.list_idx).find('#comment_count').text(map_sub_comment_count);
567						$('#comment_area').find('#comment_count').text(map_sub_comment_count);
568						$('#list_pop_'+result.list_idx).find('#comment_count').text(map_sub_comment_count);
569						var sub_code = result.data.parent_code !='' ? result.data.parent_code : result.data.code;
570						var comment_sub_list = $('#'+sub_code).find('._comment_sub_list');
571						comment_sub_list.append(result.html);
572						commentIncreaseTotalCount();
573					}else{
574						commentAddSubHTML(result.data.parent_code !='' ? result.data.parent_code : result.data.code,result.html);
575					}
576					commentDestroyAddEditor(code);
577					//self.location.hash=result.data.code;
578				}else
579					alert(result.msg);
580			}
581		});
582	};
583
584	var commentShowSubEdit = function(code){
585		var obj = $('#'+code);
586		var comment_edit_body = obj.find('._comment_sub_edit_body');
587		comment_edit_body.data('org_body',comment_edit_body.val());
588		comment_edit_body.focus();
589		commentFormHide();
590		obj.find('._comment_sub_wrap').hide();
591		obj.find('._comment_sub_edit_form').show();
592
593		$("#comment_image_upload_modify_btn_"+code).fileupload({
594			url: '/ajax/comment_image_upload.cm',
595			dataType: 'json',
596			singleFileUploads:false,
597			limitMultiFileUploads: 5,
598			dropZone: null,
599			maxFileSize : 20000000, //20mb
600			limitMultiFileUploadSize : 110000000, //110 mb
601			start: function (e, data) {},
602			progress: function (e, data) {},
603			done: function (e, data) {
604				$("#comment_image_modify_box_"+code).show();
605				$.each(data.result.comment_images,function(i,file){
606					var url = CDN_UPLOAD_URL+file.url;
607					var html ='<span class="file-add"><input type="hidden" name="tmp_img[]" value="'+file.tmp_idx+'"><div class="file-add-bg" style="background: url('+url+') no-repeat center center;"></div><em class="del" onclick="POST_COMMENT.removeCommentImg($(this))"></em></span>';
608					$("#comment_image_modify_box_"+code).append(html);
609
610				});
611			},
612			fail: function (e, data) {
613			}
614		});
615
616	};
617
618	var commentCancelSubEdit = function(code){
619		var obj = $('#'+code);
620		var comment_edit_body = obj.find('._comment_sub_edit_body');
621		comment_edit_body.val(comment_edit_body.data('org_body'));
622		commentFormHide();
623
624	};
625
626	var commentSubEdit = function(code){
627		var obj = $('#'+code);
628		var comment_edit_body = obj.find('._comment_sub_edit_body');
629		var comment_body = obj.find('._comment_sub_body');
630		var form = obj.find('._sub_edit_form');
631		var data = form.serializeObject();
632		if(comment_edit_body.val() == comment_edit_body.data('org_body')) {
633			commentFormHide();
634			return;
635		}
636		$.ajax({
637			type:'post',
638			data:data,
639			url:'/ajax/post_comment_add.cm',
640			dataType:'json',
641			success:function(result){
642				if(result.msg=='SUCCESS') {
643					comment_edit_body.data('org_body', result.data.body);
644					comment_body.html($.nl2br(result.data.body));
645					commentFormHide();
646				}else
647					alert(result.msg);
648			}
649		});
650
651	};
652
653	var commentAddHTML = function(html){
654		commentIncreaseTotalCount();
655		comment_container.append(html);
656	};
657
658
659	var commentConfirmShow = function(event, code , type, interlock_type, use_interlock_board){
660		$post_secret_password = $('#post_secret_password');
661
662		if($post_secret_password.length==0){
663			$post_secret_password = $('<div class="remove-pop" id="post_secret_password" style="position:absolute; left:0;top:0;z-index:99999;"><p>' + LOCALIZE.설명_작성시등록하신비밀번호를입력해주세요() + '</p><div class="input_area"><input type="password" placeholder="' + LOCALIZE.설명_비밀번호() + '"><button class="btn btn-primary _confirm">' + LOCALIZE.버튼_확인닫기() + '</button></div></div>').hide();
664			$('body').append($post_secret_password);
665		}
666			var $post_link = $(event.target);
667
668			var top = $post_link.offset().top;
669			var left = $post_link.offset().left;
670
671			$post_secret_password.css({
672				position : 'absolute',
673				top : top,
674				left : left
675			});
676		$post_secret_password.find('input').val('');
677			$post_secret_password.show();
678			$post_secret_password.off('click','._confirm')
679				.on('click','._confirm',function(){
680					var secret_pass = $post_secret_password.find('input').val();
681					$post_secret_password.hide();
682					switch(type){
683						case 'show' : commentShow(code,secret_pass,interlock_type);
684						break;
685						case 'delete' : commentDelete(code,secret_pass,interlock_type,use_interlock_board);
686						break;
687						case 'edit' :  commentEditShow(code,secret_pass,interlock_type);
688						break;
689					}
690				});
691
692			$('body').off('mousedown.post_secret')
693				.on('mousedown.post_secret',function(e){
694					var $tmp = $(e.target).closest('#post_secret_password');
695					if($tmp.length==0) {
696						$post_secret_password.hide();
697						$('body').off('click.post_secret');
698					}
699				});
700	};
701
702	var commentMapConfirmShow = function(event, code, type, interlock_type){
703		$post_secret_password = $('#post_secret_password');
704		if($post_secret_password.length==0){
705			$post_secret_password = $('<div class="remove-pop" id="post_secret_password" style="position:absolute; left:0;top:0;z-index:99999;"><p>'+LOCALIZE.설명_작성시등록하신비밀번호를입력해주세요()+'</p><div class="input_area"><input type="password" placeholder="'+LOCALIZE.설명_비밀번호()+'"><button class="btn btn-primary _confirm">'+LOCALIZE.버튼_확인닫기()+'</button></div></div>').hide();
706			$('body').append($post_secret_password);
707		}
708		var $post_link = $(event.target);
709
710		var top = $post_link.offset().top;
711		var left = $post_link.offset().left;
712
713		$post_secret_password.css({
714			position : 'absolute',
715			top : top,
716			left : left
717		});
718
719		$post_secret_password.find('input').val('');
720		$post_secret_password.show();
721		$post_secret_password.off('click','._confirm')
722			.on('click','._confirm',function(){
723				var secret_pass = $post_secret_password.find('input').val();
724				$post_secret_password.hide();
725				switch(type){
726					case 'show'   : commentMapShow(code,secret_pass);
727					break;
728					case 'delete' : commentMapDelete(code,secret_pass);
729					break;
730					case 'edit'   : commentEditShow(code,secret_pass,interlock_type);
731					break;
732				}
733			});
734		$('body').off('mousedown.post_secret')
735			.on('mousedown.post_secret',function(e){
736				var $tmp = $(e.target).closest('#post_secret_password');
737				if($tmp.length==0) {
738					$post_secret_password.hide();
739					$('body').off('click.post_secret');
740				}
741			});
742	};
743
744	var commentDelete = function(code,secret_pass,interlock_type,use_interlock_board){
745		var obj = $('#'+code);
746		var comment_wrap = obj.find('._comment_wrap_'+code);
747		if(confirm(LOCALIZE.설명_삭제하시겠습니까())){
748			$.ajax({
749				type:'post',
750				data:{
751					code:code,
752					post_code:post_code,
753					secret_pass:secret_pass,
754					interlock_type:interlock_type,
755					use_interlock_board:use_interlock_board
756				},
757				url:'/ajax/post_comment_delete.cm',
758				dataType:'json',
759				success:function(result){
760					if(result.msg == 'SUCCESS'){
761						if(result.mode == 'delete'){
762							comment_wrap.html(LOCALIZE.설명_삭제된_댓글_입니다());
763						}else {
764							obj.remove();
765						}
766						commentDecreaseTotalCount();
767					}else{
768						alert(result.msg);
769					}
770				}
771			});
772		}
773	};
774
775	var commentShow = function(code,secret_pass,interlock_type){
776		$.ajax({
777			type : 'POST',
778			data : {code : code, post_code : post_code, secret_pass : secret_pass, show: 'Y', board_type:interlock_type},
779			url : ('/ajax/post_comment_show.cm'),
780			dataType : 'json',
781			success : function(result){
782				if(result.msg == 'SUCCESS'){
783					$("._comment_body_"+code).find("#secret_comment_text").text(result.html);
784					$("._comment_body_"+code).find($("img")).attr("src",result.img_url);
785					if(result.isSubComment){
786						for(var i in result.sub_comment){
787							var sub_data = result.sub_comment[i];
788							$('._comment_body_'+sub_data.code).html(sub_data.html);
789						}
790					}
791				}else
792					alert(result.msg);
793			}
794		});
795
796	};
797	var commentEditShow = function(code,secret_pass,interlock_type){
798		$.ajax({
799			type : 'POST',
800			data : {code : code, post_code : post_code, secret_pass : secret_pass, board_type : interlock_type},
801			url : ('/ajax/post_comment_show.cm'),
802			dataType : 'json',
803			success : function(result){
804				if(result.msg == 'SUCCESS'){
805					commentShowEdit(code,interlock_type);
806				}else
807					alert(result.msg);
808			}
809		});
810	};
811
812	var commentMapShow = function(code, secret_pass){
813		$.ajax({
814			type : 'POST',
815			data : {code : code, post_code : post_code, secret_pass : secret_pass},
816			url : ('/ajax/post_map_comment_show.cm'),
817			dataType : 'json',
818			success : function(result){
819				if(result.msg == 'SUCCESS'){
820					$("._comment_body_"+code).find("#secret_comment_text").text(result.html);
821					$("._comment_body_"+code).find($("img")).attr("src",result.img_url);
822					if(result.isSubComment){
823						for(var i in result.sub_comment){
824							var sub_data = result.sub_comment[i];
825							$('._comment_body_'+sub_data.code).html(sub_data.html);
826						}
827					}
828				}else
829					alert(result.msg);
830			}
831		});
832	};
833
834	var commentMapDelete = function(code,secret_pass){
835		var obj = $('#'+code);
836		var comment_wrap = obj.find('._comment_wrap_'+code);
837		if(confirm(LOCALIZE.설명_삭제하시겠습니까())){
838			$.ajax({
839				type:'post',
840				data:{code:code,post_code :post_code,secret_pass:secret_pass},
841				url:'/ajax/map_comment_delete.cm',
842				dataType:'json',
843				success:function(result){
844					if(result.msg == 'SUCCESS'){
845						if(result.mode == 'delete'){
846							comment_wrap.html(LOCALIZE.설명_삭제된_댓글_입니다());
847						}else {
848							obj.remove();
849						}
850						if(result.map_listing == 'map'){
851							var map_comment_count = 0;
852							map_comment_count = Math.round($('#list_'+result.list_idx).find('#comment_count').text());
853							map_comment_count--;
854							$('#list_'+result.list_idx).find('#comment_count').text(map_comment_count);
855							$('#comment_area').find('#comment_count').text(map_comment_count);
856							$('#list_pop_'+result.list_idx).find('#comment_count').text(map_comment_count);
857						}else{
858							commentDecreaseTotalCount(result.decrease_count);
859						}
860					}else{
861						alert(result.msg);
862					}
863				}
864			});
865		}
866	};
867
868
869	var commentAddSubHTML = function(code,html){
870		var obj = $('#'+code);
871		var comment_sub_list = obj.find('._comment_sub_list');
872		comment_sub_list.append(html);
873		commentIncreaseTotalCount();
874	};
875
876	var commentToggleSub = function (parent_comment_id){
877		var parent_obj = $('#'+parent_comment_id);
878		var loaded = parent_obj.data('sub_loaded');
879		var sub_open = parent_obj.data('sub_open');
880		var sub_comment_wrap = parent_obj.find('._sub_comment_wrap');
881		var sub_comment_list = parent_obj.find('._sub_comment_list');
882		var arrow_icon = parent_obj.find('._arrow_icon');
883		if(typeof loaded == 'undefined' || loaded == false){
884			$.ajax({
885				type:'post',
886				data:{code : parent_comment_id},
887				url:'/ajax/getChildComment.cm',
888				dataType:'json',
889				success:function(data){
890					var html = $(data.html);
891					sub_comment_list.append(html);
892					sub_comment_wrap.show();
893					arrow_icon.removeClass('zmdi-chevron-down').removeClass('zmdi-chevron-down').removeClass('zmdi-chevron-down');
894					arrow_icon.addClass('zmdi-chevron-up');
895					parent_obj.data('sub_loaded', true);
896					parent_obj.data('sub_open', true);
897				}
898			});
899		}else{
900			if(typeof sub_open == 'undefined' || sub_open == false){
901				sub_comment_wrap.show();
902				arrow_icon.removeClass('zmdi-chevron-down').removeClass('zmdi-chevron-down').removeClass('zmdi-chevron-down');
903				arrow_icon.addClass('zmdi-chevron-up');
904				parent_obj.data('sub_loaded', true);
905			}else{
906				sub_comment_wrap.hide();
907				arrow_icon.removeClass('zmdi-chevron-up').removeClass('zmdi-chevron-up').removeClass('zmdi-chevron-up');
908				arrow_icon.addClass('zmdi-chevron-down');
909				parent_obj.data('sub_loaded', false);
910			}
911		}
912	};
913
914	var commentMapAdd = function(){
915		var data = comment_form.serializeObject();
916		$.ajax({
917			type:'post',
918			data:data,
919			url:'/ajax/map_comment_add.cm',
920			dataType:'json',
921			success:function(result){
922				if(result.msg=='SUCCESS') {
923					comment_body.val('');
924					$("#comment_image_box").empty().hide();
925					commentFormHide();
926					if(result.map_listing == 'map'){
927						var map_comment_count = 0;
928						map_comment_count = result.comment_cnt;
929						$('#list_'+result.list_idx).find('._comment_count').text(map_comment_count);
930						$('#comment_area').find('#comment_count').text(map_comment_count);
931						$('#list_pop_'+result.list_idx).find('._comment_count').text(map_comment_count);
932						if(result.map_comment_sort == 'asc' || !result.map_comment_sort){
933							$comment_container.find('div.comment_list div.comment:last').length === 0 ? $comment_container.append(result.html) : $comment_container.find('div.comment_list div.comment:last').after(result.html);
934						}else{
935							$comment_container.prepend(result.html);
936							moveToCommentListTop();
937						}
938						autosize.update($('.comment_textarea').find('#comment_body'));
939					}else{
940						commentAddHTML(result.html);
941					}
942				}else
943					alert(result.msg);
944			}
945		});
946	};
947
948	var getCommentListByCurrentPagingNum = function(current_page, is_move_to_comment_list_top){
949		var is_loaded = false;
950		if(is_loaded === false){ // 재호출 방지
951			is_loaded = true;
952			$.ajax({
953				type:'post',
954				data:{
955					'board_code': comment_form.find("input[name='board_code']").val(),
956					'post_code': post_code,
957					'current_page':current_page
958				},
959				url:'/ajax/post_comment_paging.cm',
960				dataType:'json',
961				success:function(result){
962					is_loaded = false;
963					if(result.msg === 'SUCCESS') {
964						$comment_container.html(result.html);
965						if(is_move_to_comment_list_top) moveToCommentListTop();
966					}else{
967						alert(result.msg);
968					}
969				}
970			});
971		}
972	};
973
974	var moveToCommentListTop = function(){
975		var $modal_widget_fullboard = $('.modal_widget_fullboard');
976		var $pos_comment_container = $('#comment_container');
977
978		// 위젯 위치 세팅
979		if($modal_widget_fullboard.length > 0){
980			$modal_widget_fullboard.scrollTop($('.comment-block').position().top);
981		}else if($pos_comment_container.length > 0){
982			// 스크롤 고정 메뉴 확인
983			var fixed_header_section = $("._fixed_header_section");
984			var header_height = 0;
985
986			if(fixed_header_section.length > 0){
987				for(var i = 0; i < fixed_header_section.length; i++){
988					header_height += 2 * fixed_header_section[i].offsetHeight;
989				}
990			}
991			// 상단 고정 메뉴 확인
992			var new_fixed_header = $('#doz_header_wrap').find('._new_fixed_header');
993			if(new_fixed_header.length > 0){
994				header_height += new_fixed_header.height();
995			}
996
997			$(window).scrollTop($('.comment-block').offset().top - header_height -15);
998		}
999	};
1000
1001	return {
1002		init : function(code){
1003			commentInit(code);
1004		},
1005		toggleSub : function(code){
1006			commentToggleSub(code);
1007		},
1008		showEdit : function(code, board_type){
1009			commentShowEdit(code, board_type);
1010		},
1011		showSubForm : function(code){
1012			commentShowSubForm(code);
1013		},
1014		showAtForm : function(code){
1015			commentShowAtForm(code);
1016		},
1017		edit : function(code){
1018			commentEdit(code);
1019		},
1020		editMap : function(code){
1021			commentEditMap(code);
1022		},
1023		cancelEdit : function (code){
1024			commentCancelEdit(code);
1025		},
1026		addSub : function(code){
1027			commentAddSub(code);
1028		},
1029		addMapSub : function(code){
1030			commentMapAddSub(code);
1031		},
1032		addAt : function(code){
1033			commentAddAt(code);
1034		},
1035		showSubEdit : function(code){
1036			commentShowSubEdit(code);
1037		},
1038		cancelSubEdit : function (code){
1039			commentCancelSubEdit(code);
1040		},
1041		subEdit : function(code){
1042			commentSubEdit(code);
1043		},
1044		confirmShow : function(e,code,type,interlock_type,use_interlock_board){
1045			commentConfirmShow(e,code,type,interlock_type,use_interlock_board);
1046		},
1047		mapConfirmShow : function(e, code, type, interlock_type){
1048			commentMapConfirmShow(e, code , type, interlock_type)
1049		},
1050		confirmMapDelete : function(e,code){
1051			commentConfirmMapDelete(e,code);
1052		},
1053		'delete' : function(code, pass,interlock_type,use_interlock_board){
1054			commentDelete(code,pass,interlock_type,use_interlock_board);
1055		},
1056		deleteMap : function(code,pass){
1057			commentMapDelete(code,pass);
1058		},
1059		add : function(){
1060			commentAdd();
1061		},
1062		mapAdd : function(){
1063			commentMapAdd();
1064		},
1065		removeCommentImg : function(obj){
1066			removeCommentImg(obj)
1067		},
1068		getCommentListByCurrentPagingNum : function(current_page, is_move_to_comment_list_top){
1069			getCommentListByCurrentPagingNum(current_page, is_move_to_comment_list_top);
1070		},
1071		refreshCaptcha : function(){
1072			refreshCaptcha();
1073		},
1074		refreshCaptchaSubForm: function(code) {
1075			refreshCaptcha('sub_form', code);
1076		}
1077	}
1078
1079}();

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.