PageSourceSearch

https://www.catholictimes.org/-/raw/srv-catholictimes/data1/resour…/dev/js/script_custom.js?v=20260924101216

js catholictimes.org collected 2026-09-24 22:27:06 UTC 205,348 bytes, 5,650 lines download raw bytes

1var mediaData = {
2    mediaDomain : '',
3    mediaCdn : '',
4    mediaCode : ''
5};
6var fileListObject = [];
7
8var menuClickCnt = 0;
9
10/*전체메뉴 드롭다운*/
11$(function () {	
12    var pathName = location.pathname;
13    SRV.mediaData();
14    // 날씨 Open api 데이터 조회
15    //SRV.weatherList();
16	SRV.banner();
17    if(pathName.indexOf('etc') > -1){
18        ETC.init();
19    }else{
20    	SRV.init();
21        // 메인 페이지
22        if (pathName == "/"
23            || pathName == "main"
24            || pathName == "/main"){
25                MAIN.init();
26        // 서브 메인 페이지
27        }else if(pathName.indexOf('Main') >-1
28            || pathName.indexOf('infoSquare') >-1
29            || pathName.indexOf('infosquare') >-1){
30            SUBMAIN.init();
31        // 기획시리즈 페이지
32        }else if(pathName.indexOf('plan') >-1){
33            PLAN.init();
34        // 회원가입 페이지
35        }else if(pathName.indexOf('/myPage/community') > -1) {
36    		MYPAGECOMMUNITY.init();
37    	}else if(pathName.indexOf('member') > -1 ){ // 일반
38        	if(pathName.indexOf('myPage') >-1){
39	        	if(pathName.indexOf('memberSecession') >-1){ // 탈퇴
40	        		MEMBER.init();
41	        	}
42	        	if(pathName.indexOf('memberModify') >-1){ 
43	        		MEMBERMODIFY.init();
44	        	} 
45        	}else{
46        		MEMBER.init();
47        	}
48        // 회사소개 페이지
49        }else if(pathName.indexOf('ncompany') > -1
50        	|| pathName.indexOf('periodical') > -1
51        	|| pathName.indexOf('subscription') > -1){
52            ETC.init();
53            if(pathName.indexOf('/subscription/bulletinBoard') > -1) SUBSBOARD.init();
54        }else if(pathName.indexOf('sale') > -1){
55        	TRANSACTION.init();
56        }else if(pathName.indexOf('section') >-1
57            || pathName.indexOf('list') > -1 
58            || pathName.indexOf('writerList') > -1 
59            || pathName.indexOf('mainList') > -1 
60            || pathName.indexOf('photoList') > -1 
61            || pathName.indexOf('local') > -1 
62            || pathName.indexOf('newsList') > -1 
63            || pathName.indexOf('mainNews') > -1
64            || pathName.indexOf('bestNews') > -1
65			|| pathName.indexOf('premiumList') > -1
66			|| pathName.indexOf('seriesList') > -1){
67                LIST.init();
68        }else if(pathName.indexOf('article') > -1 ){
69            VIEW.init();
70        }else if(pathName.indexOf('detailSearch')>-1 || pathName.indexOf('photoSearch')>-1){
71            DETAILSEARCH.init();
72        }else if(pathName.indexOf('search') > -1 ){
73            SEARCH.init();
74        }else if(pathName.indexOf('levelUp') > -1 ){
75            MEMBER.init();        
76        }else if(pathName.indexOf('event') > -1 ){
77            EVENT.init();
78        }else if(pathName.indexOf('board') > -1 
79        	|| pathName.indexOf('notification') > -1
80			|| pathName.indexOf('notificationDetail') > -1){
81            BOARD.init();
82        }else if(pathName.indexOf('myScrap') > -1 ){
83            //현재 미사용
84			//BOOKMARK.init();
85        }else if(pathName.indexOf('community') > -1 ){
86            COMMUNITY.init();
87        }else if(pathName.indexOf('unionElection') > -1 ){
88            UNION.init();
89        }else if(pathName.indexOf('app') > -1 ){
90        	SRV.menuList();
91    	}else if(pathName.indexOf('update') > -1 ){
92			MEMBER.init();
93		}else{
94            VIEW.init();
95        }
96    }
97    servicePopup.init();
98});
99
100var ObjectUtils = {
101    
102    // 값의 유무 체크
103    isEmpty : function(val) {
104        var self = this;
105        if (val === undefined) return true;
106        if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
107            return false;
108        if (typeof (val) == 'object') {
109            var flag = true;
110            for (var f in val) {
111                flag = false;
112            }
113            return flag;
114        }
115        if (null == val || null === val || "" == val || val == undefined || typeof(val) == undefined || "undefined" == val || "NaN" == val || "null" == val) {
116            return true;
117        } else {
118            return false;
119        }
120    },
121
122    // 값의 유무 체크
123    isNotEmpty: function (val) {
124        var self = this;
125        return !this.isEmpty(val);
126    },
127
128    //숫자 인지 체크
129    isNumeric : function(val) {
130        var self = this;
131        if (!/^[0-9]+$/.test(val)) {
132            return false;
133        } else {
134            return true;
135        }
136    },
137
138    //숫자가 포함 되어 있는지 체크
139    isContainNumber : function(val) {
140        var self = this;
141        if(/[0-9]/.test(val)){
142            return true;
143        } else {
144            return false;
145        }
146    },
147
148
149    //날짜를 문자로 변환
150    dateToStr : function (date) {
151        var self = this;
152        if (self.isEmpty(date)) {
153            console.error("date 값이 없습니다.");
154            return "";
155        }
156        return moment.utc(date).format(config.datetimeFormat);
157    },
158
159    //날짜를 문자로 변환 (YYYY-MM-DD)
160    dateToStrFormatzz : function (date) {
161        var self = this;
162        if (self.isEmpty(date)) {
163            //console.error("date 값이 없습니다.");
164            return "";
165        }
166      
167        return moment(date).tz("Asia/Seoul").format('YYYY-MM-DD HH:mm:ss');
168    },
169
170    dateToStrFormatCnt : function (frDate) {
171        var self = this;
172        if(self.isEmpty(frDate)){
173          return "";
174        }else{
175            var agent = navigator.userAgent.toLowerCase();
176            var frDate = frDate;
177            if ( (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1)) {
178                //ie
179                frDate = frDate.split('.')[0];
180            }else{
181
182                frDate = frDate;
183            }
184          
185            var date = new Date(frDate);
186            var year = date.getFullYear();
187            var month = self.pad(date.getMonth()+1,2);
188            var day = self.pad(date.getDate(),2);
189            var hh = self.pad(date.getHours(),2);
190            var mm = self.pad(date.getMinute(),2);
191        }
192
193        return year + '-' + month + '-' + day + ' ' + hh + ':' + mm;
194      },
195
196    htmlEscape : function (str) {
197
198        var self = this;
199        var entityMap = {
200            '&': '&',
201            '<': '&lt;',
202            '>': '&gt;',
203            '"': '&quot;',
204            "'": '&#39;',
205            '/': '&#x2F;',
206            '`': '&#x60;',
207            '=': '&#x3D;'
208        };
209        if (self.isEmpty(str)) {
210            return str;
211        }
212        return String(str).replace(/[&<>"'`=\/]/g,
213            function (s) { return entityMap[s]; });
214
215    },
216
217    //해당 문자열 모두 치환
218    replaceAll : function (content, before, after) {
219        return content.split(before).join(after);
220    },
221    //자리수 pad 0
222    pad : function (n, width) {
223        n = n + '';
224        return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
225    },
226
227    getParameterByName : function (name) {
228        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
229        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
230            results = regex.exec(location.search);
231        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
232    },
233
234    // 날짜 포멧
235    dateFormat : function(date, fstr){
236        var weekName = ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"];
237        date = new Date(date);
238
239        return fstr.replace(/(yyyy|yy|MM|dd|E|HH|hh|mm|ss|a\/p)/gi, function (m) {
240            switch (m) {
241                case 'yyyy': return date.getFullYear(); 
242                case "yy": return (date.getFullYear() % 1000);
243                case 'MM': m = 1 + date.getMonth(); break;
244                case 'dd': m = date.getDate(); break;
245                case "E": return weekName[date.getDay()];
246                case 'HH': m = date.getHours(); break;
247                case "hh": m = ((h = date.getHours() % 12) ? h : 12); break;
248                case 'mm': m = date.getMinutes(); break;
249                case 'ss': m = date.getSeconds(); break;
250                case "a/p": return date.getHours() < 12 ? "오전" : "오후";
251                default: return m;
252            };
253            return ('0' + m).slice (-2);
254        });
255    },
256    commaAdd : function(str){
257		str = String(str);
258		str = str.replace(/[^\d]+/g, '');
259		str = str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
260		
261		return str;
262    }, 
263    deviceChk : function (){
264        var mobileKeyWords = new Array('Android', 'iPhone', 'iPod', 'BlackBerry', 'Windows CE', 'SAMSUNG', 'LG', 'MOT', 'SonyEricsson');
265        for (var info in mobileKeyWords) {
266            if (navigator.userAgent.match(mobileKeyWords[info]) != null) {
267                return true;
268            }
269        }
270        return false;
271    }    
272};
273//기본
274var SRV = {
275    init : function () {
276        var self = this;
277        console.log("SRV.INIT");
278        //self.mediaData();
279        self.fileUpload(self);
280        self.eventBind();
281    },
282    eventBind : function () {
283        var self = this;
284        
285        /* 20220919 농민신문 통합검색 이벤트 처리 시작 */
286        var keyword = "";
287        // 상단 공통 헤더 검색 박스 버튼: 미고정  
288        var input_target = $("#keyword_header");
289        var button_target = $("button[name='btn_search_header']");
290        // 상단 공통 헤더 검색 박스 버튼: 고정 
291		var input_target_fix = $("#keyword_header_fix");
292        var button_target_fix = $("button[name='btn_search_header_fix2']");
293
294        var input_target2 = $("#keyword_header2");
295        
296        $(input_target).on('focus keyup', function(e){
297            keyword = $(e.target).val().trim();
298            if(e.keyCode == 13) {
299                if (keyword === "") {
300                    alert("검색어를 입력하세요.");
301                    return false;
302                } else {
303                    $(button_target).trigger('click');
304                }
305            }
306        });
307        
308        $(input_target2).on('focus keyup', function(e){
309            keyword = $(e.target).val().trim();
310            if(e.keyCode == 13) {
311                if (keyword === "") {
312                    alert("검색어를 입력하세요.");
313                    return false;
314                } else {
315                	//var searchUrl = '/search?searchText='+keyword;
316                	var searchUrl = '/search/detailSearch?searchType=detail&organization=000&searchRange=title_subtitle_body&storyClass=&searchMedia=all&reporterName=&from=&to=&searchWord1='+ encodeURIComponent(keyword) +'&searchCondition=and&searchWord2=&sort=post';
317    				SRV.goPage(searchUrl);
318                }
319            }
320        });
321        
322        $(button_target).on("click", function(){
323            keyword = $(input_target).val().trim();
324            if (keyword === "") {
325                alert("검색어를 입력하세요.");
326                return false;
327            } else {            	
328            	//var searchUrl = '/search?searchText='+keyword;
329            	var searchUrl = '/search/detailSearch?searchType=detail&organization=000&searchRange=title_subtitle_body&storyClass=&searchMedia=all&reporterName=&from=&to=&searchWord1='+ encodeURIComponent(keyword) +'&searchCondition=and&searchWord2=&sort=post';
330				SRV.goPage(searchUrl);
331            }
332        });
333
334		$(input_target_fix).on('focus keyup', function(e){
335            keyword = $(e.target).val().trim();
336            if(e.keyCode == 13) {
337                if (keyword === "") {
338                    alert("검색어를 입력하세요.");
339                    return false;
340                } else {
341                    $(button_target_fix).trigger('click');
342                }
343            }
344        });
345
346		$(button_target_fix).on("click", function(){
347            keyword = $(input_target_fix).val().trim();
348            if (keyword === "") {
349                alert("검색어를 입력하세요.");
350                return false;
351            } else {            	
352            	//var searchUrl = '/search?searchText='+keyword;
353            	var searchUrl = '/search/detailSearch?searchType=detail&organization=000&searchRange=title_subtitle_body&storyClass=&searchMedia=all&reporterName=&from=&to=&searchWord1='+ encodeURIComponent(keyword) +'&searchCondition=and&searchWord2=&sort=post';
354				SRV.goPage(searchUrl);
355            }
356		});
357        /* 20220919 농민신문 통합검색 이벤트 처리 끝 */
358        
359        $("#printPageBtn").on('click', function(){
360    		var url = location.href;
361    		if(url.indexOf('print') > -1){
362    			window.print();
363    		}
364    	});         
365        
366        $("#myPageCombo").on("change",function(){ // 체크박스에 변화가 발생시	
367        	location.href=$(this).val();
368        });
369        
370		$(".all_menu").on('click', function(e){
371			e.stopPropagation();
372			if(menuClickCnt>0){
373				//$('.all_menu_box').stop().slideToggle('slow');	
374				$(".all_menu_box").slideToggle("slow");
375			}else{
376				// 메뉴 데이터 조회(JSON)
377				SRV.menuList('top');
378			}
379    	});
380		
381		//하단 전체메뉴
382		$('#footer .service_box .open').click(function(e){
383			e.stopPropagation();
384			if(menuClickCnt>0){
385				$(this).toggleClass('close');
386				//$('#footer .service_box .service_all_wrap').stop().slideToggle('slow');
387				$('#footer .service_box .service_all_wrap').slideToggle('slow');
388			}else{
389				// 메뉴 데이터 조회(JSON)
390				SRV.menuList('bottom');
391			}				
392		});
393		
394		$(document).on("click", function () {
395			$(".all_menu_box").slideUp();
396		});
397		
398    },
399    mediaData : function(){
400        $.ajax({
401            url: "/rest/media",
402            contentType: "application/json",
403            type: "GET",
404            dataType:"JSON",
405			async: false,
406            success: function(data){
407                mediaData.mediaCdn = data.mediaCdn;
408                mediaData.mediaDomain = data.mediaDomain;
409                mediaData.mediaCode = data.mediaCode;
410            },
411            error: function (error){
412                console.log('매체정보를 불러올 수 없습니다');
413            }
414        });
415    },
416    
417    menuList: function(gubun){
418		
419		$.ajax({
420	    url: "/rest/menuList",
421		type: "GET",		
422	    dataType : "json",
423	    success : function(data) {        				
424				
425				var html = "";		
426				var html2 = "";						
427				var stringCode = "";
428				var getCode = "";
429				var depthCode = "";
430				var putIdValue = "";
431				var menuParentCode = "";
432				
433				for(var i=0; i<data.depthOne.length; i++){
434					
435					var menuCode = data.depthOne[i].menuCode;
436					html += "<li>";			
437					
438					if(data.depthOne[i].menuName == 'N+ 프리미엄'){
439						html += "<a href='"+data.depthOne[i].menuUrl+"'><span class='nav_n'>N<em>+</em></span> 프리미엄</a>";
440					}else if(data.depthOne[i].menuName == '매거진' || data.depthOne[i].menuName == '콘텐츠몰'){
441						html += "<a href='javascript:void(0)' style='cursor: default;'>"+data.depthOne[i].menuName+"</a>";	
442					}else{
443						html += "<a href='"+data.depthOne[i].menuUrl+"'>"+data.depthOne[i].menuName+"</a>";						
444					}
445					
446					html += "<ul class='dep2' id="+data.depthOne[i].menuCode+">";	
447					
448					for(var j=0; j<data.depthTwo.length; j++){
449						
450						var depthTwoList = data.depthTwo[j];
451						
452						for(var k=0; k<depthTwoList.length; k++){
453							menuParentCode = depthTwoList[k].menuParentCode;
454							if(menuCode == menuParentCode){
455								html += "<li><a href='"+depthTwoList[k].menuUrl+"'>"+depthTwoList[k].menuName+"</a></li> ";		
456							}
457						}															
458					}
459					
460					html += "</ul>";										
461					html += "</li>";
462				}		
463
464				$(".menuList").html(html);
465				
466				if(gubun=="top"){
467					$('.all_menu_box').stop().slideToggle('slow');
468				}else{
469					$(this).toggleClass('close');
470					$('#footer .service_box .service_all_wrap').stop().slideToggle('slow');
471					
472				}
473				menuClickCnt++;
474
475			},
476			error : function(xhr, textStatus, error) {
477
478			}
479		});				
480		
481	},
482	
483/*    weatherList: function(){
484		
485		$.ajax({
486	    url: "/rest/weatherList",
487		type: "GET",		
488	    dataType : "json",
489	    success : function(data) {        
490
491		    	var weatherApiInfoList = data;
492				var html = "";
493				
494				$.each(weatherApiInfoList, function (i, item) {
495					
496					var weatherSkyParse = parseInt(item.WEATHER_SKY);
497					var weatherStatus = parseInt(item.WEATHER_STATUS);
498			
499					html += "<li>";
500					html += "	<a href=''>";
501					html += "		<div class='weather'>";
502					
503					
504					if(weatherSkyParse == 0){
505						html += "<img src='" + mediaData.mediaCdn + "/data1/"+ mediaData.mediaCode+"/resources/pc/common/images/ico_weather05.png' alt='날씨'>";
506					}
507					
508					if(weatherSkyParse > 0 && weatherSkyParse < 8 ){
509						html += "<img src='" + mediaData.mediaCdn + "/data1/"+ mediaData.mediaCode+"/resources/pc/common/images/ico_weather09.png' alt='날씨'>";
510					}
511					
512					if(weatherStatus < 9 && weatherStatus > 5 ){
513						html += "<img src='" + mediaData.mediaCdn + "/data1/"+ mediaData.mediaCode+"/resources/pc/common/images/ico_weather07.png' alt='날씨'>";
514					}
515					
516
517					html += "		</div>";
518					html += "		<span class='area'>"+item.WEATHER_REGION+"</span>";
519					html += "		<span class='temp'>"+item.WEATHER_TEMP+"</span>";
520					html += "	</a>";
521					html += "</li> ";	
522					
523				});
524				$(".weather_box").html(html);
525				
526				
527				$('.weather_box').slick({
528					//infinite : true, 	
529					slidesToShow : 1,
530					slidesToScroll : 1,
531					arrows:false,
532					dots:false,
533					vertical:true,
534					autoplay : true,
535					autoplaySpeed : 5000,
536				});
537			},
538			error : function(xhr, textStatus, error) {
539
540			}
541		});					
542	},*/
543	
544	banner : function(){
545	
546		$(".banner_render a").off().on('click',function (){
547			var bannerSeq = $(this).attr('data-target').replace('banner_','');
548			var url = window.location.href;
549			var left = $(this).offset().left;
550			var top = $(this).offset().top;
551			var today = new Date();
552			var obj = {'bannerSeq' : bannerSeq, 'url' : url, 'today' : today, 'left' : left , 'top' : top};
553
554			$.ajax({
555				url: "/rest/banner/count",
556				type: "POST",
557				dataType:"JSON",
558				data: obj,
559				success: function(data){
560
561				},
562				error: function (error){
563					console.log(error);
564				}
565			});
566
567		});
568	},
569    //이동
570    goPage : function (url, target) {
571        if (ObjectUtils.isNotEmpty(url)) {
572            target = ObjectUtils.isEmpty(target) ? "_self" : target;
573            window.open(url, target);
574        }
575    },
576    eventKey : function(){
577		
578        //엔터
579        if(event.keyCode == 13){
580            SEARCH.goSearch();
581        }
582		
583    },
584    fileUpload : function (self) {
585		
586        // 파일업로드
587        $("#fileSingle").on("change", function(){
588        
589            var maxSize = 2 * 1024 * 1024 ; 
590            var file_html = "";
591            var date = new Date();
592            var objKey = date.getSeconds().toString() + date.getMilliseconds().toString();
593            
594            if(this.files[0].size < maxSize){
595                fileListObject.push(this.files[0]);  
596            }else{
597                alert("첨부파일 사이즈는 2MB 이내로 등록 가능합니다.");
598                return false ; 
599            } 
600        });		
601    }   
602};
603var MAIN = {
604    init : function () {
605        var self = this;
606        console.log("MAIN INIT");
607        // 소셜 팝업창
608        SOCIAL.init();
609        // 사고 게시판 리스트
610        //BOARD.boardList(1, 5, 4, "main");
611        self.eventBind();
612    },
613    renderInfo: function(boardInfo, boardList){
614        var self = this;
615        var html = "";
616        if(boardInfo.useYn !== "N" && boardList.length > 0){
617            for(var i=0; i< boardList.length; i++ ){
618                html += `<li>\n`;
619                html += `   <a href='/notificationDetail?seq=${boardList[i].contentSeq}'>\n`;
620                html += `       ${boardList[i].contentSubject}\n`;
621                html += `   </a>\n`;
622                html += `</li>\n`;
623            };
624        };
625        $("#info_event02").html(html);
626    },
627    eventBind : function () {
628        var self = this;
629        $(".relation_arrow").off().on("click", function(){
630            $(this).css("display", "none");
631            $(this).next().css("display", "block");
632        });
633    }	
634};
635var SUBMAIN = {
636    init: function(){
637        var self = this;
638        var pathName = location.pathname;
639
640        console.log("SUB_MAIN INIT");
641        // 소셜 팝업창
642        SOCIAL.init();
643        // 많이본기사 탭이름
644        self.setTabName();
645        
646        // 서브메인 중 정보광장인 경우 사고 게시판 리스트를 우측 하단 중앙 '사고'란에 그려준다. 
647        if (pathName.indexOf('infoSquare') > -1){ 
648            BOARD.boardList(1, 5, 4, "submain_infoSquare");
649        }
650    },
651
652    setTabName: function(){
653        var subHeadName = $(".sub_head").text();
654        $('[data-tab="view01"]').text(subHeadName);
655    },
656
657    renderInfo: function(boardInfo, boardList){
658        var html = "";
659        if(boardInfo.useYn !== "N" && boardList.length > 0){
660            for(var i=0; i< boardList.length; i++ ){
661                html += `<li>\n`;
662                html += `   <a href='/notificationDetail?seq=${boardList[i].contentSeq}'>\n`;
663                html += `       ${boardList[i].contentSubject}\n`;
664                html += `   </a>\n`;
665                html += `</li>\n`;
666            };
667        };
668        $("#info_middle_section").html(html);
669    }    
670};
671var PLAN = {
672    init: function(){
673        var self = this;
674        console.log("PLAN INIT");
675        self.startSearch();
676        self.eventBind();
677    },
678    eventBind: function(){
679        // 기획시리즈 검색 버튼
680        $(".search_btn").on("click", function(e){
681            e.preventDefault();
682            var txt = $(".plan_search_input").val().trim();
683            if(txt === ""){
684                alert("검색어를 입력하세요");
685                return false;
686            };
687            SRV.goPage('/planSearchList?searchText='+encodeURI(txt));
688        });
689        $(".plan_search_input").on('focus keyup', function(e){
690            var txt = $(e.target).val().trim();
691            if(e.keyCode == 13){
692                if(txt === ""){
693                    alert("검색어를 입력하세요");
694                    return false;
695                };
696                SRV.goPage('/planSearchList?searchText='+encodeURI(txt));
697            };
698        });
699    },
700    startSearch: function(){
701		var self = this;
702        var searchText = ObjectUtils.getParameterByName('searchText').trim();
703        if(!ObjectUtils.isEmpty(searchText)){
704            sessionStorage.removeItem('pageNum');
705            $('.plan_search_input').val(searchText);
706			self.renderPaging(searchText);
707        };
708    },
709    renderPaging: function(txt){
710        var self = this;
711        var html = ""; 
712        var currentPage = Number($("#currentPage").val());
713        var lastPage = Number($("#lastPage").val());
714        var pagePerBlock = 10;
715
716        var pageGroup = Math.ceil(currentPage / pagePerBlock) - 1;
717        var start = (pageGroup * pagePerBlock) + 1;
718        var last = (pageGroup + 1) * pagePerBlock;
719
720        html += `<ul>\n`;
721        // 전 페이지 블록으로
722        if(start > pagePerBlock){
723            html += `   <a onclick='SRV.goPage("/planSearchList?searchText=${txt}&page=${start-pagePerBlock}")' class="prev_btn"></a>\n`;
724        };
725        // 중간 페이지
726        for(var i=start; i <= last; i++){
727            if(i> lastPage) break;
728            if(i == currentPage) {
729                html += `   <li class='on'><a onclick='SRV.goPage("/planSearchList?searchText=${txt}&page=${i}")'>${i}</a></li>\n`;
730            }else{
731                html += `   <li><a onclick='SRV.goPage("/planSearchList?searchText=${txt}&page=${i}")'>${i}</a></li>\n`;
732            };
733        };
734        // 다음 페이지 블록으로
735        if(currentPage + pagePerBlock <= lastPage){
736            html += `   <a onclick='SRV.goPage("/planSearchList?searchText=${txt}&page=${last+1}")' class="next_btn"></a>\n`;
737        };
738        html += `</ul>\n`;
739        $(".paging_wrap").html(html);
740		$('.paging_wrap a').css("cursor","pointer");
741    }
742};
743var VIEW = {
744    init : function () {
745        var self = this;
746        var url = location.href;
747
748        SOCIAL.kakaoShare();
749        self.eventBind();
750        //self.restCount(); 	// 기사 카운트       
751        self.setFontSize(); // 2022.12.06 기사 상세 글자 크기 유지를 위한 초기화 처리  
752        
753        //2022.11.25 기사상세 프린트 팝업창 초기화 단계에서 처리 
754		if(url.indexOf('print') > -1){
755			window.print();
756		}
757    },
758
759    eventBind: function(){
760		var self = this;
761        var mainTitle = $("h2[class='siteViewTitle']").text();
762
763        $("ul[name='sns_share_btn'] li").click(function(e){
764            e.preventDefault();
765            var snsElem = $(e.currentTarget).find("img").attr("class");
766            snsName = snsElem.split(" ")[0];
767            var shareUrl = location.href;
768            var shareImg = $('figure > img').attr('src') === undefined ? "" : $('figure > img').attr('src'); 
769            SOCIAL.share(snsName, shareUrl, mainTitle, shareImg);
770        });
771        
772        var url = window.location.href
773		var newsId = url.substring(url.lastIndexOf('/')+1);
774		var sizeCount = sessionStorage.getItem('sizeCount') === null ? 0 : sessionStorage.getItem('sizeCount');
775		var font_size = sessionStorage.getItem('font_size') === null ? 1.125 : sessionStorage.getItem('font_size');
776
777		// 폰트 크기 변경
778		$(".txt-size01").on("click", function() {
779			font_size = 12;
780			$('.main-story').css('font-size', font_size+'px'); // 이전기사(마이그레이션) 적용
781			$('.template').css('font-size', font_size+'px'); // 이전기사(마이그레이션) 적용
782            $('.news_content > p').css('font-size', font_size+'px'); // 최신기사 적용
783            $('.item > p').css('font-size', font_size+'px');
784            $(this).siblings().removeClass('active');
785            $(this).addClass('active');
786      	});
787		$(".txt-size02").on("click", function() {
788			font_size = 15;
789			$('.main-story').css('font-size', font_size+'px');
790			$('.template').css('font-size', font_size+'px');
791			$('.news_content > p').css('font-size', font_size+'px');
792            $('.item > p').css('font-size', font_size+'px');
793			$(this).siblings().removeClass('active');
794			$(this).addClass('active');
795		});
796		$(".txt-size03").on("click", function() {
797			font_size = 18;
798			$('.main-story').css('font-size', font_size+'px');
799			$('.template').css('font-size', font_size+'px');
800			$('.news_content > p').css('font-size', font_size+'px');
801            $('.item > p').css('font-size', font_size+'px');
802			$(this).siblings().removeClass('active');
803			$(this).addClass('active');
804		});
805		$(".txt-size04").on("click", function() {
806			font_size = 21;
807			$('.main-story').css('font-size', font_size+'px');
808			$('.template').css('font-size', font_size+'px');
809			$('.news_content > p').css('font-size', font_size+'px');
810            $('.item > p').css('font-size', font_size+'px');
811			$(this).siblings().removeClass('active');
812			$(this).addClass('active');
813		});
814
815        // 프린트 팝업 
816		$(".print-ico").on("click", function() {
817           if(ObjectUtils.isNotEmpty(newsId)){
818               window.open("/print/"+newsId, "print팝업", "width=820, height=800, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes, top=0, left=0, toolbar=no");
819           }
820		});
821		
822		// 상세페이지 상단 이전 기사
823        $('#article_prev_btn').on('click', function(){
824            $.ajax({
825                url: "/rest/getArticleId",
826                type: "GET",
827                contentType: "application/json",
828                dataType:"text",
829                data: {
830                	searchType : "PREV",
831                    id : newsId
832                },
833                success: function(data){
834                	if(!ObjectUtils.isEmpty(data)){
835                		location.href="/article/"+data;
836                	}else{
837                		alert("이전 기사가 없습니다.");
838                	}
839                },
840                error: function (error){
841                    //console.log(error);
842                }
843
844            });
845        });
846        
847		// 상세페이지 상단 다음 기사
848        $('#article_next_btn').on('click', function(){
849            $.ajax({
850                url: "/rest/getArticleId",
851                type: "GET",
852                contentType: "application/json",
853                dataType:"text",
854                data: {
855                	searchType : "NEXT",
856                    id : newsId
857                },
858                success: function(data){
859                	if(!ObjectUtils.isEmpty(data)){
860                		location.href="/article/"+data;
861                	}else{
862                		alert("다음 기사가 없습니다.");
863                	}
864                },
865                error: function (error){
866                    //console.log(error);
867                }
868            });
869        });    
870        
871        // 기사 상세 이미지 클릭 시 팝업
872        $('.news_content figure img').on('click', function() {
873			// a 태그 안에 있는 img 태그는 팝업을 띄우지 않고 링크를 따라가게 처리
874			if ($(this).closest('a').length > 0) {
875				return true; // 링크를 따라가게 허용
876			}
877
878            var url = $(this).attr('src');
879            // 원본이 아닌 512 프리뷰 사이즈로 변경
880            //var src = url.split('.cache')[0];
881            //var storyId = url.split('/').reverse()[0];
882            //url = src + storyId;
883
884            // 새 창을 열고 초기에는 창 크기에 맞추어 이미지를 표시
885            var newWindow = window.open("", "_blank", "width=850,height=550,menubar=no, status=no, toolbar=no, scroll=yes, resizable=yes, top=0, left=0");
886            newWindow.document.write('<html><head><title>Image Viewer</title><style>body{margin:0;overflow:auto;}img{width:100%; height:100%; object-fit: contain; cursor:zoom-out;}</style></head><body>');
887            newWindow.document.write('<img src="' + url + '" id="image" alt="Viewing Image" style="width:100%; height:100%; cursor:zoom-out;">');
888            newWindow.document.write('<script>var img = document.getElementById("image"); img.style.width = "100%"; img.style.height = "100%"; img.onclick = function() { if (img.style.width === "100%") { img.style.width = "auto"; img.style.height = "auto"; img.style.cursor = "zoom-in"; document.body.style.overflow = "auto"; } else { img.style.width = "100%"; img.style.height = "100%"; img.style.cursor = "zoom-out"; document.body.style.overflow = "hidden"; } }; document.oncontextmenu = function() { return false; }; </script>');
889            newWindow.document.write('</body></html>');
890            newWindow.document.close();
891
892			// 기본 동작 방지 (팝업이 열린 후 페이지 이동을 막음)
893			return false;
894        });
895    },
896
897    restCount : function(){
898
899        var url = window.location.pathname ;
900		var referrer = document.referrer;
901		referrer = referrer.split(".")[1]
902        var newsId = url.substring(url.lastIndexOf('/')+1);
903
904		if(!referrer){
905			referrer = 'other';
906		}
907        var obj = {
908            id : newsId,
909			referrer : referrer
910		};
911        $.ajax({
912            url: "/rest/count",
913            type: "POST",
914            dataType:"JSON",
915            data: obj,
916            success: function(data){
917
918            },
919            error: function (error){
920                console.log(error);
921            }
922        });
923    },
924    
925    setFontSize: function(){
926    	var sizeCount = sessionStorage.getItem('sizeCount') === null ? 0 : sessionStorage.getItem('sizeCount');
927    	var font_size = sessionStorage.getItem('font_size') === null ? 1.125 : sessionStorage.getItem('font_size');
928    	$('.news_txt > p, .news_txt > div > p, .news_txt > blockquote > p').css('font-size', font_size+'rem'); // 본문
929    	$('.news_sub_tit > pre').css('font-size', font_size+'rem'); // 부제목 
930    }
931};
932var SEARCH = {
933    init : function () {
934        var self = this;
935
936        self.startSearch();
937        //input을 datepicker로 선언
938        $("#to").datepicker({
939            dateFormat: 'yy-mm-dd' //Input Display Format 변경
940            ,showOtherMonths: true //빈 공간에 현재월의 앞뒤월의 날짜를 표시
941            ,showMonthAfterYear:true //년도 먼저 나오고, 뒤에 월 표시
942            ,changeYear: true //콤보박스에서 년 선택 가능
943            ,changeMonth: true //콤보박스에서 월 선택 가능
944            ,yearSuffix: "년" //달력의 년도 부분 뒤에 붙는 텍스트
945            ,monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'] //달력의 월 부분 텍스트
946            ,monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 Tooltip 텍스트
947            ,dayNamesMin: ['일','월','화','수','목','금','토'] //달력의 요일 부분 텍스트
948            ,dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'] //달력의 요일 부분 Tooltip 텍스트
949            ,minDate: "-10Y" //최소 선택일자(-1D:하루전, -1M:한달전, -1Y:일년전)
950            ,maxDate: "+10Y" //최대 선택일자(+1D:하루후, -1M:한달후, -1Y:일년후)
951        });
952
953        $("#from").datepicker({
954            dateFormat: 'yy-mm-dd' //Input Display Format 변경
955            ,showOtherMonths: true //빈 공간에 현재월의 앞뒤월의 날짜를 표시
956            ,showMonthAfterYear:true //년도 먼저 나오고, 뒤에 월 표시
957            ,changeYear: true //콤보박스에서 년 선택 가능
958            ,changeMonth: true //콤보박스에서 월 선택 가능
959            ,monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'] //달력의 월 부분 텍스트
960            ,monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 Tooltip 텍스트
961            ,dayNamesMin: ['일','월','화','수','목','금','토'] //달력의 요일 부분 텍스트
962            ,dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'] //달력의 요일 부분 Tooltip 텍스트
963            ,minDate: "-10Y" //최소 선택일자(-1D:하루전, -1M:한달전, -1Y:일년전)
964            ,maxDate: "+10Y" //최대 선택일자(+1D:하루후, -1M:한달후, -1Y:일년후)
965        });
966
967        $("#to").on("click", function() {
968            $('#to').datepicker('setDate'); //(-1D:하루전, -1M:한달전, -1Y:일년전), (+1D:하루후, -1M:한달후, -1Y:일년후)
969        });
970
971        $("#from").on("click", function() {
972            $('#from').datepicker('setDate'); //(-1D:하루전, -1M:한달전, -1Y:일년전), (+1D:하루후, -1M:한달후, -1Y:일년후)
973        });
974
975    },
976
977    startSearch : function (){
978		
979        var searchText = ObjectUtils.getParameterByName('searchText');
980        $(".btn_list_search_input2").val(searchText);
981
982    },
983
984    goSearch: function(pageNum, sort, type="all"){
985        $('html').scrollTop(0);
986        if(pageNum){
987			sessionStorage.setItem('pageNum', pageNum);
988		}
989        if (typeof pageNum == "undefined" || pageNum == null || pageNum == "undefined" || pageNum == '' || pageNum < 2) {
990            pageNum = 1;
991        }
992        if(sort == '_score'){
993            $("#sort_new").removeClass('active');
994            $("#sort_exact").addClass('active');
995        }else{
996            $("#sort_new").addClass('active');
997            $("#sort_exact").removeClass('active');
998        }
999
1000        var targetInput = $(`.${type}_search_input`);
1001        var searchTxt = targetInput.val().trim();
1002        targetInput.val(searchTxt);
1003
1004        if(ObjectUtils.isEmpty(searchTxt)){
1005            alert("검색내용을 입력하세요.");
1006            return false;
1007        }else{
1008            var page = sessionStorage.getItem('pageNum');
1009            var from = (!ObjectUtils.isEmpty($("#from").val()) ? $("#from").val(): "");
1010            var to = (!ObjectUtils.isEmpty($("#to").val()) ? $("#to").val(): "");
1011            $.ajax({
1012                url: "/rest/search",
1013                type: "GET",
1014                contentType: "application/json",
1015                dataType:"JSON",
1016                data: {
1017                    searchText : searchTxt,
1018                    searchType : type,
1019                    from : from,
1020                    to : to,         
1021                    from : "",
1022                    to : "",                               
1023                    page : page ? page : pageNum,
1024                    sort : sort
1025                },
1026                success: function(data){
1027					//검색한 이름
1028					$("#resultName").html("'"+data.searchText.replace("\"","").replace(" \"","")+"'");
1029					
1030					//총 건수
1031					var totalCnt = ObjectUtils.commaAdd(data.pages.totalElements);
1032					$("#resultCnt").html('검색결과 ( 전체기사 중 '+totalCnt+' 건의 기사가 검색되었습니다.)');				
1033
1034					SEARCH.renderArticle(data);
1035					SEARCH.renderPaging(data,sort);
1036                },
1037                error: function (error){
1038                    console.log(error);
1039                }
1040            });
1041        }
1042    },
1043
1044    renderArticle : function (data){
1045    	var html = "";
1046        
1047        if (data.list && data.list.length > 0) {
1048            $.each(data.list,function(idx, obj){
1049				var agent = navigator.userAgent.toLowerCase();
1050				var frDate = obj.paperDateReleased;
1051				if ( (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1)) {
1052					// ie일 경우
1053					frDate = frDate.split('.')[0];
1054				}else{
1055					// ie가 아닐 경우
1056					frDate = frDate;
1057				}
1058
1059                var date = new Date(frDate);
1060                var year = date.getFullYear();
1061                var month = ObjectUtils.pad(date.getMonth()+1,2);
1062                var day = ObjectUtils.pad(date.getDate(),2);
1063                var hh = ObjectUtils.pad(date.getHours(),2);
1064                var mm = ObjectUtils.pad(date.getMinutes(),2);
1065                var ss = ObjectUtils.pad(date.getSeconds(),2);
1066                var relDate = year+'.'+month+'.'+day+' '+hh+':'+mm;
1067                //var relDate = year+'-'+month+'-'+day;
1068                var linkUrl = "/article/"+obj.id;
1069                var subTitle = obj.subTitle ;
1070                var imgSrc = obj.imgSrc ;
1071				var writerName = "";
1072
1073				if(ObjectUtils.isEmpty(obj.writerList)){
1074					writerName = obj.createdBy;
1075				}else{
1076					writerName = obj.writerList[0].WRITER_NAME;
1077				}
1078				var writerName_str = writerName.replace(/기자/gi, "");
1079				//var imgUrlDev = mediaData.mediaCdn+"/data2"+imgSrc.substring(0,26) + ".cache/128/" + imgSrc.substring(26);
1080				
1081
1082				
1083				/*html+='<div class="section_news media">';
1084				
1085
1086                
1087				html+='	<div class="media-body news_body">';
1088				
1089				html+='		<a href="'+linkUrl+'">';
1090				if(!ObjectUtils.isEmpty(obj.highlightTitle)){
1091					html+='			<h1>'+ obj.highlightTitle + '</h1>';
1092				}else{
1093					html+='			<h1>'+ obj.title + '</h1>';	
1094				}
1095				
1096				if(!ObjectUtils.isEmpty(obj.highlightSummary)){
1097					html+='			<p>'+obj.highlightSummary+'</p>';
1098				}else{
1099					html+='			<p>'+obj.summary+'</p>';	
1100				}
1101				
1102				html+='		</a>';
1103				html+='		<div class="line_info">';
1104				html+='			<ul>';
1105				html+='				<li>'+obj.category[0].sectionName+'</li>';
1106				html+='				<li>'+writerName+'</li>';
1107				html+='				<li>'+relDate+'</li>';
1108				html+='			</ul>';
1109				html+='		</div>';
1110				html+='	</div>';
1111				html+='</div>';	
1112				*/
1113				
1114				html += '<div class="article_list">';
1115				html += '	<div class="media">';
1116				if(!ObjectUtils.isEmpty(obj.imgSrc)){
1117					if(imgSrc.indexOf('/0540/') > -1){
1118						imgSrc = data.contentsUrl + obj.imgSrc;
1119					}else if(imgSrc.indexOf('/exposure/') > -1){
1120						imgSrc = data.contentsUrl + obj.imgSrc;
1121					}else{
1122						imgSrc = data.contentsUrl + obj.imgSrc.substring(0,26) + ".cache/512/" + obj.imgSrc.substring(26);
1123					}	
1124					html += '	<div class="news_thumb">';
1125					html += '		<a href="'+linkUrl+'">';
1126					html += '			<div class="thumbnail_img" style="background-image: url('+imgSrc+');"></div>';
1127					html += '		</a>';
1128					html += '	</div>';
1129				}
1130				
1131				html += '		<div class="news_tit media-body">';
1132				if(!ObjectUtils.isEmpty(obj.highlightTitle)){
1133					html += '		<h3><a href='+linkUrl+'>'+obj.highlightTitle+'</a></h3>';
1134				}else{
1135					html += '		<h3><a href='+linkUrl+'>'+obj.title+'</a></h3>'
1136				}
1137
1138				if(!ObjectUtils.isEmpty(obj.highlightSummary)){
1139					html += '		<p><a href='+linkUrl+'>'+obj.highlightSummary+'</a></p>';
1140				}else{
1141					html += '		<p><a href='+linkUrl+'>'+obj.summary+'</a></p>';
1142				}
1143				html += '			<span class="byline">';
1144				html +=					'<span>'+obj.category[0].sectionName+'</span>';
1145				html +=					'<span>'+writerName_str+' 기자</span>';
1146				html +=					'<span>'+relDate+'</span>';
1147				html +=				'</span>';
1148				html += '		</div>';
1149				html += '	</div>';
1150				html += '</div>';
1151				
1152            });
1153        }
1154        $(".borderT_b").html(html);
1155    },
1156
1157    renderPaging : function (data,sort){
1158
1159    	var html = "";
1160        var currentPage = data.pages.number+1;
1161        var size = data.size;
1162        var totalCount = data.totalElements;
1163        var lastPage = data.pages.totalPages;
1164        var prePage = currentPage-1;
1165        var nextPage = currentPage+1;
1166        var pagePerBlock = 10;
1167
1168        if(ObjectUtils.deviceChk()){
1169            pagePerBlock = 5 ;
1170        }
1171
1172        //모바일 시 페이징 처리
1173        var pageGroup = Math.ceil(currentPage/pagePerBlock);
1174        var last = pageGroup * pagePerBlock;
1175        var start = (pageGroup -1)*pagePerBlock+1;	
1176		
1177		html += '<ul class="pagination_list">';
1178        if(currentPage > 1){
1179            if(pagePerBlock == 10){
1180                html += '<li class="arrow_list"><a href="javascript:void(0);" title="처음" onclick=SEARCH.goSearch(1,\''+sort+'\');><span class="material-icons">keyboard_double_arrow_left</span></a></li>';
1181            }
1182
1183            html += '<li class="arrow_list mr10"><a href="javascript:void(0);" title="이전" onclick=SEARCH.goSearch('+prePage+',\''+sort+'\');><span class="material-icons">keyboard_arrow_left</span></a></li>';
1184        }else{
1185            if(pagePerBlock == 10){
1186                html += '<li class="arrow_list"><a href="javascript:void(0);" title="처음"><span class="material-icons">keyboard_double_arrow_left</span></a></li>';
1187            }
1188            html += '<li class="arrow_list mr10"><a href="javascript:void(0);" title="이전"><span class="material-icons">keyboard_arrow_left</span></a></li>';
1189        }
1190        for(var i=start; i <= last; i++){
1191            if(i > lastPage) break;
1192            if(i == currentPage){
1193                html += '<li class="page_num"><a href="#" class="active">'+i+'</a></li>';
1194            }else{
1195                html += '<li class="page_num"><a href="javascript:void(0);" onclick=SEARCH.goSearch('+i+',\''+sort+'\');>'+i+'</a></li>';
1196            }
1197        }
1198
1199        if(currentPage < lastPage){
1200            html += '<li class="arrow_list ml10 on"><a href="javascript:void(0);" title="다음" onclick=SEARCH.goSearch('+nextPage+',\''+sort+'\');><span class="material-icons">keyboard_arrow_right</span></a></li>';
1201            if(pagePerBlock == 10){
1202                html += '<li class="arrow_list"><a href="javascript:void(0);" title="끝" onclick=SEARCH.goSearch('+lastPage+',\''+sort+'\');><span class="material-icons">keyboard_double_arrow_right</span></a></li>';
1203            }
1204        }else{
1205            html += '<li class="arrow_list ml10 on"><a href="javascript:void(0);" title="다음"><span class="material-icons">keyboard_arrow_right</span></a></li>';
1206            if(pagePerBlock == 10){
1207                html += '<li class="arrow_list"><a href="javascript:void(0);" title="끝"><span class="material-icons">keyboard_double_arrow_right</span></a></li>';
1208            }
1209        }
1210        html += '</ul>';		
1211		
1212        $(".pagenation_wrap").html(html);
1213    }  
1214};
1215
1216var MEMBER = {
1217
1218    init : function (){
1219
1220        var self = this;
1221        console.log("MEMBER");
1222
1223        var pathName = location.pathname;
1224        if(pathName.indexOf('member/join') > -1){
1225            self.joinPage();
1226        }
1227
1228        if(pathName.indexOf('member/login') > -1){
1229        	self.saveIdLogin();
1230        }
1231        if(ObjectUtils.isNotEmpty($("#hiddenNumber").val())){
1232            self.numberSetting();
1233        }
1234
1235        if(ObjectUtils.isNotEmpty($("#hiddenNumberPhone").val())){
1236            self.numberPhoneSetting();
1237        }
1238
1239        self.eventBind();
1240
1241    },
1242
1243    joinPage : function (){
1244
1245  		var chkStatus = $("#chkStatus").val();
1246  		if(chkStatus == "FAIL"){
1247  			alert("회원가입동의후 가입이 가능합니다.");
1248  			location.href="/member/agree";
1249  		}
1250
1251        var name = ObjectUtils.getParameterByName('name');
1252        var email = ObjectUtils.getParameterByName('email');
1253
1254        $("input[name='memberName']").val(name);
1255        $("input[name='memberEmail']").val(email);
1256
1257    },
1258
1259    numberSetting : function () {
1260
1261      var str = $("#hiddenNumber").val().split('-');
1262      $(".homeNumberClass").val(str[0]).prop("selected", true);
1263      $("#numberOne").val(str[1]);
1264      $("#numberTwo").val(str[2]);
1265
1266    },
1267
1268    numberPhoneSetting : function () {
1269
1270      var str = $("#hiddenNumberPhone").val().split('-');
1271      $(".phoneNumberClass").val(str[0]).prop("selected", true);
1272      $("#numberPhoneOne").val(str[1]);
1273      $("#numberPhoneTwo").val(str[2]);
1274
1275    },
1276
1277    saveIdLogin : function () {
1278
1279        var self = this;
1280        var userInputId = self.getCookieLogin("userInputId");
1280//저장된 쿠기값 가져오기
1281        $("input[name='j_username']").val(userInputId);
1282
1283        if($("input[name='j_username']").val() != ""){
1284            $("#idSaveCheck").attr("checked", true);
1285        }
1286
1287    },
1288
1289    setCookieLogin : function(cookieName, value, exdays){
1290
1291        var exdate = new Date();
1292        exdate.setDate(exdate.getDate() + exdays);
1293        var cookieValue = escape(value) + ((exdays==null) ? "" : "; expires=" + exdate.toGMTString());
1294        document.cookie = cookieName + "=" + cookieValue;
1295
1296    },
1297
1298    deleteCookieLogin : function(cookieName){
1299
1300      var expireDate = new Date();
1301      expireDate.setDate(expireDate.getDate() - 1);
1302      document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString();
1303
1304    },
1305
1306    getCookieLogin : function(cookieName) {
1307
1308      cookieName = cookieName + '=';
1309      var cookieData = document.cookie;
1310      var start = cookieData.indexOf(cookieName);
1311      var cookieValue = '';
1312      if(start != -1){
1313          start += cookieName.length;
1314          var end = cookieData.indexOf(';', start);
1315          if(end == -1)end = cookieData.length;
1316          cookieValue = cookieData.substring(start, end);
1317      }
1318      return unescape(cookieValue);
1319
1320  },
1321
1322    eventBind : function () {
1323        var self = this;
1324
1325        $("#id_save").on("change",function(){ // 체크박스에 변화가 발생시
1326                if($("#id_save").is(":checked")){ // ID 저장하기 체크했을 때,
1327                    var userInputId = $("input[name='j_username']").val();
1328                    self.setCookieLogin("userInputId", userInputId, 7); // 7일 동안 쿠키 보관
1329                }else{ // ID 저장하기 체크 해제 시,
1330                    self.deleteCookieLogin("userInputId");
1331                }
1332            });
1333
1334            $("input[name='j_username']").on("keyup",function(){ // ID 입력 칸에 ID를 입력할 때,
1335                if($("#id_save").is(":checked")){ // ID 저장하기를 체크한 상태라면,
1336                var userInputId = $("input[name='j_username']").val();
1337                self.setCookieLogin("userInputId", userInputId, 7); // 7일 동안 쿠키 보관
1338            }
1339        });
1340
1341        // id찾기
1342        $("#btn_findId").on("click", function(){
1343
1344            if(ObjectUtils.isEmpty($("#id_prime_name").val()) || ObjectUtils.isEmpty($("#id_prime_email").val()) ){
1345                alert("아이디 또는 이메일을 입력하세요");
1346                return false;
1347            }else{
1348
1349                //email validation
1350                var email = $("#id_prime_email").val();
1351                var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
1352
1353                if (!regExp.test(email)) {
1354                    alert("이메일 형식이 맞지 않습니다.");
1355                    return false;
1356                }else{
1357                    $.ajax({
1358
1359                        url: "/rest/findId",
1360                        type: "GET",
1361                        contentType: "application/json",
1362                        dataType:"JSON",
1363                        data: {
1364                            memberName : $("#id_prime_name").val(),
1365                            memberEmail :$("#id_prime_email").val()
1366                        },
1367                        success: function(data){
1368
1369                            if(data.message == "SUCCESS"){
1370                                alert("회원님의 ID는 "+data.id+" 입니다.");
1371                            }else{
1372                                alert("일치하는 회원 정보가 없습니다.");
1373                            }
1374                        },
1375                        error: function (error){
1376                            console.log(error);
1377                        }
1378
1379                    });
1380
1381                }
1382            }
1383        });
1384
1385        // pw 찾기
1386        $("#btn_findPw").on("click", function(){
1387            if(ObjectUtils.isEmpty($("#pw_prime_id").val()) || ObjectUtils.isEmpty($("#pw_prime_name").val()) || ObjectUtils.isEmpty($("#pw_prime_email").val()) ){
1388                alert("회원 정보를 입력하세요.");
1389                return false;
1390            }else{
1391                //email validation
1392                var email = $("#pw_prime_email").val();
1393                var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
1394
1395                if (!regExp.test(email)) {
1396                    alert("이메일 형식이 맞지 않습니다.");
1397                    return false;
1398                }else{
1399
1400                    var obj = {
1401                        memberId : $("#pw_prime_id").val(),
1402                        memberName : $("#pw_prime_name").val(),
1403                        memberEmail :$("#pw_prime_email").val()
1404                    };
1405
1406                    $.ajax({
1407
1408                        url: "/rest/findPassword",
1409                        type: "POST",
1410                        contentType: "application/json",
1411                        dataType:"JSON",
1412                        data: JSON.stringify(obj),
1413                        beforeSend:function(){
1414                            var html = "<div id='notify' style='margin-top:1px;'><span style='color:red; font-weight:bold;'>잠시만 기다려주세요.</span></div>";
1415                            $("#btn_findPw").before(html);
1416                        },
1417                        success: function(data){
1418
1419                            $('#notify').remove();
1420                            if(data.message == "SUCCESS"){
1421                                alert("입력하신 이메일로 임시 비밀번호를 발송하였습니다.");
1422                            }else{
1423                                alert("일치하는 회원 정보가 없습니다.");
1424                            }
1425
1426                        },
1427                        error: function (error){
1428                            console.log(error);
1429                        }
1430
1431                    });
1432                }
1433            }
1434
1435        });
1436        
1437        //회원가입 이용약관 페이지
1438        $("#apply").on('click',function(){
1439        	var agree_02 = $('input:checkbox[id="agree_02"]').is(":checked");
1440        	var agree_03 = $('input:checkbox[id="agree_03"]').is(":checked");
1441        	if(agree_02 == true &&  agree_03  == true){
1442        		$("#agreeCheckYn").val("Y");
1443				document.agreeForm.action = '/member/info';
1444				document.agreeForm.submit();        	         
1445        	         
1446        	}else{
1447        		$("#agreeCheckYn").val("N");
1448        		alert("약관에 동의 하시기 바랍니다.");
1449        		return false;
1450        	}
1451
1452        });
1453        
1454        //회원가입 동의 페이지
1455        $("#user-create-apply").on("click", function(){
1456
1457            var chk = document.getElementById("info-create-apply").checked;
1458            var name = $("#name").val();
1459            var email = $("#email").val();
1460
1461            if(!chk){
1462                alert("약관에 동의 하시기 바랍니다.");
1463                $('#info-create-apply').focus();
1464                return false;
1465            }
1466
1467            if(ObjectUtils.isEmpty(name)){
1468                alert("이름을 입력하세요.");
1469                $('#name').focus();
1470                return false;
1471            }
1472
1473            if(ObjectUtils.isEmpty(email)){
1474                alert("이메일을 입력하세요.");
1475                $('#email').focus();
1476                return false;
1477            }else{
1478                var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
1479                if (!regExp.test(email)) {
1480                    alert("이메일 형식이 맞지 않습니다.");
1481                    return false;
1482                }
1483            }
1484
1485			var url = "/member/join?name="+name+"&email="+email;
1486			var form = document.createElement("form");
1487			form.setAttribute("action", url);
1488			form.setAttribute("method", "post");
1489			var field = document.createElement("input");
1490			field.setAttribute("type", "hidden");
1491			field.setAttribute("name", "name");
1492			field.setAttribute("value", name);
1493			form.appendChild(field);
1494
1495			var field = document.createElement("input");
1496			field.setAttribute("type", "hidden");
1497			field.setAttribute("name", "email");
1498			field.setAttribute("value", email);
1499			form.appendChild(field);
1500
1501			var field = document.createElement("input");
1502			field.setAttribute("type", "hidden");
1503			field.setAttribute("name", "chk");
1504			field.setAttribute("value", chk);
1505			form.appendChild(field);
1506
1507			document.body.appendChild(form);
1508			form.submit();
1509
1510        });
1511
1512        $("#address_find").on("click", function(){
1513
1514            new daum.Postcode({
1515                oncomplete: function(data) {
1516
1517                    // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
1518
1519                    // 각 주소의 노출 규칙에 따라 주소를 조합한다.
1520                    // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
1521                    var addr = ''; // 주소 변수
1522                    var extraAddr = ''; // 참고항목 변수
1523
1524                    //사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
1525                    if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
1526                        addr = data.roadAddress;
1527                    } else { // 사용자가 지번 주소를 선택했을 경우(J)
1528                        addr = data.jibunAddress;
1529                    }
1530
1531                    // 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다.
1532                    if(data.userSelectedType === 'R'){
1533                        // 법정동명이 있을 경우 추가한다. (법정리는 제외)
1534                        // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
1535                        if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
1536                            extraAddr += data.bname;
1537                        }
1538                        // 건물명이 있고, 공동주택일 경우 추가한다.
1539                        if(data.buildingName !== '' && data.apartment === 'Y'){
1540                            extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
1541                        }
1542                        // 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
1543                        if(extraAddr !== ''){
1544                            extraAddr = ' (' + extraAddr + ')';
1545                        }
1546                        // 조합된 참고항목을 해당 필드에 넣는다.
1547                        //  document.getElementById("sample6_extraAddress").value = extraAddr;
1548
1549                    } 
1550
1551                    // 우편번호와 주소 정보를 해당 필드에 넣는다.
1552                    document.getElementById('memberZipcode').value = data.zonecode;
1553                    document.getElementById("memberAddress").value = addr + extraAddr ;
1554
1555                    // 커서를 상세주소 필드로 이동한다.
1556                    document.getElementById("memberAddressDetail").focus();
1557                }
1558            }).open();
1559
1560        });
1561
1562        $("#receive_address_find").on("click", function(){
1563
1564            new daum.Postcode({
1565                oncomplete: function(data) {
1566
1567                    // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
1568
1569                    // 각 주소의 노출 규칙에 따라 주소를 조합한다.
1570                    // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
1571                    var addr = ''; // 주소 변수
1572                    var extraAddr = ''; // 참고항목 변수
1573
1574                    //사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
1575                    if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
1576                        addr = data.roadAddress;
1577                    } else { // 사용자가 지번 주소를 선택했을 경우(J)
1578                        addr = data.jibunAddress;
1579                    }
1580
1581                    // 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다.
1582                    if(data.userSelectedType === 'R'){
1583                        // 법정동명이 있을 경우 추가한다. (법정리는 제외)
1584                        // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
1585                        if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
1586                            extraAddr += data.bname;
1587                        }
1588                        // 건물명이 있고, 공동주택일 경우 추가한다.
1589                        if(data.buildingName !== '' && data.apartment === 'Y'){
1590                            extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
1591                        }
1592                        // 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
1593                        if(extraAddr !== ''){
1594                            extraAddr = ' (' + extraAddr + ')';
1595                        }
1596                        // 조합된 참고항목을 해당 필드에 넣는다.
1597                        //  document.getElementById("sample6_extraAddress").value = extraAddr;
1598
1599                    } 
1600
1601                    // 우편번호와 주소 정보를 해당 필드에 넣는다.
1602                    document.getElementById('receiveMemberZipcode').value = data.zonecode;
1603                    document.getElementById("receiveMemberAddress").value = addr + extraAddr ;
1604
1605                    // 커서를 상세주소 필드로 이동한다.
1606                    document.getElementById("receiveMemberAddressDetail").focus();
1607                }
1608            }).open();
1609
1610        });
1611        
1612        $("#adress_check").on("click", function(){
1613        	if($("#adress_check").is(":checked")){
1614	        	$("#receiveName").val($("#memberName").val());
1615	        	$("#receiveMemberZipcode").val($("#memberZipcode").val());
1616	        	$("#receiveMemberAddress").val($("#memberAddress").val());
1617	        	$("#receiveMemberAddressDetail").val($("#memberAddressDetail").val());
1618        	}else{
1619        		$(".receiveFieldClass").val("");
1620        	}
1621        });
1622        
1623        //회원정보 변경
1624        $("#memberUpdate").on("click", function(){
1625			
1626            var compare = $(".memberPassword") ;
1627            
1628            var passwordReg = /^(?!((?:[A-Za-z]+)|(?:[~!@#$%^&*()_=]+)|(?:[0-9]+))$)[A-Za-z\d~!@#$%^&*()_=]{8,}$/;
1629            
1630            if (!passwordReg.test(compare[0].value)){
1631                alert("비밀번호 형식에 맞지 않습니다.");   return false;
1632            }
1633
1634            if(ObjectUtils.isNotEmpty(compare[0].value) || ObjectUtils.isNotEmpty(compare[1].value)){
1635
1636                if(ObjectUtils.isNotEmpty(compare[0].value) && ObjectUtils.isNotEmpty(compare[1].value)){
1637
1638                    if( compare[0].value != compare[1].value ){
1639                        $(".notify_password").text("비밀번호가 일치하지 않습니다.");
1640                        return false;
1641                    }
1642                }else{
1643                    $(".notify_password").text("비밀번호를 입력해주세요.");
1644                    return false;
1645                }
1646            }
1647
1648            // text 초기화
1649            $(".notify_password").text('');
1650
1651            var obj = {};
1652            var arr = $("#form_memberUpdate").serializeArray();
1653
1654            if(arr){
1655                obj = {};
1656                jQuery.each(arr, function() {
1657                    if(this.name == "receiveEmailYn" ){
1658                        this.value ="Y";
1659                    }
1660
1661                    obj[this.name] = this.value;
1662                });
1663            }
1664
1665            var phoneNumber = $("#phoneNumber").val();
1666            obj["memberNumberPhone"] = phoneNumber;
1667			
1668		   // var smsCheckValue = $("input[name='sms_check']:checked").val();
1669		    //obj["receiveEmailYn"] = smsCheckValue;
1670
1671            $.ajax({
1672
1673                url: "/rest/updateUser",
1674                type: "POST",
1675                contentType: "application/json",
1676                dataType:"JSON",
1677                data: JSON.stringify(obj),
1678                success: function(data){
1679
1680                    if(data.message == "SUCCESS"){
1681                        alert("회원정보가 변경 되었습니다.");
1682                        location.href="/";
1683                    }else{
1684                        alert("다시 시도해주세요.");
1685                    }
1686                    //pw inputbox reset
1687                    $(".memberPassword").val('');
1688                },
1689                error: function (error){
1690                    console.log(error);
1691                }
1692            });
1693
1694        });
1695        
1696
1697        
1698
1699        $("#idChK").on("click", function(){
1700
1701            var memberId = $("input[name='memberId']").val();
1702            var obj = {"memberId" : memberId};
1703            
1704            var idReg = /^[a-zA-Z0-9]{4,10}$/;
1705            
1706            if (!idReg.test(memberId)){
1707                alert("아이디 형식에 맞지 않습니다.");
1708                $("input[name='memberId']").focus();
1709                return false;
1710            }
1711
1712            /*
1713            if (memberId.length < 4 || memberId.length > 10){
1714                alert("사용 규칙 안내:\n\n회원 아이디란에 4자리 이상, 10자리 미만으로 입력해 주십시오.");
1715                $("input[name='memberId']").focus();
1716                return false;
1717            }
1718
1719            if(!memberId.match(/^[a-zA-Z0-9]+$/)){
1720                alert("사용 규칙 안내:\n\n영문자, 숫자 외에 다른 문자가 포함되었습니다.\n영문자, 숫자만 입력이 가능합니다.");
1721                $("input[name='memberId']").focus();
1722                return false;
1723            }
1724            */
1725
1726            $.ajax({
1727
1728                url: "/rest/idChk",
1729                type: "POST",
1730                contentType: "application/json",
1731                dataType:"JSON",
1732                data: JSON.stringify(obj),
1733                success: function(data){
1734
1735                    if(data == 0){
1736
1737                        $("#notify_id").html("<font color='#0073AA'>사용 가능한 아이디 입니다.</font>");
1738                        $("#uniq_id").val(memberId);
1739
1740                    }else{
1741
1742                        $("#notify_id").html("<font color='#B73535'>이미 사용중인 아이디 입니다.</font>");
1743                        $("input[name='memberId']").val('');
1744                    }
1745
1746                },
1747                error: function (error){
1748                    console.log(error);
1749                }
1750            });
1751
1752        });
1753
1754        $("#nickChK").on("click", function(){
1755
1756            var memberNickname = $("input[name='memberNickname']").val();
1757            var obj = {"memberNickname" : memberNickname};
1758
1759
1760            if (memberNickname.length < 3 || memberNickname.length > 10){
1761                alert("사용 규칙 안내:\n\n회원 닉네임란에 3자리 이상, 10자리 미만으로 입력해 주십시오.");
1762                $("input[name='memberNickname']").focus();
1763                return false;
1764            }
1765
1766            if (!memberNickname.match(/^[가-힣a-zA-Z0-9_-]+$/)){
1767                alert("사용 규칙 안내:\n\n한글, 영문자, 숫자, _, - 외에 다른 문자가 포함되었습니다.\n한글, 영문자, 숫자, _, - 만 입력이 가능합니다.");
1768                $("input[name='memberNickname']").focus();
1769                return false;
1770            }
1771
1772
1773            $.ajax({
1774
1775                url: "/rest/nickChk",
1776                type: "POST",
1777                contentType: "application/json",
1778                dataType:"JSON",
1779                data: JSON.stringify(obj),
1780                success: function(data){
1781
1782                    if(data == 0){
1783                        $("#notify_nick").html("<font color='#0073AA'>사용가능하신 닉네임입니다.</font>");
1784                        $("#uniq_nicname").val(memberNickname);
1785
1786                    }else{
1787
1788                        $("#notify_nick").html("<font color='#B73535'>이미 사용중입니다 다시 입력하세요.</font>");
1789                        $("input[name='memberNickname']").val('');
1790                    }
1791
1792
1793                },
1794                error: function (error){
1795                    console.log(error);
1796                }
1797            });
1798
1799        });
1800  
1801
1802      //회원가입
1803        $("#memberSign").on("click", function(){
1804            // Id Checked
1805            if ($('#uniq_id').val() == "" || $('#uniq_id').val() != $("input[name='memberId']").val()){
1806                alert("아이디 중복 검사는 필수입니다.");   return false;
1807            }
1808            
1809            var passwordReg = /^(?!((?:[A-Za-z]+)|(?:[~!@#$%^&*()_=]+)|(?:[0-9]+))$)[A-Za-z\d~!@#$%^&*()_=]{8,}$/;
1810            
1811            if (!passwordReg.test($('#passwd1').val())){
1812                alert("비밀번호 형식에 맞지 않습니다.");   return false;
1813            }
1814
1815            /*
1816            // Password Checked(자릿수)
1817            if ($('#passwd1').val().length < 4){
1818                alert("사용 규칙 안내:\n\n패스워드는 최소 4자리 이상  입력하세요.");   return false;
1819            }
1820
1821            // Password Checked(입력형식)
1822            if ($('#passwd1').val().match(/(#|--|=|\')/) ){
1823                alert("패스워드 사용 규칙 안내:\n\n패스워드에 [#,--,=,']은 포함시킬수 없습니다.");   return false;
1824            }
1825			*/
1826
1827            // Password Checked(비교)
1828            if ($('#passwd1').val() != $('#passwd2').val()){
1829                alert("비밀번호 확인이 일치하지 않습니다.");   return false;
1830            }
1831
1832            var emailtext=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
1833            
1834            // Email Checked
1835            if ($('#memberEmail').val() == "" || $('#memberEmail').val().match(/(@)/) == null ||(!emailtext.test($('#memberEmail').val()))){
1836                alert("이메일 주소를 다시 확인해 주세요.");   return false;
1837            }
1838
1839
1840            var obj = {};
1841            var arr = $("#form_memberSign").serializeArray();
1842
1843            if(arr){
1844                obj = {};
1845                jQuery.each(arr, function(index,item) {
1846                    if(this.name == "receiveSmsYn" ){
1847                        this.value ="Y";
1848                    }
1849
1850					obj[this.name] = this.value;
1851
1852                });
1853            }
1854
1855            var phoneNumber = $(".phoneNumber").val();
1856            if (!phoneNumber || phoneNumber.trim() == "") {
1857                alert("휴대전화를 입력하세요.");
1858                $('#memberPhone').focus();
1859                return false;
1860            }
1861            obj["memberNumberPhone"] = phoneNumber;
1862			
1863		    var smsCheckValue = $("input[name='sms_check']:checked").val();
1864		    obj["receiveSmsYn"] = smsCheckValue;
1865			
1866			var joinFrom = ObjectUtils.deviceChk() ? 'cath_mobile' : 'cath_pc';
1867			obj["joinFrom"] = joinFrom;
1868			
1869			var baptismal = $("#baptismal").val();
1870            obj["baptismal"] = baptismal;
1871            
1872            $.ajax({
1873
1874                url: "/rest/createUser",
1875                type: "POST",
1876                contentType: "application/json",
1877                dataType:"JSON",
1878                data: JSON.stringify(obj),
1879                success: function(data){
1880                	console.log(data);
1881                    if(data.message == "SUCCESS"){
1882                        location.href ="/member/joinCelebration?memberId=" + data.memberId;
1883                    }else{
1884                        alert("다시 시도해주세요.");
1885                        location.href ="/member/join";
1886                    }
1887
1888                },
1889                error: function (error){
1890                    console.log(error);
1891                }
1892            });
1893        });
1894
1895        //회원탈퇴
1896        $("#memberLeave").on("click", function(){
1897
1898            var flag = confirm("정말 탈퇴하시겠습니까?");
1899            if(flag){
1900				var password = $("#password").val();
1901				var quitReason = $("#quitReason").val();
1902                var obj ={
1903					password: password,
1904					quitReason: quitReason
1905				};
1906
1907                $.ajax({
1908
1909                    url: "/rest/deleteUser",
1910                    type: "PUT",
1911                    contentType: "application/json",
1912                    dataType:"JSON",
1913                    data:JSON.stringify(obj),
1914                    success: function(data){
1915
1916                        if(data == 1 ){
1917                            alert("회원탈퇴가 완료되었습니다.");
1918                            location.href="/j_spring_security_logout" ;
1919                        }else{
1920                            alert("다시 시도해주세요.");
1921                        }
1922                    },
1923                    error: function (error){
1924                        console.log(error);
1925                    }
1926                });
1927
1928            }
1929
1930        });
1931        
1932        //승급신청
1933        $("#levelupRegist").on("click", function(){
1934        	var levelupNumber = $(".levelupNumber");
1935        	
1936            if(ObjectUtils.isEmpty(levelupNumber[0].value)){
1937                alert("전화번호를 입력해주세요.");
1938                return false;
1939            }
1940            if(ObjectUtils.isEmpty(levelupNumber[1].value)){
1941                alert("전화번호를 입력해주세요.");
1942                return false;
1943            }
1944            if(ObjectUtils.isEmpty(levelupNumber[2].value)){
1945                alert("전화번호를 입력해주세요.");
1946                return false;
1947            }            
1948            
1949            var levelupBirthdate = $(".levelupBirthdate");
1950            
1951            if(ObjectUtils.isEmpty(levelupBirthdate[0].value)){
1952                alert("생년월일을 입력해주세요.");
1953                return false;
1954            }
1955            if(ObjectUtils.isEmpty(levelupBirthdate[1].value)){
1956                alert("생년월일을 입력해주세요.");
1957                return false;
1958            }
1959            if(ObjectUtils.isEmpty(levelupBirthdate[2].value)){
1960                alert("생년월일을 입력해주세요.");
1961                return false;
1962            }            
1963            
1964            if(ObjectUtils.isEmpty($("#levelupAffl1").val())){
1965                alert("소속정보를 입력해주세요.");
1966                return false;
1967            }  
1968            if(ObjectUtils.isEmpty($("#levelupAffl2").val())){
1969                alert("소속정보를 입력해주세요.");
1970                return false;
1971            }  
1972
1973            var obj = {};
1974            var arr = $("#form_levelup").serializeArray();
1975            if(arr){
1976                obj = {};
1977                jQuery.each(arr, function() {
1978                    obj[this.name] = this.value;
1979                });
1980            }
1981            
1982			obj["levelupNumber"] = levelupNumber[0].value +"-"+ levelupNumber[1].value +"-"+ levelupNumber[2].value;
1983			obj["levelupBirthdate"] = levelupBirthdate[0].value +"-"+ ObjectUtils.pad(levelupBirthdate[1].value,2) +"-"+ ObjectUtils.pad(levelupBirthdate[2].value,2);
1984
1985            $.ajax({
1986                url: "/rest/updateLevelup",
1987                type: "POST",
1988                contentType: "application/json",
1989                dataType:"JSON",
1990                data: JSON.stringify(obj),
1991                success: function(data){
1992                    if(data.message == "SUCCESS"){
1993                        alert("승급신청이 완료되었습니다.\n관리자가 신청서 확인 후 결과를 안내해드리겠습니다.");
1994                        location.href ="/myPage/free";
1995                    }else if(data.message == "DUPLICATION"){
1996                        alert("이미 승급신청을 하셨습니다.\n관리자가 신청서 확인 후 결과를 안내해드리겠습니다.");
1997                        location.href ="/myPage/free";
1998                    }else if(data.message == "COMPLETE"){
1999                        alert("이미 승급이 완료되었습니다.");
2000                        location.href ="/myPage/free";                    	                        
2001                    }else{
2002                        alert("다시 시도해주세요.");
2003                        location.href ="/myPage/levelUp";
2004                    }
2005                },
2006                error: function (error){
2007                    console.log(error);
2008                }
2009            });
2010
2011        });        
2012    }
2013};
2014
2015var EVENT = {
2016
2017  init : function(){
2018    var self = this ;
2019    self.eventBind();
2020  },
2021	eventBind : function(){
2022		var self = this ;
2023		
2024		$("#relSelect").on("change",function(){
2025			var seq = Number($("#relSelect :selected").val());
2026			//관련지난칼럼 제외
2027			if(seq > 0 ){
2028				SRV.goPage("/eventDetail?seq="+seq,'_self');
2029			}
2030		});
2031
2032		$("#event_regist").click(function(){
2033			var seq = ObjectUtils.getParameterByName('seq');
2034			if((ObjectUtils.isEmpty(seq))){
2035				alert("잘못된 접근입니다.");
2036				return false;
2037			}else{
2038				$("input[name='seq']").val(seq);
2039			}
2040			var depart = $("input[name='txt_depart']").val();
2041			var position = $("input[name='txt_position']").val();
2042			var name = $("input[name='txt_name']").val();
2043			var phone = $("input[name='txt_phone']").val();
2044			var email = $("input[name='txt_email']").val();
2045
2046			if((ObjectUtils.isEmpty(depart))){
2047				alert("회사(학교)명 을 입력하세요.");
2048				return false;
2049			}
2050			if((ObjectUtils.isEmpty(position))){
2051				alert("직책을 입력하세요.");
2052				return false;
2053			}
2054			if((ObjectUtils.isEmpty(name))){
2055				alert("직책을 입력하세요.");
2056				return false;
2057			}
2058			if((ObjectUtils.isEmpty(phone))){
2059				alert("연락처를 입력하세요.");
2060				return false;
2061			}
2062			if((ObjectUtils.isEmpty(email))){
2063				alert("이메일을 입력하세요.");
2064				return false;
2065			}else{
2066				var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
2067				if (!regExp.test(email)) {
2068					alert("이메일 형식이 맞지 않습니다.");
2069					return false;
2070				}
2071			}
2072
2073			var obj = {};
2074			var arr = $("#event_member_regist").serializeArray();
2075
2076			if(arr){
2077				obj = {};
2078				jQuery.each(arr, function(index,item) {
2079					obj[this.name] = this.value;
2080				});
2081			}
2082			$.ajax({
2083				url: "/rest/eventRegist",
2084				type: "POST",
2085				contentType: "application/json",
2086				dataType:"JSON",
2087				data: JSON.stringify(obj),
2088				success: function(data){
2089
2090					if(data.message == 'SUCCESS' ){
2091						alert("사전등록 되었습니다.");
2092					}else{
2093						alert("다시 시도해주세요.");
2094						location.href="/" ;
2095					}
2096				},
2097				error: function (error){
2098					console.log(error);
2099				}
2100			});
2101		});
2102	}
2103};
2104var servicePopup = {
2105
2106     /*코드성 데이터 */
2107    limitEnum: {
2108        D : {name: "하루동안"},
2109        W : {name: "일주일동안"},
2110        N : {name: "다시"}
2111    },
2112
2113    init: function () {
2114
2115        var self = this;
2116        var pageSeq = $('body').data("pageSeq");
2117        var date = new Date();
2118        var year = date.getFullYear();
2119        var month = date.getMonth()+1;
2120        var day = date.getDate();
2121        var today = year + "-" + month + "-" + day;
2122        self.selectLimitPopupList(today, pageSeq,self);
2123        
2124        // 웹사이트 사이즈 체크
2125		$(window).resize(function() {
2126			self.adjustPopupPositions();
2127		});
2128		// 로딩 끝난 이후에 팝업 위치 수정
2129		$(window).on('load', function() {
2130			servicePopup.adjustPopupPositions();
2131		});
2132
2133    },
2134    
2135	adjustPopupPositions: function() {
2136		var self = this;
2137		var windowWidth = $(window).width();
2138		var bodyWidth = $('body').width(); // 현재 body의 너비를 가져옴
2139		var popups = $('.modal-content'); // 모든 팝업 선택
2140		var lastTop = 10; // 초기 팝업의 상단 위치 설정
2141
2142		$.each(popups, function(index, popup) {
2143			var $popup = $(popup);
2144			var popupWidth = $popup.outerWidth();
2145			var popupHeight = $popup.outerHeight();
2146
2147			if (windowWidth < 1199) {
2148				// 모바일 뷰일 때, 팝업을 화면 중앙에 배치
2149				$popup.css({
2150					'left': '0px', // 화면 중앙에 위치
2151					//'transform': 'translateX(12%)', // 중앙 정렬을 위해 너비의 절반만큼 왼쪽으로 이동
2152					'top': lastTop + 'px' // 이전 팝업의 하단에서 시작하되 추가 간격을 포함
2153				});
2154				lastTop += popupHeight + 20; // 다음 팝업의 시작점을 계산 (현재 팝업의 높이 + 20px 간격)
2155			} else {
2156				// 데스크탑 뷰일 때, 각각의 위치에 따라 팝업 배치
2157				$popup.css({
2158					'transform': '', // 데스크탑에서는 transform 속성 제거
2159					'top': '10px' // 모든 팝업을 같은 높이에서 시작
2160				});
2161				switch (index) {
2162					case 0:
2163						$popup.css('left', '0px'); // 화면의 가장 왼쪽
2164						break;
2165					case 1:
2166						$popup.css('left', (bodyWidth / 2 - popupWidth / 2) + 'px'); // 화면 중앙
2167						break;
2168					case 2:
2169						$popup.css('left', (bodyWidth - popupWidth - 10) + 'px'); // 화면의 가장 오른쪽
2170						break;
2171					default:
2172						$popup.css('left', '100%'); // 화면 밖
2173				}
2174				$popup.css('top', '10px');
2175			}
2176		});
2177	},
2178
2179    popupClose : function (name, cookieValue, day) {
2180
2181        var self = this;
2182        self.setCookie(name, cookieValue, day);
2183
2184    },
2185
2186    layerPopupClose : function (id) {
2187
2188        $('#'+id).attr("style", "display:none;");
2189
2190    },
2191
2192    setCookie : function (name,value,day) { // 쿠키이름, 쿠키값, 쿠키삭제되는 날짜 (쿠키가 없으면 팝업
2193        // 보여주고, 있으면 안보여주고) value가 false일때도 안보여줌
2194
2195        var date = new Date();
2196        date.setTime(date.getTime() + (day*24*60*60*1000));
2197        document.cookie=escape(name)+'='+escape(value)+';expires=' + date.toUTCString() + ';';
2198
2199    },
2200
2201    getCookie : function (name) {
2202
2203        var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
2204        var result =  value? value[2] : null;
2205        return result;
2206
2207    },
2208
2209    deleteCookie : function (name) {
2210
2211        var date = new Date();
2212        date.setDate(date.getDate() -1);
2213        var expiresDate = date.toUTCString();
2214
2215        document.cookie=name+'=true; expires='+expiresDate+';';
2216
2217    },
2218
2219
2220    selectLimitPopupList : function (today, pageSeq,self) {
2221
2222        var self = this;
2223        var searchData = {
2224            nowDate : today,
2225            pageSeq : pageSeq
2226        };
2227
2228        $.ajax({
2229            type : "GET",
2230            data : searchData,
2231            url : "/rest/popup",
2232            success: function (data) {
2233                self.popupOpen(data);
2234            }
2235        });
2236    },
2237
2238    popupOpen : function (data) {
2239
2240        var self = this;
2241
2242        $.each(data, function (i, item) {
2243
2244            var target ='';
2245            var expireDate = 0;
2246            var setValue = true;
2247            var cookieName = 'cookieName'+item.popupSeq;
2248            var cookieStatus = servicePopup.getCookie(cookieName);
2249
2250            (item.popupLinkOption == 'N'? target = '_blank':'');
2251
2252            if(item.popupLimitSetting == 'N'){
2253                setValue = false;
2254                expireDate = 10000;
2255            }else if(item.popupLimitSetting == 'W'){
2256                expireDate = 7;
2257            }else if(item.popupLimitSetting == 'D'){
2258                expireDate = 1;
2259            }
2260
2261            if(ObjectUtils.isNotEmpty(cookieStatus)){
2262                if(cookieStatus == 'false'){
2263                    //다시보지않는 팝업
2264                }
2265            }else{
2266            	var winWidth = document.body.clientWidth;	// 현재창의 너비
2267            	var bodyWidth = 1080;
2268            	
2269                // 팝업 위치지정
2270                var popupX = (bodyWidth / 2) - (item.popupWidth / 2);
2271                var popupY = (window.screen.height-item.popupHeight)/2;
2272
2273                if(item.popupLocation == 'L'){     // 왼쪽
2274                    popupX = 0;
2275                }else if(item.popupLocation == 'R'){// 오른쪽
2276                    popupX=bodyWidth-item.popupWidth;
2277                }
2278                // 2020.03.16 myahn
2279                // 팝업 타입 추가(레이어 팝업:L, 윈도우팝업:W)
2280                if(item.popupType == "L") {
2281
2282                	var layerId = "layerPopup_" + item.popupSeq;
2283                    var layerDiv = document.createElement("div");
2284                    var layerInnerHTML = "";
2285
2286                    document.body.appendChild(layerDiv);
2287
2288                    layerDiv.id = layerId;
2289                    layerDiv.setAttribute("class","modal-content");
2290                    layerDiv.style.position = "relative";
2291                    layerDiv.style.display = "none";
2292                    //layerDiv.style.top = popupY + 'px';
2293                    layerDiv.style.left = popupX + 'px';
2294                    layerDiv.style.width = item.popupWidth+20 + 'px';
2295                    layerDiv.style.height = "auto";
2296                    layerDiv.style.backgroundColor = "#fff";
2297                    layerDiv.style.zIndex = 1000;
2298
2299                    
2300                    
2301                    layerInnerHTML += '	<div class="modal-body" style="padding:0px;">';
2302                    layerInnerHTML += '		<div class="pop-container">';
2303
2304                    if(item.popupKinds == 'I') {
2305
2306                        layerInnerHTML += '			<div class="pop-ad-container" style="padding:10px;">';
2307                        if(ObjectUtils.isNotEmpty(item.popupLinkUrl)){
2308                        	layerInnerHTML += '			<a href="'+item.popupLinkUrl+'" target="'+target+'"><img src="https:'+item.popupImgUrl+'" style="width : '+item.popupWidth+'px; height: '+item.popupHeight+'px"></a>';
2309                        }else{
2310                        	layerInnerHTML += '			<img src="https:'+item.popupImgUrl+'" style="width : '+item.popupWidth+'; height: '+item.popupHeight+'">';
2311                        }
2312                        layerInnerHTML += '			</div>';
2313                    }
2314                    else {
2315                        layerInnerHTML += '			<div class="pop-ad-container" style="padding:10px;height:' + (item.popupHeight-100) + ';">';
2316                    	layerInnerHTML +=          		item.popupBody;
2317                        layerInnerHTML += '			</div>';
2318                    }
2319                    layerInnerHTML += '			<div class="ad-under-opt" style="border-top:1px #d7d7d7 solid;">';
2320                    layerInnerHTML += '				<div class="form-check-inline pl15" style="margin-top:5px;margin-botton:5px;">';
2321                    layerInnerHTML += '					<input onclick="servicePopup.popupClose(\''+cookieName+'\',\''+setValue+'\',\''+expireDate+'\'); servicePopup.layerPopupClose(\''+layerId+'\');" name="'+item.popupSeq+'popup_limit_value"  type="checkbox" class="form-check-input">';
2322                    layerInnerHTML += '         		<label type="checkbox"class="form-check-label">'+self.limitEnum[item.popupLimitSetting].name+' 보지 않기</label>';
2323                    layerInnerHTML += '     		</div>';
2324                    layerInnerHTML += '     		<button type="button" class="btn btn-info" onclick="servicePopup.layerPopupClose(\'' + layerId + '\');">닫기</button>';
2325                    layerInnerHTML += '			</div>';
2326                    layerInnerHTML += '		</div>';
2327                    layerInnerHTML += '	</div>';
2328
2329                    layerDiv.innerHTML = layerInnerHTML;
2330                    $('#'+layerId).wrap('<div style="width: auto; position:absolute; top:'+popupY+'px; "><div style="width: auto; display:block; margin:0px auto;"></div></div>');
2331                    layerDiv.style.display  = "block";
2332                    $('#'+layerId).draggable({'cancel':'.ad-under-opt'});
2333				}else{
2334                	winWidth = document.body.clientWidth;	// 현재창의 너비
2335
2336                    // 팝업 위치지정
2337                    popupX = (window.screen.width / 2) - (200 / 2);
2338                    popupY = (window.screen.height / 2) - 300;
2339
2340                    if(item.popupLocation == 'L'){     // 왼쪽
2341                        popupX=0;
2342                    }else if(item.popupLocation == 'R'){// 오른쪽
2343                        popupX=winWidth;
2344                    }
2345                	
2346                    var option = "width="+ (item.popupWidth+20) + "px, height="+ (item.popupHeight+60) + "px, left="+ popupX + ",  top="+ popupY + "";
2347                	var w = window.open("", "popupName"+item.popupSeq, option);
2348                    var $h = $(w.document.head);
2349                    var $w = $(w.document.body);
2350                    var windowPopup = "";
2351                    var windowHead = "";
2352
2353                	windowHead += '<meta charset="utf-8">';
2354                    windowHead += '<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">';
2355
2356                    if(item.popupKinds == 'I'){
2357
2358                        windowPopup += '<div class="pop-container">';
2359                        windowPopup += '    <div class="pop-ad-container">';
2360
2361                        if(ObjectUtils.isNotEmpty(item.popupLinkUrl)){
2362							windowPopup += '        <a href="'+item.popupLinkUrl+'" target="'+target+'"><img src="https://'+item.popupImgUrl+'" style="width : '+item.popupWidth+'; height: '+item.popupHeight+'"></a>';
2363                        }else{
2364							windowPopup += '            <img src="https:'+item.popupImgUrl+'">';
2365                        }
2366                        windowPopup += '    </div>';
2367                        windowPopup += '    <div class="ad-under-opt">';
2368                        windowPopup += '        <div class="form-check-inline pl15" style="margin-top:20px;">';
2369                        windowPopup += '            <input onclick="opener.servicePopup.popupClose(\''+cookieName+'\',\''+setValue+'\',\''+expireDate+'\'); window.close();" id="values" name="'+item.popupSeq+'popup_limit_value" type="checkbox" class="form-check-input">';
2370                        windowPopup += '            <label type="checkbox"class="form-check-label">'+self.limitEnum[item.popupLimitSetting].name+'보지 않기</label>';
2371                        windowPopup += '        </div>';
2372                        windowPopup += '    </div>';
2373                        windowPopup += '</div>';
2374						
2375                    }else{
2376						
2377                        windowPopup += '<div class="pop-container">';
2378                        windowPopup += '    <div class="pop-ad-container">';
2379                        windowPopup +=          item.popupBody;
2380                        windowPopup += '    </div>';
2381                        windowPopup += '    <div class="ad-under-opt">';
2382                        windowPopup += '        <div class="form-check-inline pl15" style="margin-top:20px;">';
2383                        windowPopup += '             <input onclick="opener.servicePopup.popupClose(\''+cookieName+'\',\''+setValue+'\',\''+expireDate+'\'); window.close();" name="'+item.popupSeq+'popup_limit_value"  type="checkbox" class="form-check-input">';
2384                        windowPopup += '             <label type="checkbox"class="form-check-label">'+self.limitEnum[item.popupLimitSetting].name+' 보지않기</label>';
2385                        windowPopup += '        </div>';
2386                        windowPopup += '     </div>';
2387                        windowPopup += '</div>';
2388                    }
2389
2390                    $h.html(windowHead);
2391                    $w.html(windowPopup);
2392
2393                }
2394            }
2395        });
2396
2397    },
2398};
2399// 회사소개
2400var ETC = {
2401    init : function () {
2402        var self = this;
2403        var pathName = location.pathname;
2404        
2405        console.log("ETC INIT");
2406        
2407        self.setMenu();
2408        self.eventBind();
2409        
2410        // 회사소개 중 메인인 경우 사고 게시판 리스트를 그려준다. 
2411		if (pathName == "/ncompany") {
2412			BOARD.boardList(1, 3, 4, "etc");
2413		}
2414    },
2415    renderInfo: function(boardInfo, boardList){
2416        var self = this;
2417        var html = "";
2418        if(boardInfo.useYn !== "N" && boardList.length > 0){
2419            for(var i=0; i< boardList.length; i++ ){
2420                html += `<li>\n`;
2421                html += `   <a href='/notificationDetail?seq=${boardList[i].contentSeq}' target="_blank" title="새창열림">\n`;
2422                html += `       ${boardList[i].contentSubject}\n`;
2423                html += `   </a>\n`;
2424                html += `</li>\n`;
2425            };
2426        };
2427        $("#ncompany_noti").html(html);
2428    },
2429    eventBind: function(){
2430        var self = this;
2431        // 서비스사업 탭
2432		$("#business_service .tab_btn > li").each(function(){
2433			$(this).click(function(){
2434				$(".company_content .tab_btn > li, .company_content .tab_content > div, .company_content .tab_cs_content > div").removeClass("on");
2435				$(this).addClass("on");
2436				var TabOn = $(this).attr("data-tab");
2437				$(".tab_content #" + TabOn).addClass('on');
2438				$(".tab_cs_content #" + TabOn).addClass('on');
2439			});
2440		});
2441        // 탭
2442        $("#company_service .tab_btn > li").each(function(){
2443			$(this).click(function(){
2444				$(".company_content .tab_btn > li, .company_content .tab_content > div").removeClass("on");
2445				$(this).addClass("on");
2446				var TabOn = $(this).attr("data-tab");
2447				$("#" + TabOn).addClass('on');
2448			});
2449		});
2450    	//Compnay 전체 카테고리 메뉴
2451		$(".company_header .cata_menu").mouseenter(function(){
2452			$(".header_wrap").addClass("on");
2453			$(".hd_logo img").attr("src",mediaData.mediaCdn + '/data1/'+ mediaData.mediaCode+'/resources/pc/common/images/h1_company_b.png');
2454		});
2455		$(".company_header .header_wrap").mouseleave(function(){
2456			$(".header_wrap").removeClass("on");
2457			$(".hd_logo img").attr("src",mediaData.mediaCdn + '/data1/'+ mediaData.mediaCode+'/resources/pc/common/images/h1_company_w.png');
2458		});          
2459    },
2460    setMenu: function(){
2461        var self = this;
2462        var html = "";
2463        var depth0 = (location.pathname).split("/")[1];
2464        var depth1 = (location.pathname).split("/")[2];
2465        var depth2 = (location.pathname).split("/")[3];
2466        if(depth0 == "periodical"){ 
2467			depth1 = (location.pathname).split("/")[1];
2468			depth2 = (location.pathname).split("/")[2];
2469		} else if(depth1 == "subscription"){
2470			depth1 = 'periodical';
2471		}
2472        var depth1Elem = $(`a[name='${depth1}']`);
2473
2474        // 1뎁스 메뉴 이름
2475        var depth1Name = depth1Elem.text();
2476        $("[name='dept1']").text(depth1Name);
2477
2478        // 1뎁스 이미지
2479        var imgIdx = depth1Elem.parent().index() + 1;
2480        var imgUrl = mediaData.mediaCdn + '/data1/'+ mediaData.mediaCode+'/resources/pc/common/images/temp_sub_0'+imgIdx+'.jpg';
2481        $(".sub_visual").css({"background":`url(${imgUrl})`});
2482
2483        // 2뎁스 메뉴 리스트
2484        var menuList = $(`ul[menu='${depth1}'] a`);
2485        for(var i=0; i <menuList.length; i++){
2486            var subName = $(menuList[i]).text();
2487            var subHref = $(menuList[i]).attr("href");
2488            
2489            // 2뎁스 메뉴 이름
2490            depth2 = depth2.split("-")[0];
2491            if(subHref.indexOf(depth2) > -1){
2492                $("[name='dept2']").text(subName);
2493            };
2494            html += `<li><a href="${subHref}">${subName}</a></li>\n`;
2495            $("#subMenu").html(html);
2496        };
2497    },
2498};
2499
2500var LIST = {
2501    init : function(){
2502        var self = this;
2503        var pathName = location.pathname.split("/").reverse();
2504        var newsGroup = pathName[0];
2505        var pageId = pathName[1];
2506        self.obj = {"page" : 1};
2507        
2508		// 더보기 페이지 유지
2509		var session_obj = JSON.parse(sessionStorage.getItem("session_obj"));
2510		if (session_obj) {
2511			var sessionNewsGroup = (session_obj.newsGroup != null) ? session_obj.newsGroup : -1;
2512			if (newsGroup === sessionNewsGroup) {
2513				var page = (session_obj.page != null) ? session_obj.page : 1;
2514				var list = (session_obj.list != null) ? session_obj.list : $(".gisa_list").children().map(function() {
2515					return $(this).prop('outerHTML');
2516				}).get().join('');
2517				
2518				$(".gisa_list").html(list);
2519				sessionStorage.clear();
2520				self.obj = {"page": page};
2521			}
2522		}
2523
2524        if(pageId === "photoList" || pageId === "list" || pageId === "list2" || pageId === "list3"){
2525            var pageName = $(".sub_menu li.on a").text();
2526            $(".list_tit pre").text(pageName);
2527        };
2528
2529        if(newsGroup === "writerList"){
2530            var param = new URLSearchParams(window.location.search);
2531            self.obj["id"] = param.get('id');
2532            self.obj["pageId"] = newsGroup;
2533        }else{
2534            self.obj["newsGroup"] = newsGroup;
2535            self.obj["pageId"] = pageId;
2536        }
2537
2538        var totalCnt = $("#totalCnt").val();
2539        totalCnt = ObjectUtils.commaAdd(totalCnt);
2540        $("#resultCnt").text("("+totalCnt+"ê±´)");
2541
2542        var mquery = window.matchMedia("(max-width: 992px)");
2543        mquery.newsGroup = newsGroup;
2544        self.modeCheck(mquery);
2545        
2546        //모바일<->PC 전환 X
2547        //테스트용 전환 코드
2548        mquery.addListener(self.modeCheck);
2549        self.eventBind();
2550    },
2551
2552    eventBind : function(){
2553        var self = this;
2554        var latestOn = $("a.view_type_01");
2555
2556        $("#mobile_list_type > a").click(function(e){
2557            var typeA = $(e.target).closest("a");
2558
2559            if (latestOn.get(0) === typeA.get(0)) {
2560                latestOn = typeA;
2561                return;
2562            }
2563
2564            latestOn.removeClass("active");
2565            typeA.addClass("active");
2566            latestOn = typeA;
2567
2568            var type = typeA.attr("name");
2569            var firstList = $(".news_box:first");
2570
2571            /*
2572            self.obj.page = 1;
2573            if(type === "photo"){
2574                firstList.removeClass("border0 p0 m0");
2575            }else{
2576                $(".media article_list").css("background","none");
2577                firstList.addClass("border0 p0 m0");
2578            }
2579            */
2580            var class_type = "m_type_" + type;
2581            $("#news_box").removeClass(function (index, classNames) {
2582                var current_classes = classNames.split(" ");
2583
2584                $.each(current_classes, function (index, class_name) {
2585                    if (/m_type_.*/.test(class_name)) {
2586                        $("#news_box").removeClass(class_name).addClass(class_type);
2587                    }
2588                });
2589            });
2590        });
2591
2592        $("#viewMore").click(function(){
2593            self.obj.page += 1;
2594            self.moreList();
2595        });
2596    },
2597
2598    modeCheck : function(x) {
2599        var self = this;
2600        var dtype = "none";
2601//        if (x.matches) {
2602          if(true){
2603            dtype = "block";
2604            var page = (x.newsGroup === undefined ? x.target.newsGroup : x.newsGroup);
2605            
2606            if(page !== "bestNews" && page !== "mainNews"){
2607                $(".new_article_list:nth-child(n+11)").remove(); 
2608            }
2609
2610			var totalArticle = $("#totalCnt").val();			
2611			var totalArticleParse = parseInt(totalArticle); 
2612			totalArticleParse += 1;
2613            if(totalArticleParse < 16){ $("#viewMore").hide()}
2614            else{$("#viewMore").show()}
2615        }
2616        $(".article_list_thumb.noimage").css("display",dtype);
2617    },
2618
2619    moreList : function (){
2620        var self = this;
2621        $.ajax({
2622            url: "/rest/page",
2623            type: "GET",
2624            contentType: "application/json",
2625            dataType:"JSON",
2626            data: self.obj,
2627            success: function(data){
2628                if(data["pages"].last){$("#viewMore").hide()};
2629                if(!ObjectUtils.isEmpty(data["pages"].content)) {
2630                    var html = "";
2631                    var list = data["pages"].content;
2632					var contentsUrl = data["contentsUrl"];					
2633
2634                    for(var i=0; i < list.length; i++){
2635						var imgSrc = list[i]["imgSrc"];
2636						var series = list[i]["series"];
2637						var sectionName = "";
2638						var ppDate = list[i]["paperDateReleased"];
2639						var frDate = list[i]["firstReleaseDate"];
2640						var paperHosu = list[i]["paperHosu"];
2641						var paperMyun = list[i]["paperMyun"];
2642						
2643						var date = new Date(ppDate);
2644						var year = date.getFullYear();
2645						var month = ObjectUtils.pad(date.getMonth()+1,2);
2646						var day = ObjectUtils.pad(date.getDate(),2);
2647						var hh = ObjectUtils.pad(date.getHours(),2);
2648						var mm = ObjectUtils.pad(date.getMinutes(),2);
2649						var ss = ObjectUtils.pad(date.getSeconds(),2);
2650						var ppRelDate = year+'-'+month+'-'+day;//+' '+hh+':'+mm+':'+ss;
2651						
2652						var date2 = new Date(frDate);
2653						var year2 = date2.getFullYear();
2654						var month2 = ObjectUtils.pad(date2.getMonth()+1,2);
2655						var day2 = ObjectUtils.pad(date2.getDate(),2);
2656						var hh2 = ObjectUtils.pad(date2.getHours(),2);
2657						var mm2 = ObjectUtils.pad(date2.getMinutes(),2);
2658						var ss2 = ObjectUtils.pad(date2.getSeconds(),2);
2659						var frRelDate = year2+'-'+month2+'-'+day2;//+' '+hh+':'+mm+':'+ss;
2660						
2661						
2662						var href = '/article/'+list[i].id
2663
2664						if(!ObjectUtils.isEmpty(series)){
2665							sectionName = series[0].sectionName;
2666							if(sectionName.indexOf("[") > -1 && sectionName.indexOf("]") > -1){
2667								sectionName = series[0].sectionName.substring(sectionName.indexOf("]")+1);
2668							}
2669						}
2670
2671						if(!ObjectUtils.isEmpty(imgSrc)){
2672							if(imgSrc.indexOf('/0540/') > -1){
2673        						imgSrc = contentsUrl + imgSrc;
2674        					}else if(imgSrc.indexOf('/exposure/') > -1){
2675        						imgSrc = contentsUrl + imgSrc;
2676        					}else{
2677        						imgSrc = contentsUrl + imgSrc.substring(0,26) + ".cache/512/" + imgSrc.substring(26);
2678        					}		               		                       							
2679						}
2680
2681						html += '<div class="thum_box">';
2682						html += '	<div class="thum_body">';
2683						// 알림마당(mainList3)의 경우만 분류가 표시됨
2684						if(self.obj?.pageId === 'mainList3' && ObjectUtils.isNotEmpty(list[i].category?.[0]?.sectionName)){
2685							html += '	<span class="bunru"><a href="'+href+'" class="blue">'+list[i].category[0].sectionName+'</a></span>';
2686						}
2687						html += '		<h3><a href="'+href+'">'+list[i].title+'</a></h3>';
2688						html += '		<p class="description">';
2689						html += '			<a href="'+href+'">'+list[i].summary+'</a>';
2690						html += '		</p>';
2691						if(Number(paperMyun) !== 0){
2692							html += '		<span class="gisa_date">발행일 '+ppRelDate+' 제'+paperHosu+'호 '+paperMyun+'면</span>';
2693						}else{
2694							html += '		<span class="gisa_date">입력일 '+frRelDate+'</span>';
2695						}
2696						html += '	</div>';
2697						if(ObjectUtils.isNotEmpty(imgSrc)) {
2698							html += '	<div class="thum_img">';
2699							html += '		<a href="'+href+'">';
2700							html += '			<img src="'+imgSrc+'" alt="기사사진">';
2701							html += '		</a>';
2702							html += '	</div>';
2703						}
2704						html += '</div>';
2705                    }
2706                    
2707                    $(".btn_more").before(html);
2708                    
2709                    // 더보기 페이지 유지
2710					var session_obj = {};
2711					var list = $(".gisa_list").children().map(function() {
2712						return $(this).prop('outerHTML');
2713					}).get().join('');
2714					session_obj.page = self.obj.page;
2715					session_obj.list = list;
2716					session_obj.newsGroup = location.pathname.split("/").reverse()[0];
2717					sessionStorage.setItem('session_obj', JSON.stringify(session_obj));
2718                };
2719            },
2720            error: function (error){
2721                console.error(error);
2722            }
2723        });
2724
2725    }
2726    
2727    
2728};
2729var BOARD = {
2730    init : function () {
2731		var self = this;
2732		var pathName = location.pathname;
2733		
2734		if (pathName.endsWith('/boardDetail')) {
2735			$("#boardContentUpdate").hide();
2736			$("#boardContentDelete").hide();
2737			if(location.search){
2738				var seq = location.search.slice(5);
2739				self.pageChk(seq);
2740			}
2741			self.boardListDetail();
2742			console.log('boardDetail.init');
2743		} else if (pathName.endsWith('/board')) {
2744			self.boardList();
2745			console.log('boardList.init');
2746		}
2747
2748		self.eventBind();
2749
2750    },
2751    eventBind : function(){
2752        var self = this ;
2753		
2754		$(".bd_tit").off().click(function(e){
2755			e.preventDefault();
2756			var contentSeq = $(this).closest('.bd_flex.bd_list').attr('data-content-seq');
2757			if (contentSeq) {
2758				$.ajax({
2759					url: "/rest/privateCheck",
2760					data: {contentSeq: contentSeq},
2761					type: "GET",
2762					success: function(result) {
2763						if(result == "N") {
2764							alert("본인의 비밀글만 보실 수 있습니다.");
2765						} else {
2766							location.href = '/boardDetail?seq=' + contentSeq;
2767						}
2768					}
2769				});
2770			} else {
2771				alert("Content sequence not found.");
2772			}
2773		});
2774
2775
2776        $('#btn_search').on('click', function () {
2777            self.boardList();
2778        });
2779
2780        $("#searchText").on("keyup", function () {
2781            if (window.event.keyCode == 13) {
2782                self.boardList();
2783            }
2784        });
2785		
2786		$("#boardWriteBtn").off().on("click",function(){
2787			var seq = new URLSearchParams(window.location.search).get('seq');
2788			$.ajax({
2789				url : "/rest/loginCheck",
2790				type : "GET",
2791				success : function(result){
2792					if(result == "N") {
2793						if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
2794							location.href="/member/login";
2795						} else {
2796							return false;
2797						}
2798					} else {
2799						location.href="/boardWrite?boardSeq="+seq;
2800					}
2801				}
2802			})
2803		});
2804
2805    },
2806    //게시판 상세
2807    boardListDetail : function(){
2808        var self = this ;
2809    	var contentSeq = $("#contentSeq").val();
2810    	var contentSeqs = parseInt(contentSeq);
2811        
2812        var page = 1;
2813        var size = 10;
2814        
2815            var searchData = {
2816            		contentSeq : contentSeq,
2817                    page : page,
2818                    size : size    
2819            };
2820			
2821            $.ajax({
2822                url : "/rest/boardDetail",
2823                type : "GET",
2824                contentType: "application/json",
2825                dataType:"JSON",
2826                data : searchData,
2827                success: function (data) {
2828                    var html = "";
2829                    var html2 = "";
2830                    var html3 = "";                    	
2831                    var boardSelect = data.boardSelect;
2832                    var boardSeq = boardSelect.boardSeq;                                                                          	                    
2833                    
2834                    var boardDetail = data.boardDetail;
2835                    var lastLength = boardDetail.length - 1;
2836                    
2837					if(boardDetail[0].storedFileName == null){
2838						html += '<span></span>';
2839						html += '<span class="ml3 c_77 t_12"></span>';
2840					}else{
2841						if(boardDetail[0].storedFileName != null){
2842							var storedFileName = encodeURIComponent(boardDetail[0].storedFileName);
2843							html += '<div class="add_file"><a href='+mediaData.mediaCdn+'/data1/resources/board/'+boardSeq+'/'+contentSeqs+'/'+storedFileName+' target=_blank>'+boardDetail[0].storedFileName+'</div>';
2844						}
2845					}       
2846					// 첨부파일영역
2847					$("#attach_file").html(html);                     
2848					
2849						$.each(data.boardPrev, function(index, item){	  
2850							html2 += '<strong><span class="material-icons">keyboard_arrow_up</span>이전글</strong>';
2851							html2 += '<span><a href="/boardDetail?seq='+item.contentSeq+'">'+item.contentSubject+'</a></span>'
2852
2853						});
2854						
2855						$.each(data.boardNext, function(index, item){		
2856							html3 += '<strong><span class="material-icons">keyboard_arrow_down</span>다음글</strong>';
2857							html3 += '<span><a href="/boardDetail?seq='+item.contentSeq+'">'+item.contentSubject+'</a></span>'
2858						});
2859
2860					// 이전글
2861					$("#boardContentPrev").html(html2);
2862					// 다음글
2863					$("#boardContentNext").html(html3);
2864					// 영역 그리기 
2865					// self.renderDetailBoard(data.boardDetail);                    
2866                }
2867         });
2868    	self.boardUserChk();
2869    	self.boardLoginChk();
2870    },
2871	pageChk : function(contentSeq){
2872		$(".bdv_cont").hide();
2873		if (contentSeq) {
2874			$.ajax({
2875				url: "/rest/privateCheck",
2876				data: {contentSeq: contentSeq},
2877				type: "GET",
2878				success: function(result) {
2879					if(result == "N") {
2880						alert("본인의 비밀글만 보실 수 있습니다.");
2881						//location.href="/board?seq=4";
2882						history.back();
2883					}else{
2884						$(".bdv_cont").show();
2885					} 
2886				}
2887			});
2888		}
2889	},
2890	privateChk : function(){
2891		//로그인 여부 체크
2892		$.ajax({
2893			url : "/rest/loginCheck",
2894			type : "GET",
2895			success : function(result){
2896				if(result == "N") {
2897					$("#boardContentUpdate").hide();
2898					$("#boardContentDelete").hide();
2899					$("#boardReplyBtn").attr("onclick", "BOARD.replyLoginChk(1);");
2900				} else {
2901					$("#boardContentUpdate").show();
2902					$("#boardContentDelete").show();
2903					$("#boardReplyBtn").attr("onclick", "BOARD.replyLoginChk(0);");
2904				}
2905			}
2906		});
2907	},
2908	boardLoginChk : function(){
2909		//로그인 여부 체크
2910		$.ajax({
2911			url : "/rest/loginCheck",
2912			type : "GET",
2913			success : function(result){
2914				if(result == "N") {
2915					$("#boardContentUpdate").hide();
2916					$("#boardContentDelete").hide();
2917					$("#boardReplyBtn").attr("onclick", "BOARD.replyLoginChk(1);");
2918				} else {
2919					$("#boardContentUpdate").show();
2920					$("#boardContentDelete").show();
2921					$("#boardReplyBtn").attr("onclick", "BOARD.replyLoginChk(0);");
2922				}
2923			}
2924		});
2925	},
2926	replyLoginChk : function(data){
2927		if(data == 0){
2928			var boardSeq = $("#boardReplyBtn").attr("data-board-seq");
2929			var contentSeq = $("#boardReplyBtn").attr("data-content-seq");
2930			var parentContentGroupSeq = $("#boardReplyBtn").attr("data-parent-seq");
2931			var contentLevel = $("#boardReplyBtn").attr("data-content-level");
2932			var contentNum = $("#boardReplyBtn").attr("data-content-num");
2933			$("#boardReplyBtn").attr("onclick", "location.href='/boardWrite?boardSeq="+boardSeq+"&contentSeq="+contentSeq+"&parentContentGroupSeq="+parentContentGroupSeq+"&contentLevel="+contentLevel+"&contentNum="+contentNum+"'");
2934			$("#boardReplyBtn").trigger("click");
2935		}else{
2936			if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
2937				location.href="/member/login";
2938			} else {
2939				return false;
2940			}
2941		}
2942	},
2943	boardUserChk : function(){
2944		//게시글 등록자 , 로그인 아이디 동일 여부 체크0
2945		$.ajax({
2946			url: "/rest/boardUserCheck",
2947			data: {contentSeq : $("#boardContentUpdate").attr("data-content-seq")},
2948			type: "GET",
2949			success: function(result) {
2950				if(result == "N") {
2951					$("#boardContentUpdate").hide();
2952					$("#boardContentDelete").hide();
2953				} else {
2954					$("#boardContentUpdate").show();
2955					$("#boardContentDelete").show();
2956				}
2957			}
2958		});	
2959	},
2960    boardList : function(page, size, seq='', type="board"){ 
2961        var self = this ;
2962        var boardSeq = ObjectUtils.getParameterByName('seq');
2963        var page = ObjectUtils.getParameterByName('page') ?? '';
2964		var pathName = location.pathname.split("/").reverse();
2965        var pageId = pathName[0];
2966        if(ObjectUtils.isEmpty(boardSeq)){boardSeq = seq;}
2967        if(ObjectUtils.isEmpty(page) ){page = 1;}
2968        if(ObjectUtils.isEmpty(size) ){size = 20;}
2969        
2970        if(!(ObjectUtils.isEmpty(boardSeq))){
2971            var searchOption = (type === "board" ? $("#searchOption option:selected").val() : "");
2972            var searchText = (type === "board" ? $("#searchText").val() : "");
2973            var searchData = { searchOption, searchText, boardSeq, page, size };
2974
2975            $.ajax({
2976                url : "/rest/boardList",
2977                type : "GET",
2978                contentType: "application/json",
2979                dataType:"JSON",
2980                data : searchData,
2981                success: function (data) {
2982                    if(type === "main"){
2983                        MAIN.renderInfo(data.boardInfo, data.boardList);
2984                    } else if(type === "submain_infoSquare"){
2985                        SUBMAIN.renderInfo(data.boardInfo, data.boardList);
2986                    } else if(type === "etc"){
2987                    	ETC.renderInfo(data.boardInfo, data.boardList);
2988                    } else {
2989                        if(data.boardInfo.useYn === "N" ) {
2990                            alert("비공개 게시판입니다.");
2991                            location.href="/" ;
2992                        }else{
2993                            // 영역 그리기 
2994                            self.renderBoard(data.boardInfo,data.boardList,data.boardNotice);
2995                        
2996                            // 페이징 그리기
2997                            self.renderPaging(data);  
2998                        };
2999                    };
3000                }
3001            });
3002        };
3003    },
3004    renderBoard : function(boardInfo,boardList,boardNotice){
3005        var self = this ; 
3006        var html = "";
3007        
3008        $("#board_body").html("");
3009        
3010        //게시판 제목
3011        $(".board_title").html(boardInfo.boardName);
3012        
3013		// 구독/자유 게시판
3014		if(boardList.length > 0){
3015			var html = "";
3016			for(var j=0; j< boardList.length; j++ ){
3017				var date = moment.utc(boardList[j].registDatetime).format('YYYY-MM-DD');
3018				var indent = "";
3019				for(var k=0; k < boardList[j].contentLevel - 1; k++){
3020					indent += "&nbsp;&nbsp;&nbsp;&nbsp;";
3021				}
3022
3023				if(boardList[j].contentLevel > 0){
3024					indent += "&nbsp;&nbsp;&nbsp;&nbsp;ㄴ ";
3025				}
3026				
3027				html += "<div class='bd_flex bd_list' data-content-seq='"+boardList[j].contentSeq+"'>";
3028				html += "<div data-content-seq='"+boardList[j].contentSeq+"'>"+boardList[j].contentSeq+"</div>";
3029				html += "<div class='bd_tit'>";
3030				html += indent;
3031				html += "	<a href='/boardDetail?seq="+boardList[j].contentSeq+"'>";
3032				if(boardList[j].privateYn == "Y"){
3033					html += " 	<img class='i_lock' src='" + mediaData.mediaCdn + "/data1/resources/pc/common/images/ico/lock.png' alt='비밀글'>";
3034				}else{
3035					html += "";
3036				}
3037				html += 		boardList[j].contentSubject;
3038				html += "	</a>";
3039				html += "	<!--파일첨부 표시-->";
3040				if(boardList[j].boardFileCount > 0){
3041					html += "	<img class='i_file' src='" + mediaData.mediaCdn + "/data1/resources/pc/common/images/ico/file.png' alt='파일첨부'>";
3042				}else{
3043					html += "";
3044				}
3045				html += "	<!--//파일첨부 표시-->";
3046				html += "</div>";
3047				
3048				html += "				<div>"+boardList[j].registName+"</div>";
3049				html += "<div>"+date+"</div>";
3050				html += "<div>"+boardList[j].contentViews+"</div>";
3051				html += "</div>";
3052			}
3053			$("#board_body").html(html);
3054			self.eventBind();
3055		}
3056        
3057    },
3058    renderPaging : function(data){
3059        var self = this ; 
3060        var html = ""; 
3061        
3062        var pagePerBlock = 10;
3063
3064        //모바일 시 페이징 처리
3065        if(data.deviceChk == 'M'){
3066            pagePerBlock = 5 ;
3067        }
3068        
3069		var currentPage = data.number + 1;
3070        var pageGroup = Math.ceil((currentPage / pagePerBlock) - 1);
3071        var start = (pageGroup * pagePerBlock) + 1;
3072		var last = (pageGroup + 1) * pagePerBlock;
3073		var prePage = (pageGroup - 1) * pagePerBlock;
3074		var nextPage = Math.ceil(last + 1);
3075
3076		var path = location.pathname;
3077		var boardSeq = ObjectUtils.getParameterByName('seq');
3078
3079        html += '<ul class="">'
3080            if(start > pagePerBlock){
3081                html += "<a href='"+path+"?seq="+boardSeq+"&page="+prePage+"' class='prev_btn' aria-label='Previous'></a>"; 
3082            }
3083            
3084            
3085            for(var i=start; i <= last; i++){
3086                if(i > data.totalPages) break;
3087                if(i == currentPage){
3088                    html += "<li class='on'><a href='"+path+"?seq="+boardSeq+"&page="+i+"'>"+i+"</a></li>" ;
3089                }else{
3090                    html += "<li class=''><a href='"+path+"?seq="+boardSeq+"&page="+i+"'>"+i+"</a></li>";
3091                }
3092            }
3093            
3094
3095            if(start + pagePerBlock <= data.totalPages){
3096                html += "<a href='"+path+"?seq="+boardSeq+"&page="+nextPage+"' class='next_btn' aria-label='Next'></a>";
3097            }
3098            html += '</ul>';
3099            $("#pagination").html(html);
3100        
3101    }
3102    
3103};
3104
3105var DETAILSEARCH = {
3106    init : function(){
3107        var self = this;
3108        console.log("DETAILSEARCH");
3109        var pathName = location.pathname;
3110		self.searchEventBind();
3111		
3112		// 초기값 설정
3113		var initialSortText = "최신순";
3114		var initialSortValue = "post";
3115		var initialRangeValue = "title_subtitle_body";
3116		$(".dropdown-sort .btn.dropdown-toggle").text(initialSortText);
3117		$("#selectedSort").val(initialSortValue);
3118		$("#selectedSearchRange").val(initialRangeValue);
3119		$("input[name='from']").datepicker("setDate", null);
3120		$("input[name='to']").datepicker("setDate", null);
3121		
3122    },
3123	
3124    searchEventBind : function(){
3125		var currentDate = new Date();
3126		var fromDate = new Date();
3127        var toDate = new Date();
3128
3129        $("input[name=from]").datepicker({
3130            dateFormat: 'yy-mm-dd' //Input Display Format 변경
3131            ,showOtherMonths: false //빈 공간에 현재월의 앞뒤월의 날짜를 표시
3132            ,showMonthAfterYear:true //년도 먼저 나오고, 뒤에 월 표시
3133            ,changeYear: true //콤보박스에서 년 선택 가능
3134            ,changeMonth: true //콤보박스에서 월 선택 가능
3135            ,monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 텍스트
3136            ,monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 Tooltip 텍스트
3137            ,dayNamesMin: ['일','월','화','수','목','금','토'] //달력의 요일 부분 텍스트
3138            ,dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'] //달력의 요일 부분 Tooltip 텍스트
3139            ,minDate: "-100Y" //최소 선택일자(-1D:하루전, -1M:한달전, -1Y:일년전)
3140            ,maxDate: "+10Y" //최대 선택일자(+1D:하루후, -1M:한달후, -1Y:일년후)
3141			,yearRange: "-100:+0" // select박스 안에 나오는 연도
3142			,onSelect: function(selectedDate) {
3143				// 사용자가 날짜를 선택하면 이 함수가 호출됩니다.
3144				$("input[name='from']").val(selectedDate);
3145			}
3146        }).on("click", function(e) {
3147			// datepicker 위젯 내의 클릭 이벤트가 부모 요소로 전파되는 것을 방지
3148			e.stopPropagation();
3149		});
3150
3151        $("input[name=to]").datepicker({
3152            dateFormat: 'yy-mm-dd' //Input Display Format 변경
3153            ,showOtherMonths: false //빈 공간에 현재월의 앞뒤월의 날짜를 표시
3154            ,showMonthAfterYear:true //년도 먼저 나오고, 뒤에 월 표시
3155            ,changeYear: true //콤보박스에서 년 선택 가능
3156            ,changeMonth: true //콤보박스에서 월 선택 가능
3157            ,monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 텍스트
3158            ,monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'] //달력의 월 부분 Tooltip 텍스트
3159            ,dayNamesMin: ['일','월','화','수','목','금','토'] //달력의 요일 부분 텍스트
3160            ,dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'] //달력의 요일 부분 Tooltip 텍스트
3161            ,minDate: "-100Y" //최소 선택일자(-1D:하루전, -1M:한달전, -1Y:일년전)
3162            ,maxDate: "+10Y" //최대 선택일자(+1D:하루후, -1M:한달후, -1Y:일년후)
3163			,yearRange: "-100:+0" // select박스 안에 나오는 연도
3164			,onSelect: function(selectedDate) {
3165				// 사용자가 날짜를 선택하면 이 함수가 호출됩니다.
3166				$("input[name='to']").val(selectedDate);
3167			}
3168        }).on("click", function(e) {
3169			// datepicker 위젯 내의 클릭 이벤트가 부모 요소로 전파되는 것을 방지
3170			e.stopPropagation();
3171		});
3172        
3173        $("input[name=to]").datepicker("setDate",toDate);
3174        $("input[name=from]").datepicker("setDate",fromDate);
3175
3176		
3177		$("#searchText").keydown(function(key) {
3178			if (key.keyCode == 13) {
3179				$("#detailSearchBtn").trigger("click");
3180			}
3181		});
3182		
3183		$("#searchClearBtn").on("click", function() {
3184			$("#organizationSelect").val("000").change();
3185			$("#rangeSelect").val("title_subtitle_body").change();
3186			$("#searchReporter").val("");
3187			$("#searchFrom").val("");
3188			$("#searchTo").val("");
3189		});
3190		
3191		
3192		$("#detailBtn").on("click", function() {
3193			$("#detailSearchBtn").trigger("click");
3194		});
3195		
3196		$("#detailSearchBtn").on("click", function() {
3197			var searchText = $("#searchText").val();
3198			var beforefrom = $("input[name=from]").datepicker("getDate");
3199			var beforeto = $("input[name=to]").datepicker("getDate");
3200			var from = formatDate(beforefrom);
3201			var to = formatDate(beforeto);
3202			var organization = $("#organizationSelect option:selected").val();
3203			var sort = $("#selectedSort").val();
3204			var searchRange = $("#rangeSelect option:selected").val();
3205			var reporterName = $("#searchReporter").val();
3206			var path = "/search/detailSearch"
3207			
3208			// 쿼리 스트링 생성
3209			var queryString = 	"?searchType=detail&organization="+encodeURIComponent(organization)+ 
3210								"&searchRange="+encodeURIComponent(searchRange)+
3211								"&storyClass=&searchMedia=all" +
3212								"&reporterName=" +encodeURIComponent(reporterName)+
3213								"&from=" + encodeURIComponent(from) +
3214								"&to=" + encodeURIComponent(to) +
3215								"&searchWord1=" + encodeURIComponent(searchText) +
3216								"&searchCondition=and&searchWord2=" +
3217								"&sort=post"
3218								
3219
3220			// 최종 URL 설정 및 페이지 이동
3221			window.location.href = path + queryString;
3222        });
3223		
3224		function formatDate(date) {
3225			if (!date) return '';
3226			var d = new Date(date),
3227				month = '' + (d.getMonth() + 1),
3228				day = '' + d.getDate(),
3229				year = d.getFullYear();
3230
3231			if (month.length < 2) month = '0' + month;
3232			if (day.length < 2) day = '0' + day;
3233
3234			return [year, month, day].join('-');
3235		}
3236    },
3237
3238    pageChange : function(pageNum){
3239		function formatDate(date) {
3240			if (!date) return '';
3241			var d = new Date(date),
3242				month = '' + (d.getMonth() + 1),
3243				day = '' + d.getDate(),
3244				year = d.getFullYear();
3245
3246			if (month.length < 2) month = '0' + month;
3247			if (day.length < 2) day = '0' + day;
3248
3249			return [year, month, day].join('-');
3250		}
3251
3252		var beforefrom = $("input[name=from]").datepicker("getDate");
3253		var beforeto = $("input[name=to]").datepicker("getDate");
3254		var from = formatDate(beforefrom);
3255		var to = formatDate(beforeto);
3256
3257        $("form input[name=from]").val(from);
3258		$("form input[name=to]").val(to);
3259
3260		form = $("form");
3261        $("#pageNum").val(pageNum);
3262        form.submit();
3263    }
3264	
3265};
3266
3267/* 팝업용 소셜 공유 (메인, 서브메인 공통) */
3268var SOCIAL = {
3269    init: function(){
3270        var self = this;
3271        self.kakaoShare();
3272        self.eventBind();
3273    },
3274    eventBind: function(){
3275        var self = this;
3276        var $shareLayerPopup = $(".main_share_layer");
3277        $("span[name='sns_share_btn']").click(function(e){
3278            e.preventDefault();
3279            var cardFrame = $(e.target).closest("li");
3280            var title = cardFrame.find(".siteViewTitlte").text();
3281            var sharehref = cardFrame.find(".siteUrl").attr("href");
3282            var shareimg = cardFrame.find(".siteImgSrc").val();
3283            var shareUrl = window.location.origin + sharehref;
3284
3285            $shareLayerPopup.data("shareUrl", shareUrl);
3286            $shareLayerPopup.data("shareTitle", title);
3287            $shareLayerPopup.data("shareImg", shareimg);
3288            ncommon.socialPopup();
3289        });
3290        $shareLayerPopup.find("li").click(function(e){
3291            e.preventDefault(); 
3292            var snsElem = $(e.target).closest("a").attr("class");
3293            var snsName = snsElem.substr(4);
3294            var shareUrl = $shareLayerPopup.data("shareUrl");
3295            var shareTitle = $shareLayerPopup.data("shareTitle");
3296            var shareImg = $shareLayerPopup.data("shareImg");
3297            self.share(snsName, shareUrl, shareTitle, shareImg);
3298        });
3299    },
3300    kakaoShare: function(){
3301        Kakao.init('cba94781b9ef1a0f150394be48361a75');
3302    },
3303    share: async function(sns, url, title, imgurl){
3304        var self = this;
3305        url = location.href;
3306        var encodeUrl = encodeURIComponent(url);
3307        var encodeTitle = encodeURIComponent(title);
3308
3309        switch(sns){
3310            case "facebook":
3311                var url = 'https://www.facebook.com/sharer/sharer.php?display=popup&u=' + encodeUrl;
3312                window.open(url, 'sharer', 'scrollbars=yes,resizable=yes width=600,height=700');
3313			break;
3314            case "twitter":
3315                var url = 'http://twitter.com/share?text=' + encodeTitle + '&url=' + encodeUrl;
3316                window.open(url, 'shart_twitter','scrollbars=yes,resizable=yes width=600,height=700');
3317            break;
3318            case "naver":
3319                var url = 'http://share.naver.com/web/shareView.nhn?url=' + encodeUrl + '&title=' + encodeTitle;
3320                window.open(url, 'share_naverBlog', 'scrollbars=yes,resizable=yes width=600,height=700');
3321            break;
3322            case "kakao":
3323                Kakao.Link.sendDefault({
3324                    objectType : "feed",
3325                    content : {
3326                      title : $( 'meta[property="og:title"]' ).attr( 'content' ),
3327                      description : $( 'meta[property="og:description"]' ).attr( 'content' ),
3328                      imageUrl : $( 'meta[property="og:image"]' ).attr( 'content' ),
3329                      link : {
3330                        mobileWebUrl : $( 'meta[property="og:url"]' ).attr( 'content' ),
3331                        webUrl : $( 'meta[property="og:url"]' ).attr( 'content' )
3332                      }
3333                    }
3334                  });
3335            break;
3336            case "linkcopy":
3337                var clipboard = "";
3338                $(".ico_linkcopy").attr("data-clipboard-text", url);
3339                clipboard = new ClipboardJS('.ico_linkcopy');
3340                clipboard.on('success', function(e) {
3341                    alert("URL이 복사되었습니다.");
3342                    $(".ico_linkcopy").attr("data-clipboard-text","");
3343                });
3344                clipboard.on('error', function(e) {
3345                    console.log(e);
3346                });
3347            break;
3348        };
3349    },
3350
3351};
3352
3353/*소통마당*/
3354const fileArray = [];
3355var deleteImgName = [];
3356var COMMUNITY = {
3357		init : function(){
3358			var self = this;
3359			self.isCheckedNickName = true;
3360			self.eventBind.enterSearch(self);
3361			self.eventBind.clickEvent(self);
3362			var pathName = location.pathname;
3363			
3364			if(pathName.indexOf("/community/communicationUpdate") > -1) self.updatePageInit();
3365		},
3366		
3367		eventBind : {
3368			enterSearch : function(self) {
3369	            $("#searchText").keydown(function(key) {
3370	                if (key.keyCode == 13) {
3371	                    $(".search").trigger("click");
3372	                }
3373	            });
3374	            
3375	            $("#insertTbody input").keydown(function(key) {
3376	            	if (key.keyCode == 13) {
3377	            		return false;
3378	            	}
3379	            });
3380
3381				$("#nickNameInput").on("keyup", function(){
3382					$("#insertBtn").prop("disabled", false);
3383				});
3384
3385				$("input[name=videoUrl]").on("propertychange change keyup paste input", function(){
3386					var url = $(this).val();
3387					$(".videoOutput").remove();
3388					if(url != ""){
3389						url = url.split("/");
3390
3391						url = url[url.length-1]
3392
3393						var html = "<iframe class='videoOutput' width='600' height='500' src=https://www.youtube.com/embed/"+url+" frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>";
3394						$(".videoOutputBox").html(html);
3395					}
3396				});
3397			},
3398			clickEvent : function(self){
3399				$("#paging_wrap a").on("click",function(){
3400					$(this).parent().addClass("on");
3401				});
3402				
3403				$(".search").on("click",function(){
3404					alert(category);
3405				});
3406				
3407				$(".btn_chk").on("click",function(){
3408					self.nickNameCheck();
3409				});
3410				
3411				$("#comFile").on("change",function(){
3412					self.fileAdd();
3413				});
3414				
3415				$("#likeUpdateBtn").on("click",function(){
3416					var status = $(this).hasClass("on");
3417					var communitySeq = $(this).attr("data-communityseq");
3418					self.likeStatusChange(status,communitySeq);
3419				});
3420				
3421				$(document).on("click",".imgDelete",function(){
3422					var index = $(this).parent().parent().index();
3423					
3424					self.fileInputDelete(index);
3425				});
3426				
3427				$("#insertPageBtn").on("click",function(){
3428					self.loginCheck();
3429				});
3430				
3431				$("#favoriteUpdateBtn").on("click",function(){
3432					var status = $(this).hasClass("on");
3433					var communitySeq = $(this).attr("data-communityseq");
3434					self.favoriteStatusChange(status,communitySeq);
3435				});
3436				
3437				$("#insertBtn").on("click",function(){
3438					if(self.isCheckedNickName){
3439						self.communitySubmit();
3440					}else{
3441						alert("닉네임 중복체크 해주세요");
3442					}
3443				});
3444				
3445				$("#msgSendBtn").on("click",function(){
3446					self.loginCheck("msgSend");
3447					self.massageSend();
3448				})
3449				
3450				$("#communityDeleteBtn").on("click",function(){
3451					var communitySeq = $(this).attr("data-communityseq");
3452					
3453					if(confirm("삭제하시겠습니까?")) self.communityDelete(communitySeq);
3454				})
3455				
3456				$(".exisImgDelete").on("click",function(){
3457					var imgValue = $(this).next().val();
3458					var index = $(this).parent().parent().index();
3459					self.exisImgDelete(imgValue, index);
3460				})
3461				
3462				$("#communityUpdateBtn").on("click",function(){
3463					var seq = $(this).attr("data-communityseq");
3464					location.href="/community/communicationUpdate/"+seq;
3465				})
3466				
3467				$(".paging_wrap li > a").on("click",function(){
3468					var page = $(this).text();
3469					self.pageMove(page);
3470				})
3471				
3472				$(".prev_btn").on("click",function(){
3473					var nowPage = $(".paging_wrap .on").text();
3474					
3475					self.pageMove(Number(nowPage) - 1);
3476					
3477				})
3478				
3479				$(".next_btn").on("click",function(){
3480					var nowPage = $(".paging_wrap .on").text();
3481					
3482					self.pageMove(Number(nowPage) + 1);
3483					
3484				})
3485				
3486				$(".communi_tab a").on("click",function(){
3487					var categoryName = $(this).attr("data-pagename");
3488					
3489					var searchOption = $("#searchOptionStatus").val();
3490					var searchText = $("#searchTextStatus").val();
3491					var pageName = "/community/communicationList/"+categoryName;
3492					
3493					if(searchText != "" && searchText != " " && searchText != undefined){
3494						location.href = pageName + "?searchOption=" + searchOption + "&searchText=" + searchText;
3495					} else {
3496						location.href = pageName;
3497					}
3498					
3499				})
3500				
3501				$('.communi_cont .news_tit .writer_box .send_message').click(function(){
3502					
3503					$.ajax({
3504						url : "/community/rest/loginCheck",
3505						type : "GET",
3506						success : function(result){
3507							if(result == "N") {
3508								if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
3509									location.href="/member/login";
3510								} else {
3511									return false;
3512								}
3513							} else {
3514								var boardSeq = $(".send_message").attr("data-boardseq");
3515								var sendMsg = window.open("/community/sendMessage/"+boardSeq, "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=200,left=800,width=527,height=410");
3516							}
3517						}
3518					})
3519					
3520				});
3521			}
3522		},
3523
3524		/*상세내용*/
3525		detail: function(seq){
3526			var self = this;
3527			self.loginCheck("detail", seq);
3528		},
3529
3530		/*수정페이지 초기화*/
3531		updatePageInit : function(){
3532            CKEDITOR.instances.contentBox.setData($("#content").val());
3533            $("#fileLabel").text($(".file_attach_box div").length+" / 10");
3534            
3535            if($(".file_attach_box div").length > 0) $(".file_custom").remove();
3536		},
3537		
3538		/*페이지*/
3539		pageMove : function(page){
3540			var self = this;
3541			
3542			var searchOption = $("#searchOptionStatus").val();
3543			var searchText = $("#searchTextStatus").val();
3544			var pageName = location.pathname;
3545			
3546			if(searchText != "" && searchText != " "){
3547				location.href = pageName + "?searchOption=" + searchOption + "&searchText=" + searchText + "&page=" + page;
3548			} else {
3549				location.href = pageName + "?page=" + page;
3550			}
3551			
3552		},
3553		
3554		/*수정페이지 등록된 이미지 삭제*/
3555		exisImgDelete : function(imgValue, index){
3556			var self = this;
3557			
3558			deleteImgName.push(imgValue);
3559			
3560			$(".file_attach_box div")[index].remove();
3561			$("#fileLabel").text($(".file_attach_box div").length+" / 10");
3562			
3563			$("#deleteImgName").val(deleteImgName.join());
3564		},
3565		
3566		/*게시물 삭제*/
3567		communityDelete : function(seq){
3568			var self = this;
3569			
3570			$.ajax({
3571				url : "/community/rest/communityDelete",
3572				type : "GET",
3573				data : {seq : seq},
3574				success : function(result){
3575					if(result > 0){
3576						alert("게시물이 정상적으로 삭제 되었습니다.");
3577						history.back();
3578					} else {
3579						alert("게시물 삭제에 실패하였습니다.\n다시 시도해 주세요.");
3580					}
3581				}
3582			})
3583		},
3584		
3585		/*쪽지 발송*/
3586		massageSend : function(){
3587			
3588			if($("#msgCotent").val() == "") {
3589				alert("내용을 입력해주세요");
3590				return false;
3591			}
3592			
3593			var data = {
3594				content : $("#msgCotent").val(),
3595				targetId : $("#targatId").val(),
3596				targetName : $("#targatName").val(),
3597				targetSeq : $("#targatSeq").val(),
3598				communityGubun : $("#communityGubun").val()
3599			}
3600			
3601			$.ajax({
3602				url : "/community/rest/sendMessage",
3603				type : "POST",
3604				contentType: "application/json",
3605				dataType:"JSON",
3606				data: JSON.stringify(data),
3607				success : function(result){
3608					if(result > 0) {
3609						alert("쪽지가 정상적으로 발송되었습니다.");
3610						window.close();
3611					} else {
3612						alert("쪽지가 정상적으로 발송되지 못했습니다.")
3613					}
3614				}
3615			})
3616			
3617		},
3618		
3619		/*관심 버튼*/
3620		favoriteStatusChange : function(status,communitySeq){
3621			var self = this;
3622			
3623			var favoriteStatus;
3624			if(status) favoriteStatus = "N";
3625			else favoriteStatus = "Y";
3626			
3627			$.ajax({
3628				url : "/community/rest/favoriteStatusChange",
3629				type : "POST",
3630				data : {
3631					status : favoriteStatus,
3632					communitySeq : communitySeq
3633				},
3634				success : function(result){
3635					if(!result.login){
3636						alert("로그인후 이용해주세요");
3637						$("#favoriteUpdateBtn").removeClass("on");
3638						return false;
3639					}
3640					
3641					if(result.result > 0){
3642						$("#favoriteCount").text(result.favoriteCount);
3643						
3644						if(favoriteStatus == 'Y') {
3645							$("#favoriteUpdateBtn").addClass("on");
3646							$("#likeModalMsg").text("등록되었습니다.");
3647						} else {
3648							$("#favoriteUpdateBtn").removeClass("on");
3649							$("#likeModalMsg").text("해제되었습니다.");
3650						}
3651						
3652					} else {
3653						alert("정상적으로 처리되지않았습니다.");
3654					}
3655					
3656				}
3657				
3658				
3659				
3660			})
3661			
3662		},
3663		
3664		/*닉네임 중복 확인*/
3665		nickNameCheck : function(){
3666			var self = this;
3667			var nickName = $("#nickNameInput").val();
3668			
3669			$.ajax({
3670				url : "/community/rest/insertNickCheck",
3671				type : "get",
3672				data : {nickName : nickName},
3673				success : function(result){
3674					if(result == 0) {
3675						alert("사용할수있는 닉네임입니다.");
3676						self.isCheckedNickName = true;
3677					}else{
3678						alert("이미 사용중인 닉네임 입니다 다시 입력해 주세요.");
3679						self.isCheckedNickName = false;
3680					}
3681				}
3682			})
3683		},
3684		
3685		/*파일 추가*/
3686		fileAdd : function(){
3687			var self = this;
3688			const dataTransfer = new DataTransfer();
3689			var imgLength = $(".imgFileBox").length;
3690			$(".file_custom").remove();
3691			
3692			var files = $("#comFile")[0].files;
3693			
3694			var imageCheck = files[0]['type'].split("/");
3695			if(!imageCheck.includes("image")){
3696				alert("이미지 파일만 첨부 가능합니다.");
3697				return false;
3698			}
3699			
3700			if(fileArray.length + $(".file_attach_box .exisImg").length + files.length > 10){
3701				alert("이미지는 10개 까지만 추가할수있습니다.");
3702				return false;
3703			}
3704			
3705			var arr = Array.from(files);
3706			for(var i = 0; i < arr.length; i++){
3707				fileArray.push(arr[i]);
3708			}
3709			
3710			fileArray.forEach(file => { dataTransfer.items.add(file); });
3711			
3712			$("#comFile")[0].files = dataTransfer.files;
3713			
3714			
3715			$(".imgFileBox").remove();
3716			var html = "";
3717			for(var i = 0; i < $("#comFile")[0].files.length; i++){
3718				html += "<div class='imgFileBox'>";
3719				html += "<span>"+$("#comFile")[0].files[i].name+"</span>";
3720				html += "<a title='파일삭제'><span class='imgDelete material-icons-outlined'> close </span></a>";
3721				html += "</div>";
3722
3723			}
3724			$(".file_attach_box").append(html);
3725			
3726			$("#fileLabel").text($(".file_attach_box div").length+" / 10");
3727		},
3728		
3729		/*등록페이지, 수정페이지 현재 등록한 이미지 삭제*/
3730		fileInputDelete : function(index){
3731			var self = this;
3732			const dataTransfer = new DataTransfer();
3733			
3734			fileArray.splice(index,1);
3735			
3736			fileArray.forEach(file => { dataTransfer.items.add(file); });
3737			
3738			$("#comFile")[0].files = dataTransfer.files;
3739			
3740			$(".file_attach_box div")[index].remove();
3741			
3742			$("#fileLabel").text($(".file_attach_box div").length+" / 10");
3743			
3744			if($(".file_attach_box div").length == 0){
3745				var html = '<input type="text" class="file_name file_custom" placeholder="선택된 파일 없음" readonly />';
3746				
3747				$(".file_attach_box").append(html);
3748			}
3749		},
3750		
3751		/*좋아요 버튼*/
3752		likeStatusChange : function(status,communitySeq){
3753			var self = this;
3754			
3755			var likeStatus;
3756			if(status) likeStatus = "N";
3757			else likeStatus = "Y";
3758			
3759			$.ajax({
3760				url : "/community/rest/likeStatusChange",
3761				type : "POST",
3762				data : {
3763					status : likeStatus,
3764					communitySeq : communitySeq
3765				},
3766				success : function(result){
3767					if(!result.login){
3768						alert("로그인후 이용해주세요");
3769						return false;
3770					}
3771					if(result.result > 0){
3772						
3773						$("#likeCount").text(result.likeCount);
3774						
3775						if(likeStatus == 'Y') {
3776							$("#likeUpdateBtn").addClass("on");
3777						} else {
3778							$("#likeUpdateBtn").removeClass("on");
3779						}
3780						
3781					} else {
3782						alert("정상적으로 처리되지않았습니다.");
3783					}
3784					
3785				}
3786			})
3787			
3788		},
3789		
3790		/*로그인 체크*/
3791		loginCheck : function(cFunction, seq){
3792			var self = this;
3793			
3794			$.ajax({
3795				url : "/community/rest/loginCheck",
3796				type : "GET",
3797				success : function(result){
3798					if(result == "Y") {
3799						if(cFunction == "detail"){
3800							location.href=`/community/communicationView/${seq}`;
3801						}else{
3802							if(cFunction != "msgSend"){
3803								location.href="/community/communicationWrite";
3804							}
3805						}
3806					}
3807					else {
3808						if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
3809							if(cFunction == "msgSend") {
3810								if (window.opener && !window.opener.closed){
3811									window.opener.location = "/member/login";
3812									window.close();
3813								}
3814							} else {
3815								location.href="/member/login";
3816							}
3817						} else {
3818							return false;
3819						}
3820					}
3821						
3822				}
3823			})
3824		},
3825		
3826		/*게시글 등록*/
3827		communitySubmit : function(){
3828			var self = this;
3829			
3830			if($("input[name=title]").val() == "") {
3831				alert("*은 필수입력 항목입니다.");
3832				$("input[name=title]").focus();
3833				return false;
3834			} else if($("textarea[name=content]").val() == "") {
3835				alert("*은 필수입력 항목입니다.");
3836				$("input[name=content]").focus();
3837				return false;
3838			} else {
3839				var desc = CKEDITOR.instances.contentBox.getData();
3840				
3841				$("#content").val(desc);
3842				
3843				var pathName = location.pathname;
3844				$(".spinner_dim").show();
3845				if(pathName.indexOf("/community/communicationUpdate") > -1){
3846					$("#updateForm").submit();
3847				} else {
3848					$("#insertForm").submit();
3849				}
3850				
3851			}
3852			
3853		}
3854		
3855};
3856
3857/*직거래마당*/
3858var TRANSACTION = {
3859		init : function(){
3860			var self = this;
3861			self.eventBind.enterSearch(self);
3862			self.eventBind.clickEvent(self);
3863			$(".news_list.news_content.communi_cont").addClass("transaction");
3864			$(".sub_tit pre").text("직거래마당");
3865			
3866			var pathName = location.pathname;
3867			
3868			if(pathName.indexOf("/sale/transactionUpdate") > -1) { self.updatePageInit(); };
3869			if(pathName.indexOf("/sale/transactionView") > -1) { self.printPhoneNum(); };
3870			
3871//			if(pathName == "/sale/transactionList"){
3872//				
3873//				var popCookie = $.cookie('popCookie');
3874//				
3875//				if(popCookie == null){
3876//					$("#ly_pop").removeClass("pop_dn");
3877//					$(".noti_pop").addClass("on");
3878//					$("#layerDim").removeClass("dn");
3879//				}
3880//			}
3881			
3882		},
3883		
3884		eventBind : {
3885			enterSearch : function(self){
3886				
3887	            $("#insertTbody input").keydown(function(key) {
3888	            	if (key.keyCode == 13) {
3889	            		return false;
3890	            	}
3891	            });
3892	            
3893	            $("input[name=videoUrl]").on("propertychange change keyup paste input",function(){
3894	            	var url = $(this).val();
3895	            	$(".videoOutput").remove();
3896	            	if(url != ""){
3897		            	url = url.split("/");
3898		            	
3899		            	url = url[url.length-1]
3900		            	
3901		            	var html = "<iframe class='videoOutput' width='600' height='500' src=https://www.youtube.com/embed/"+url+" frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>";
3902		            	$(".videoOutputBox").html(html);
3903		            }
3904	            });
3905	            
3906	            $("input[name=price]").on("keyup",function(){
3907	            	if($(this).val().length > 10) $(this).val($(this).val().slice(0, 10));
3908	            })
3909	            
3910				
3911			},
3912			
3913			clickEvent : function(self){
3914				
3915				$(document).on("click",".favoriteStatusUpdate",function(){
3916					var status = $(this).hasClass("on");
3917					var communitySeq = $(this).attr("data-communityseq");
3918					self.favoriteStatusChange(status,communitySeq,"list",$(this));
3919				})
3920				
3921				$("#insertPageBtn").on("click",function(){
3922					self.loginCheck();
3923				})
3924				
3925				$("#comFile").on("change",function(){
3926					$(".file_name.file_custom").remove();
3927					self.fileAdd();
3928				});
3929				
3930				$(document).on("click",".imgDelete",function(){
3931					var index = $(this).parent().parent().index();
3932					
3933					self.fileInputDelete(index);
3934				});
3935				
3936				$("#existing_num").on("change",function(){
3937					self.phoneNumberSelect($(this));
3938				})
3939				
3940				$("#area1").on("change",function(){
3941					self.selectArea2List($(this).val());
3942				})
3943				
3944				$("#favoriteUpdateBtn").on("click",function(){
3945					var status = $(this).hasClass("on");
3946					var communitySeq = $(this).attr("data-communityseq");
3947					self.favoriteStatusChange(status,communitySeq,"detail");
3948				});
3949				
3950				$("#selStatusChange").on("click",function(){
3951					self.selStatusUpdate($(this).attr("data-communityseq"));
3952				})
3953				
3954				$("#transactionInsertBtn").on("click",function(){
3955					self.insertValueCheck();
3956				})
3957				
3958				$("#msgSendBtn").on("click",function(){
3959					self.loginCheck("msgSend");
3960					self.massageSend();
3961				})
3962				
3963				$("#communityDeleteBtn").on("click",function(){
3964					var communitySeq = $(this).attr("data-communityseq");
3965					
3966					if(confirm("삭제하시겠습니까?")) self.communityDelete(communitySeq);
3967					
3968				})
3969				
3970				$(".exisImgDelete").on("click",function(){
3971					var imgValue = $(this).next().val();
3972					var index = $(this).parent().parent().index();
3973					self.exisImgDelete(imgValue, index);
3974				})
3975				
3976				$("#communityUpdateBtn").on("click",function(){
3977					var seq = $(this).attr("data-communityseq");
3978					location.href="/sale/transactionUpdate/"+seq;
3979				})
3980				
3981				$("#noticePopCloseBtn").on("click",function(){
3982					if($("#week_no_chk").is(":checked")){
3983						$.cookie('popCookie','check',{expires : 7})
3984					}
3985				})
3986				
3987				$(".paging_wrap li > a").on("click",function(){
3988					var page = $(this).text();
3989					self.pageMove(page);
3990				})
3991				
3992				$(".prev_btn").on("click",function(){
3993					var nowPage = $(".paging_wrap .on").text();
3994					
3995					self.pageMove(Number(nowPage) - 1);
3996					
3997				})
3998				
3999				$(".next_btn").on("click",function(){
4000					var nowPage = $(".paging_wrap .on").text();
4001					
4002					self.pageMove(Number(nowPage) + 1);
4003					
4004				})
4005				
4006				$('.communi_cont .news_tit .writer_box .send_message').click(function(){
4007					
4008					$.ajax({
4009						url : "/community/rest/loginCheck",
4010						type : "GET",
4011						success : function(result){
4012							if(result == "N") {
4013								if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
4014									location.href="/member/login";
4015								} else {
4016									return false;
4017								}
4018							} else {
4019								var boardSeq = $(".send_message").attr("data-boardseq");
4020								var sendMsg = window.open("/community/sendMessage/"+boardSeq, "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=200,left=800,width=527,height=410");
4021							}
4022						}
4023					})
4024					
4025				});
4026			}
4027		},
4028		
4029		/* 상세페이지 전화번호 출력*/
4030		printPhoneNum: function(){
4031			var phoneNum = $("#phoneNum").val();
4032			var ph1 = ""; var ph2 = ""; var ph3 = ""; var result = "";
4033			var size = phoneNum.length; 
4034
4035			if (phoneNum.includes(phoneNum,'02')) {
4036				if (size == 10){
4037					ph1 = phoneNum.slice(0,2);
4038					ph2 = phoneNum.slice(2,6);
4039					ph3 = phoneNum.slice(6,size);
4040					result = ph1 + '-' + ph2 + '-' + ph3;  
4041				} else if (size == 9) {
4042					ph1 = phoneNum.slice(0,2);
4043					ph2 = phoneNum.slice(2,5);
4044					ph3 = phoneNum.slice(5,size);
4045					result = ph1 + '-' + ph2 + '-' + ph3;  
4046				} else {
4047					result = phoneNum
4048				}
4049			} else {
4050				if(size == 11){
4051					ph1 = phoneNum.slice(0,3);
4052					ph2 = phoneNum.slice(3,7);
4053					ph3 = phoneNum.slice(7,size);
4054					result = ph1 + '-' + ph2 + '-' + ph3;  
4055				} else if(size == 10){
4056					ph1 = phoneNum.slice(0,3);
4057					ph2 = phoneNum.slice(3,6);
4058					ph3 = phoneNum.slice(6,size);
4059					result = ph1 + '-' + ph2 + '-' + ph3;  
4060				} else {
4061					result = phoneNum
4062				}
4063			}
4064			$("#printPhoneNum").text(result);
4065		},
4066		
4067		/*수정페이지 초기화*/
4068		updatePageInit : function(){
4069            CKEDITOR.instances.contentBox.setData($("#content").val());
4070            $("#fileLabel").text($(".file_attach_box div").length+" / 10");
4071            
4072            if($(".file_attach_box div").length > 0) $(".file_custom").remove();
4073		},
4074		
4075		/*페이지*/
4076		pageMove : function(page){
4077			var self = this;
4078			
4079			var category = $("#categoryStatus").val();
4080			var area = $("#areaStatus").val();
4081			var searchText = $("#searchTextStatus").val();
4082			var pageName = location.pathname;
4083			
4084			if(searchText != " " && searchText != " " && searchText != " " && searchText.length + area.length + searchText.length > 0){
4085				location.href = pageName + "?category=" + category + "&area=" + area + "&searchText=" + searchText + "&page=" + page;
4086			} else {
4087				location.href = pageName + "?page=" + page;
4088			}
4089			
4090		},
4091		
4092		/*기존 이미지 삭제*/
4093		exisImgDelete : function(imgValue, index){
4094			
4095			deleteImgName.push(imgValue);
4096			
4097			$(".file_attach_box div")[index].remove();
4098			$("#fileLabel").text($(".file_attach_box div").length+" / 10");
4099			
4100			$("#deleteImgName").val(deleteImgName.join());
4101		},
4102		
4103		/*게시글 삭제*/
4104		communityDelete : function(seq){
4105			var self = this;
4106			
4107			$.ajax({
4108				url : "/community/rest/communityDelete",
4109				type : "GET",
4110				data : {seq : seq},
4111				success : function(result){
4112					if(result > 0){
4113						alert("게시물이 정상적으로 삭제 되었습니다.");
4114						history.back();
4115					} else {
4116						alert("게시물 삭제에 실패하였습니다.\n다시 시도해 주세요.");
4117					}
4118				}
4119			})
4120		},
4121		
4122		/*쪽지보내기*/
4123		massageSend : function(){
4124			
4125			if($("#msgCotent").val() == "") {
4126				alert("내용을 입력해주세요");
4127				return false;
4128			}
4129			
4130			var data = {
4131				content : $("#msgCotent").val(),
4132				targetId : $("#targatId").val(),
4133				targetName : $("#targatName").val(),
4134				targetSeq : $("#targatSeq").val(),
4135				communityGubun : $("#communityGubun").val()
4136			}
4137			
4138			$.ajax({
4139				url : "/community/rest/sendMessage",
4140				type : "POST",
4141				contentType: "application/json",
4142				dataType:"JSON",
4143				data: JSON.stringify(data),
4144				success : function(result){
4145					if(result > 0) {
4146						alert("쪽지가 정상적으로 발송되었습니다.");
4147						window.close();
4148					} else {
4149						alert("쪽지가 정상적으로 발송되지 못했습니다.")
4150					}
4151				}
4152			})
4153			
4154		},
4155		
4156		/*로그인체크*/
4157		loginCheck : function(cFunction){
4158			var self = this;
4159			
4160			$.ajax({
4161				url : "/community/rest/loginCheck",
4162				type : "GET",
4163				success : function(result){
4164					if(result == "N") {
4165						if(confirm("로그인후 이용하실수 있습니다. 로그인 하시겠습니까?")){
4166							if(cFunction == "msgSend") {
4167								if (window.opener && !window.opener.closed){
4168									window.opener.location = "/member/login";
4169									window.close();
4170								}
4171							} else {
4172								location.href="/member/login";
4173							}
4174						} else {
4175							return false;
4176						}
4177					} else {
4178						if(cFunction != "msgSend") self.memberStatusCheck();
4179					}
4180						
4181				}
4182			})
4183		},
4184		
4185		/*회원정보확인*/
4186		memberStatusCheck : function(){
4187			
4188			$.ajax({
4189				url : "/community/rest/statusCheck",
4190				type : "GET",
4191				success : function(result){
4192					if(result.loginType == "union") {
4193						location.href = "/sale/transactionCertificate"
4194					} else if(result.loginType == "SNS"){
4195						alert("SNS회원은 글쓰기가 불가능 합니다. 일반회원으로 가입 후 이용해주세요.");
4196						location.href="/member/auth";
4197					} else if(result.loginType == "success") {
4198						location.href="/sale/transactionWrite";
4199					}
4200						
4201				}
4202			})
4203		},
4204		
4205		/*게시글 등록*/
4206		insertValueCheck : function(){
4207			if($("input[name=telNumber]").val().length > 11) {
4208				alert("전화번호는 11자 이내로 작성해 주세요.\n예) 01012345678, 0321234567"); 
4209				$("input[name=telNumber]").focus();
4210				return false;
4211			}
4212			if($("input[name=price]").val().length > 10) {
4213				alert("판매가격은 99억 이내로 작성해 주세요."); 
4214				$("input[name=price]").focus();
4215				return false;
4216			}
4217			if($("input[name=telNumber]").val() == "") {
4218				alert("*은 필수입력 항목입니다.");
4219				$("input[name=telNumber]").focus();
4220				return false;
4221			} else if($("input[name=price]").val() == "") {
4222				alert("*은 필수입력 항목입니다.");
4223				$("input[name=price]").focus();
4224				return false;
4225			} else if($("input[name=title]").val() == "") {
4226				alert("*은 필수입력 항목입니다.");
4227				$("input[name=title]").focus();
4228				return false;
4229			} else if($("input[name=title]").val() == "") {
4230				alert("*은 필수입력 항목입니다.");
4231				$("input[name=title]").focus();
4232				return false;
4233			} else if($("textarea[name=content]").val() == "") {
4234				alert("*은 필수입력 항목입니다.");
4235				$("input[name=content]").focus();
4236				return false;
4237			} else {
4238				var desc = CKEDITOR.instances.contentBox.getData();
4239				
4240				$("#content").val(desc);
4241				
4242				var pathName = location.pathname;
4243				
4244				
4245				if(pathName.indexOf("/sale/transactionUpdate") > -1){
4246					$("#updateForm").submit();
4247				} else {
4248					$("#insertForm").submit();
4249				}
4250			}
4251		},
4252		
4253		/*판매상태변경*/
4254		selStatusUpdate : function(seq){
4255			$.ajax({
4256				url : "/sale/rest/selStatusUpdate",
4257				type : "GET",
4258				data : {communitySeq : seq},
4259				success : function(result){
4260					if(result > 0) location.reload();
4261					else alert("거래완료에 실패하였습니다.")
4262				}
4263					
4264			})
4265		},
4266		
4267		/*관심버튼*/
4268		favoriteStatusChange : function(status,communitySeq,page,thisHtml){
4269			var self = this;
4270			
4271			var favoriteStatus;
4272			if(page == "detail"){
4273				if(status) favoriteStatus = "N";
4274				else favoriteStatus = "Y";
4275			} else {
4276				if(status) favoriteStatus = "Y";
4277				else favoriteStatus = "N";
4278			}
4279			
4280			$.ajax({
4281				url : "/community/rest/favoriteStatusChange",
4282				type : "POST",
4283				data : {
4284					status : favoriteStatus,
4285					communitySeq : communitySeq
4286				},
4287				success : function(result){
4288					if(!result.login){
4289						alert("로그인후 이용해주세요");
4290						$(thisHtml).removeClass("on");
4291						return false;
4292					}
4293					
4294					if(result.result > 0){
4295						if(page == "detail"){
4296							$("#favoriteCount").text(result.favoriteCount);
4297							
4298							if(favoriteStatus == 'Y') {
4299								$("#favoriteUpdateBtn").addClass("on");
4300								$("#likeModalMsg").text("등록되었습니다.");
4301							} else {
4302								$("#favoriteUpdateBtn").removeClass("on");
4303								$("#likeModalMsg").text("해제되었습니다.");
4304							}
4305						} else if(page == "list"){
4306							thisHtml.text(result.favoriteCount);
4307						}
4308						
4309					} else {
4310						alert("정상적으로 처리되지않았습니다.");
4311						if(favoriteStatus == 'Y') $("#favoriteStatusUpdate").removeClass("on");
4312						else $("#favoriteStatusUpdate").addClass("on");
4313					}
4314					
4315				}
4316				
4317				
4318				
4319			})
4320			
4321		},
4322		
4323		/*depth2지역요청*/
4324		selectArea2List : function(areaCode){
4325			var self = this;
4326	    	
4327	    	$.ajax({
4328	    		url : "/sale/rest/selectArea2List",
4329	    		type : "GET",
4330	    		data : {areaCode : areaCode},
4331	    		success : function(o){
4332	    			var html;
4333	    			$(".areaDepth2").remove();
4334	    			
4335	    			$.each(o, function(i, item){
4336	    				html += "<option class='areaDepth2' value='"+item.areaCode+"'>"+item.areaName+"</option>"
4337	    				$("#area2").append(html);
4338	    				html = "";
4339	    			})
4340	    		}
4341	    	})
4342
4343	    	
4344		},
4345		
4346		/*등록,수정 기존번호 사용체크*/
4347		phoneNumberSelect : function(selecter){
4348			if(selecter.is(":checked")){
4349				var memberSeq = selecter.val();
4350				
4351				$.ajax({
4352					url : "/sale/rest/selectNumber",
4353					type : "GET",
4354					data : {memberSeq : memberSeq},
4355					success : function(number){
4356						$("input[name=telNumber]").val(number);
4357					}
4358				})
4359			} else {
4360				$("input[name=telNumber]").val("");
4361			}
4362		},
4363		
4364		/*파일추가*/
4365		fileAdd : function(){
4366			var self = this;
4367			const dataTransfer = new DataTransfer();
4368			var imgLength = $(".imgFileBox").length;
4369			
4370			var files = $("#comFile")[0].files;
4371			
4372			var imageCheck = files[0]['type'].split("/");
4373			if(!imageCheck.includes("image")){
4374				alert("이미지 파일만 첨부 가능합니다.");
4375				return false;
4376			}
4377			
4378			if(fileArray.length + $(".file_attach_box .exisImg").length + files.length > 10){
4379				alert("이미지는 10개 까지만 추가할수있습니다.");
4380				return false;
4381			}
4382			
4383			
4384			var arr = Array.from(files);
4385			
4386			for(var i = 0; i < arr.length; i++){
4387				fileArray.push(arr[i]);
4388			}
4389			
4390			fileArray.forEach(file => { dataTransfer.items.add(file); });
4391			
4392			$("#comFile")[0].files = dataTransfer.files;
4393			
4394			
4395			$(".imgFileBox").remove();
4396			var html = "";
4397			for(var i = 0; i < $("#comFile")[0].files.length; i++){
4398				html += "<div class='imgFileBox'>";
4399				html += "<span>"+$("#comFile")[0].files[i].name+"</span>";
4400				html += "<a title='파일삭제'><span class='imgDelete material-icons-outlined'> close </span></a>";
4401				html += "</div>";
4402				
4403			}
4404			$(".file_attach_box").append(html);
4405			
4406			$("#fileLabel").text(($(".file_attach_box div").length)+" / 10");
4407			
4408		},
4409		
4410		/*파일 추가한것 삭제*/
4411		fileInputDelete : function(index){
4412			var self = this;
4413			const dataTransfer = new DataTransfer();
4414			
4415			fileArray.splice(index,1);
4416			
4417			fileArray.forEach(file => { dataTransfer.items.add(file); });
4418			
4419			$("#comFile")[0].files = dataTransfer.files;
4420			
4421			$(".file_attach_box div")[index].remove();
4422			
4423			$("#fileLabel").text($(".file_attach_box div").length+" / 10");
4424			
4425			if($(".file_attach_box div").length > 0){
4426				$(".file_name.file_custom").remove();
4427			} else {
4428				$(".file_attach_box").append('<input type="text" class="file_name file_custom" placeholder="선택된 파일 없음" readonly="">');
4429			}
4430			
4431		},
4432};
4433var	MEMBERMODIFY = {
4434		init : function(){
4435			var self = this;
4436		
4437			self.eventBind.enterEvent(self);
4438			self.eventBind.clickEvent(self);
4439		},
4440	    blankCkeck : function(text){
4441	         //문자열에 공백이 있는 경우
4442	         var blank_pattern2 = /[\s]/g;
4443	         if(blank_pattern2.test(text)){
4444	             
4445	             return false;
4446	         }
4447	         return true;
4448	    },
4449	    blankcheck2 : function(e){
4450	        var memberId = $(e.target).val();
4451	        var str_space = /\s/;
4452	        if(str_space.exec(memberId)){
4453	            memberId = memberId.replace(/\s| /gi,'');
4454	            $(e.target).val(memberId);
4455	        };
4456	    },
4457		eventBind : {
4458			enterEvent : function(self){
4459				$('#uqiename').val($('#germemberNickname').val());
4460				var gender = $('input:radio[name="joinGender"]').val();
4461				if(gender =="남자"){
4462					$('#male').prop("checked",true);
4463				}else if(gender =="여자"){
4464					$('#female').prop("checked",true);
4465				}
4466				var mailReception = $('#mailReception').val();
4467				var smsReception = $('#smsReception').val();
4468				
4469				if(mailReception == "Y"){
4470					$("input:checkbox[id='mailReception']").prop("checked", true)
4471				}
4472				if(smsReception =="Y"){
4473					$("input:checkbox[id='smsReception']").prop("checked", true)
4474				}
4475				
4476				var datayear = $('#germemberBirthDate1').attr('data-year');
4477			    var datamonth = $('#germemberBirthDate2').attr('data-month');
4478			    var dataday = $('#germemberBirthDate3').attr('data-day');
4479			   
4480			    if(datayear == null || datayear == "" || datayear == 0){
4481			    	$("#germemberBirthDate1").val("year1").prop("selected",true);
4482			    }else{
4483			    	  $("#germemberBirthDate1").val(datayear).prop("selected",true);
4484			    }
4485			    if(datamonth == null || datamonth =="" || datamonth == 0 ){
4486			    	$("#germemberBirthDate2").val("month1").prop("selected",true);
4487			    }else{
4488			        $("#germemberBirthDate2").val(datamonth).prop("selected",true);
4489			    }
4490			    if(dataday == null || dataday =="" || dataday == 0 ){
4491			    	$("#germemberBirthDate3").val("day1").prop("selected",true);
4492			    }else{
4493			    	$("#germemberBirthDate3").val(dataday).prop("selected",true);
4494			    }
4495				
4496				$("#germemberNumber1").on("keyup",function(){
4497	            	if($(this).val().length > 3) $(this).val($(this).val().slice(0, 3));
4498	            })
4499	            
4500	            	$("#germemberNumber2").on("keyup",function(){
4501	            	if($(this).val().length > 4) $(this).val($(this).val().slice(0, 4));
4502	            })
4503	            
4504	            	$("#germemberNumber3").on("keyup",function(){
4505	            	if($(this).val().length > 4) $(this).val($(this).val().slice(0, 4));
4506	            })
4507		        /*
4508		         *  정보입력 닉네임입력란 (/member/join)
4509		         */
4510		        $("input[name='germemberNickname']").on('keyup',function(e){
4511		        	var memberNickname = $('#germemberNickname').val();
4512		        	var uqiename = $('#uqiename').val();
4513		            //공백만 입력된 경우
4514		            var blank_pattern = /^\s+|\s+$/g;
4515		            var blank_pattern2 = /[\s]/g;
4516		        	$('#join_nick').addClass('error');
4517					$('#join_nick').removeClass('pass');
4518					
4519					if(memberNickname == uqiename){
4520			        	$('#join_nick').removeClass('error');
4521						$('#join_nick').addClass('pass');
4522						$("#nickmessage").hide();
4523						return false;
4524					}
4525		            
4526		        	if(memberNickname == null || memberNickname == ""){
4527		        		$("#join_nick").addClass("error");
4528		        		$("#join_nic").removeClass("pass");
4529		        		$("#nickmessage p").text("닉네임을 입력해주세요.")
4530		        		$("nickmessage").show();
4531						$('#nickpopup2').attr('disabled',true);
4532		        	}else{
4533		        		$("#join_nick").addClass("error");
4534		        		$("#nickmessage").show();
4535		        		$("#join_nick").removeClass("pass");
4536		        		$("#nickmessage p").text("닉네임 중복체크 해주세요")
4537		        		$('#nickpopup2').attr('disabled',false);
4538		        	}
4539		            if(memberNickname.replace(blank_pattern, '' ) == "" || blank_pattern2.test(memberNickname) == true  ){
4540		            	$('#nickpopup2').attr("disabled", true);
4541		            	return false;
4542		            }
4543		 
4544		        });
4545				 /*
4546		         *  마이페이지 회원정보 수정   이메일 셀렉박스 (member/join) 
4547		         */
4548		        $("#germemberEmail3").on("change", function(){
4549		        	var memberEmail3 = $('#germemberEmail3').val();
4550		        	$('#germemberEmail2').val(memberEmail3);
4551		        });
4552		        
4553		        // 닉네임팝업 입력란
4554		        $('#membernickcheck').on('keyup',function(e){
4555		        	var membernickcheck = $('#membernickcheck').val();
4556		        	var memberNickname = $('#memberNickname').val();
4557		        	$('#nickpopuptr').removeClass("pass");
4558		        	$('#nickpopuptr').addClass("error");
4559		        	$('#nickDupStatus').text("중복확인을 눌러주세요");
4560		        	$('#nickpopbtn2').attr('disabled',true);
4561		        	if(membernickcheck != memberNickname){
4562		        		$('#nickDupStatus').text("중복확인을 눌러주세요");
4563		        		$('#nickpopuptr').removeClass("pass");
4564			        	$('#nickpopuptr').addClass("error");
4565			        	$('#nickpopbtn2').attr('disabled',true);
4566		        	}
4567		        });
4568				  // 닉네임공백 입력 방지
4569		        $('#germemberNickname').on('keyup',function(e){
4570		        	self.blankcheck2(e);
4571		        });
4572				  // 닉네임공백 입력 방지
4573		        $('#membernickcheck').on('keyup',function(e){
4574		        	self.blankcheck2(e);
4575		        });
4576				  // 패스워드 공백입력 방지
4577		        $('#germemberPassword').on('keyup',function(e){
4578		        	self.blankcheck2(e);
4579		        });
4580				  // 패스워드확인 공백입력 방지
4581		        $('#germemberPasswordCk').on('keyup',function(e){
4582		        	self.blankcheck2(e);
4583		        });
4584		        //패스워드 입력란
4585		        $("input[name='germemberPassword']").on('keyup',function(e){
4586		        	var memberPassword =$('#germemberPassword').val();
4587		        	var memberPasswordCk =$('#memberPasswordCk').val();
4588		        	  var eng = memberPassword.search(/[a-z]/i);
4589			          var num = memberPassword.search(/[0-9]/g);
4590			          var spc =memberPassword.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);
4591			      	  var pwd_spc = /[\\<>.,`+-/'"{}[]|]/;
4592			      	  var pwd_spc2 = /[||]/;
4593			      	  
4594			      	  if(memberPassword == null || memberPassword == ""){
4595						  	//$('#pwckmessage').hide();
4596			      		    $('#pwmessage').hide();
4597						    $('#join_pw_chk').addClass('error');
4598						    $('#join_pw_chk').removeClass('pass');
4599						    $('#pwckmessage p').text("비밀번호를 확인해주세요");
4600					  }else{
4601						  	$('#pwckmessage').show();
4602					  }
4603			      	  if(memberPassword != memberPasswordCk || memberPassword !=null || memberPassword != ""  ){
4604			      		  $('#pwmessage').show();
4605			      		  $('#join_pw_chk').addClass('error');
4606						  $('#join_pw_chk').removeClass('pass');
4607						  $('#pwmessage p').text("비밀번호를 확인해주세요.")
4608			      	  }else if(memberPassword == memberPasswordCk){
4609			      		  $('#pwmessage').show();
4610						  $('#pwmessage p').text("잘 작성하셨어요.");
4611						  $('#join_pw_chk').addClass('pass');
4612						$('#join_pw_chk').removeClass('error');
4613					  }
4614
4615		        	
4616			        if((eng < 0 && num <0) || (eng < 0 && spc <0) || (spc < 0 && num < 0) || memberPassword.length <8 || pwd_spc.test(memberPassword)|| pwd_spc2.test(memberPassword)){
4617			        	$('#pwmessage').show();
4618			        	$("#join_pw").removeClass("pass");
4619			      		$("#join_pw").addClass("error");
4620		        		//$("[name='idInvalpw']").hide();
4621		        		$('#pwmessage p').text("비밀번호 유의사항을 읽어주세요.");
4622		        	}else{
4623		        		$('#pwmessage').show();
4624		        		$("[name='idInvalpw']").show();
4625		        		$('#pwmessage p').text("잘 작성하셨어요.");
4626		        		$("#join_pw").addClass("pass");
4627		        		$("#join_pw").removeClass('error')
4628		        	}
4629		        });
4630		        //암호확인 입력란
4631		        $('#germemberPasswordCk').on('keyup',function(){
4632		        	var memberPassword =$('#germemberPassword').val()
4633		        	var memberPasswordCk =$('#germemberPasswordCk').val()
4634		        	
4635		        	if($('#join_pw').hasClass('error')){
4636						$('#pwckmessage p').text("비밀번호를 확인해주세요.")	
4637						return false;
4638					}
4639
4640			      	  if(memberPasswordCk == null || memberPasswordCk == ""){
4641						  	$('#pwckmessage').hide();
4642						    $('#join_pw_chk').addClass('error');
4643						    $('#join_pw_chk').removeClass('pass');
4644					  }else{
4645						  	$('#pwckmessage').show();
4646					  }
4647		        	
4648		        	 if(memberPassword != memberPasswordCk){
4649						 $('#pwckmessage p').text("비밀번호를 확인해주세요.")	
4650						 $('#join_pw_chk').addClass('error');
4651						 $('#join_pw_chk').removeClass('pass');
4652					 }
4653		        	  if(memberPassword != memberPasswordCk || memberPassword !=null || memberPassword != ""  ){
4654			      		  $('#join_pw_chk').addClass('error');
4655						  $('#join_pw_chk').removeClass('pass');
4656						  $('#pwckmessage p').text("비밀번호를 확인해주세요.")
4657			      	  }else if(memberPassword === memberPasswordCk){
4658						  $('#pwckmessage p').text("잘 작성하셨어요.");
4659						  $('#join_pw_chk').addClass('pass');
4660						  $('#join_pw_chk').removeClass('error');
4661					  }
4662					
4663			        if( memberPasswordCk == "" || memberPasswordCk == null ){
4664			        	$('#pwckmessage p').text("비밀번호를 확인해주세요.")	
4665						$('#join_pw_chk').addClass('error');
4666						$('#join_pw_chk').removeClass('pass');
4667			        }else{
4668			        	$('#pwckmessage p').text("잘 작성하셨어요.");
4669						$('#join_pw_chk').addClass('pass');
4670						$('#join_pw_chk').removeClass('error');
4671			        }
4672					if(memberPassword != memberPasswordCk ){
4673						$('#pwckmessage p').text("비밀번호를 확인해주세요.");
4674						$('#join_pw_chk').addClass('error');
4675						$('#join_pw_chk').removeClass('pass');
4676					}else{
4677						$('#pwckmessage p').text("잘 작성하셨어요.");
4678
4679					}
4680		        });
4681		        
4682			},
4683			
4684			clickEvent : function(self){
4685		        /*
4686	        	 * 비밀번호 눈아이콘  
4687	        	 */
4688		        $('.material-icons-outlined').on('click',function(){
4689		        	$('#germemberPassword').toggleClass('active1');
4690		        	$('#memberpwd').toggleClass('active1');
4691		        	if($('#germemberPassword').hasClass('active1') || $('#memberpwd').hasClass('active1') ){
4692		        		$('#germemberPassword').attr('type',"text");
4693		        		$('#memberpwd').attr('type',"text");
4694		        	}else{
4695		        		$('#germemberPassword').attr('type',"password");
4696		        		$('#memberpwd').attr('type',"password");
4697		        	}
4698		        });
4699		        /*
4700	        	 * 비밀번호 확인 눈아이콘 
4701	        	 */	        
4702		        $('.material-icons-outlined1').on('click',function(){
4703		        	$('#germemberPasswordCk').toggleClass('active1');
4704		        	$('#memberpwdck').toggleClass('active1');
4705		        	if($('#germemberPasswordCk').hasClass('active1') || $('#memberpwdck').hasClass('active1')){
4706		        		$('#germemberPasswordCk').attr('type',"text");
4707		        		$('#memberpwdck').attr('type',"text");
4708		        	}else{
4709		        		$('#germemberPasswordCk').attr('type',"password");
4710		        		$('#memberpwdck').attr('type',"password");
4711		        	}
4712		        });
4713		        //닉네임팝업 버튼
4714				$('#nickpopup2').on('click',function(){
4715					var membernickname = $("#germemberNickname").val();
4716					$('#membernickcheck').val(membernickname);
4717					 //공백만 입력된 경우
4718		            var blank_pattern = /^\s+|\s+$/g;
4719		            if(membernickname.replace(blank_pattern, '' ) == "" ){
4720		                return false;
4721		            }
4722		            //문자열에 공백이 있는 경우
4723		            var blank_pattern2 = /[\s]/g;
4724		            if( blank_pattern2.test(membernickname) == true){
4725		                return false;
4726		            }
4727					   var obj = {memberNickname : membernickname};
4728						$.ajax({
4729							url: "/rest/nickChk",
4730							type: "POST",
4731							contentType: "application/json",
4732							dataType:"JSON",
4733							data: JSON.stringify(obj),
4734							success: function(data){	
4735								if(data == 0){								
4736									$('#nickDupStatus').text($('#membernickcheck').val() +"는 사용 가능한 닉네임 입니다.")																
4737									$('#nickpopuptr').addClass('pass');
4738									$('#nickpopuptr').removeClass('error');		
4739									$('#nickpopbtn2').attr('disabled',false);
4740								}else{
4741									$('#nickDupStatus').text("이미 사용중인 닉네임 입니다.");								
4742									$('#nickpopuptr').addClass('error');
4743									$('#nickpopuptr').removeClass('pass');
4744									$('#nickpopbtn2').attr('disabled',true);
4745								}
4746							},
4747							error: function (error){
4748								console.log(error);
4749							}
4750						});
4751				});
4752				//닉네임팝업 중복버튼
4753				$('#btn-nick-dup-check2').on('click',function(){
4754					
4755					var membernick = $('#membernickcheck').val();
4756					
4757					 //공백만 입력된 경우
4758		            var blank_pattern = /^\s+|\s+$/g;
4759		            if(membernick.replace(blank_pattern, '' ) == "" ){
4760		                return false;
4761		            }
4762		            //문자열에 공백이 있는 경우
4763		            var blank_pattern2 = /[\s]/g;
4764		            if( blank_pattern2.test(membernick) == true){
4765		                return false;
4766		            }
4767					
4768					var obj = {memberNickname : membernick};
4769						$.ajax({
4770							url: "/rest/nickChk",
4771							type: "POST",
4772							contentType: "application/json",
4773							dataType:"JSON",
4774							data: JSON.stringify(obj),
4775							success: function(data){	
4776								if(data == 0){								
4777									$('#nickDupStatus').text($('#membernickcheck').val() +"는 사용 가능한 닉네임 입니다.")																
4778									$('#nickpopuptr').addClass('pass');
4779									$('#nickpopuptr').removeClass('error');		
4780									$('#nickpopbtn2').attr('disabled',false);
4781								}else{
4782									$('#nickDupStatus').text("이미 사용중인 닉네임 입니다.");								
4783									$('#nickpopuptr').addClass('error');
4784									$('#nickpopuptr').removeClass('pass');
4785									$('#nickpopbtn2').attr('disabled',true);
4786								}
4787							},
4788							error: function (error){
4789								console.log(error);
4790							}
4791						});
4792				});
4793				//닉네임사용하기버튼
4794				$('#nickpopbtn2').on('click',function(){
4795					var membernickcheck = $('#membernickcheck').val();
4796					$('#germemberNickname').val(membernickcheck);
4797					$('#uqiename').val(membernickcheck);
4798					$('#join_nick').removeClass('error');
4799					$('#join_nick').addClass('pass');				
4800					$('#nickmessage p').text("잘 작성하셨어요.");
4801					
4802				});
4803				/*
4804				 * 마이페이지 닉네임확인체크 버튼 (/mypageme/mberModify) 팝업 말고 alert으로 처리 
4805				 */
4806//				$('.btn_nick_check').on('click',function(){
4807//					var niccheck=$('#memberIdCk').val();
4808//					
4809//					var obj = {memberNickname : niccheck};
4810//					
4811//					   $.ajax({
4812//			                url: "/rest/nickChk",
4813//			                type: "POST",
4814//			                contentType: "application/json",
4815//			                dataType:"JSON",
4816//			                data: JSON.stringify(obj),
4817//			                success: function(data){
4818//			                    if(data == '0'){
4819//			                    	$("#nicpopbtn").prop("disabled",false);
4820//			                    	alert("사용가능한 닉네임입니다");
4821//			                    	$("#idDupStatus p").text($('#memberIdCk').val()+" 는(은) 사용가능합니다");
4822//			                    	$('#idDupStatus').removeClass('error');
4823//			                    	$('#idDupStatus p').show();
4824//			                    	
4825//			                    } else {
4826//			                    	$('#idDupStatus p').show();
4827//			                    	$("#nicpopbtn").prop("disabled",true);
4828//			                    	$('#idDupStatus').addClass('error');
4829//			                    	$("#idDupStatus p").text("이미 사용중인 닉네임 입니다");
4830//			                    }
4831//			                },
4832//			                error: function (error){
4833//			                    console.log(error);
4834//			                }
4835//			            });
4836//				});
4837				/*
4838				 * 마이페이지 닉네임중복체크 팝업 사용하기 버튼  (/mypageme/mberModify) 팝업 말고 alert으로 처리 
4839				 */
4840//				$('#nicpopbtn').on('click',function(){
4841//				   $("#germemberNickname").val($('#memberIdCk').val());
4842//		     	   $('#uqiename').val($('#germemberNickname').val());
4843//		             
4844//		             $('.id_overlap').removeClass('on');
4845//		             $('body').css('overflow','initial');
4846//		             $('#layerDim').addClass('dn');
4847//		             $('#ly_pop').addClass('pop_dn')
4848//				});
4849				
4850				/*
4851				 * 마이페이지 회원 수정 버튼 (/mypageme/mberModify)
4852				 */
4853				$('#myPageUpdate').on('click',function(){
4854					var grade = $("#myPageUpdate").attr("data-membergrade");
4855					 
4856					  var memberpwd = $('#germemberPassword').val();
4857					  var memberpwdck = $('#germemberPasswordCk').val();
4858					  
4859					  var eng = memberpwd.search(/[a-z]/i)
4860			          var num = memberpwd.search(/[0-9]/g);
4861			          var spc =memberpwd.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);
4862			          var pwd_spc = /[\\<>.,`+-/'"{}[]|]/;
4863			          var pwd_spc2 = /[||]/;
4864					  var maleVal = $(":input:radio[id=male]:checked").val();
4865		              
4866		              var femaleVal = $(":input:radio[id=female]:checked").val();
4867		              
4868		              var yearVal = $("#germemberBirthDate1").val();
4869		              var monthVal = $("#germemberBirthDate2").val();
4870		              var dayVal = $("#germemberBirthDate3").val();
4871		              if(Number(monthVal) <= 9) monthVal = "0"+monthVal;
4872		              if(Number(dayVal) <= 9) dayVal = "0"+dayVal;
4873		              var memberBirthDateVal = yearVal +  monthVal +  dayVal;
4874		              
4875		              $('#memberBirthDate').val(memberBirthDateVal); //히든값
4876		              
4877		              var mailVal1 = $("#germemberEmail1").val();
4878		              var mailVal2 = $("#germemberEmail2").val();
4879		              var mailVal3 = $("#germemberEmail3").val();
4880		   
4881		              if (mailVal3 == "") {
4882		                $('#memberEmail').val(mailVal1 + "@" + mailVal2);
4883		              } else {
4884		              	$('#memberEmail').val(mailVal1 + "@" + mailVal3);
4885		              }
4886		              
4887		              if($('#memberEmail').val()=="@"){
4888		            	  $('#memberEmail').val("");
4889		              }
4890		              
4891		              var memberNumber1 = $('#germemberNumber1').val();
4892		              var memberNumber2 = $('#germemberNumber2').val();
4893		              var memberNumber3 = $('#germemberNumber3').val();
4894		              
4895		              var memberNumberPhone = $('#germemberNumber1').val() +  $('#germemberNumber2').val() + $('#germemberNumber3').val(); //조합회원 제외
4896		              var memberNumberPhone1 = $('#germemberNumber4').val() +  $('#germemberNumber5').val() + $('#germemberNumber6').val();
4896 //조합회원
4897		              
4898		              if(grade == "D" || grade == "U"){
4899		              $('#memberNumberPhone').val(memberNumberPhone1); //히든값
4900		              }else{
4901		            	  $('#memberNumberPhone').val(memberNumberPhone); //히든값
4902		              }
4903		        	
4904		        	// Id Checked
4905		            if ($('#uqiename').val() == "" || $('#uqiename').val() != $("input[name='germemberNickname']").val()){
4906		                alert("닉네임 중복 검사를 먼저 하십시오.");   return false;
4907		            }
4908		            if(grade != "S"){
4909			            if(memberpwd.search(/\s/) != -1){
4910			        		alert("공백없이 입력해주세요"); return false;
4911			        	}
4912			        	if($('.join_pw').hasClass('error')){
4913			        		alert("최소 8자리 이상의 영문 대문자, 영문 소문자, 숫자, 특수문자 중 2개 이상의 조합으로 작성하세요(+ - / \ ` { } [ ] | < > . , ' " +"사용불가).");
4914			        		return false;
4915			        	}
4916			            // Password Checked(비교)
4917			            if ($('#germemberPassword').val() != $('#germemberPasswordCk').val()){
4918			                alert("패스워드 사용 규칙 안내:\n\n재입력 패스워드가 일치하지 않습니다. 다시 입력하세요.");   return false;
4919			            }
4920		            }
4921		            var sexVal = "";
4922		              
4923		              if (typeof(maleVal) !== "undefined"){
4924		              	 sexVal = "남자";
4925		              	} else if (typeof(femaleVal) !== "undefined"){ 
4926		              	 sexVal = "여자";
4927		              	} 
4928		              /*else {
4929		              	 alert("성별을 선택해주세요");
4930		              	 return false;
4931		              	}*/
4932		              $('#memberSex').val(sexVal); //히든값
4933		              
4934		              
4935		              /*if(yearVal == "" || yearVal == null || yearVal == "년도" || yearVal == "year1" ){
4936		             	 alert("년도를 선택해주세요"); 
4937		             	 
4938		             	 return false;
4939		              }
4940		              if(monthVal == "" || monthVal == null || monthVal == "월" || monthVal == "month1" ){
4941		             	 alert("달월을 선택해주세요"); return false;
4942		              }
4943		              if(dayVal == "" || dayVal == null || dayVal == "일" || dayVal == "day1"){
4944		             	 alert("일자를 선택해주세요"); return false;
4945		              }*/
4946		            var emailtext=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
4947		            
4948		            // Email Checked
4949//		            if ($('#memberEmail').val() == "" || $('#memberEmail').val().match(/(@)/) == null ||(!emailtext.test($('#memberEmail').val()))){
4950//		                alert("사용하고 계시는 전자우편 주소를 정확히 입력해 주십시오.");   return false;
4951//		            }
4952//		            if(mailVal2 == null || mailVal2 == ""){
4953//		            	alert("이메일을 정확히 입력해 주십시오."); return false;
4954//		            }
4955		            
4956		            if(memberNumber1 == null || memberNumber1 ==""){
4957		            	alert("전화번호를 정확히 입력해 주십시오");  
4958		            	$('#germemberNumber1').focus();
4959		            	return  false;
4960		            }
4961		            if(memberNumber2 == null || memberNumber2 ==""){
4962		            	alert("전화번호를 정확히 입력해 주십시오"); 
4963		            	$('#germemberNumber2').focus();
4964		            	return false;
4965		            }
4966		            if(memberNumber3 == null || memberNumber3 ==""){
4967		            	alert("전화번호를 정확히 입력해 주십시오");  
4968		            	$('#germemberNumber3').focus();
4969		            	return false;
4970		            }
4971		            
4972		            if($('#mailReception').is(":checked")){
4973		            	$('#mailReception').val("Y");
4974		            }else{
4975		            	$('#mailReception').val("N");
4976		            }
4977		          
4978		            if($('#smsReception').is(":checked")){
4979		            	$('#smsReception').val("Y");
4980		            }else{
4981		            	$('#smsReception').val("N");
4982		            }
4983		        
4984		            var mid = $('#memberId').html();
4985		            //var mname = $('#memberName').html();
4986		            var mname = $('#memberName2').text();
4987		            
4988		            $('#memberId').val(mid);
4989		            $('#memberName').val(mname);
4990
4991
4992		            var obj = {
4993		            	  memberId : $('#memberId').text(),
4994	            		  memberName : $('#memberName2').text(),
4995	            		  memberNickname : $('#uqiename').val(),
4996	            		  memberPassword : $('#germemberPassword').val(),
4997	            		  memberSex : $('#memberSex').val(),
4998	            		  memberBirthdate : $('#memberBirthDate').val(),
4999	            		  jacmokText : $('#gerjacmokText').val(),
5000	            		  memberEmail : $('#memberEmail').val(),
5001	            		  memberNumberPhone: $('#memberNumberPhone').val(),
5002	            		  receiveEmailYn : $('#mailReception').val(),
5003	            		  receiveSmsYn : $('#smsReception').val()
5004		            };
5005		            
5006		            $.ajax({
5007
5008		                url: "/rest/userupdate",
5009		                type: "POST",
5010		                contentType: "application/json",
5011		                dataType:"JSON",
5012		                data: JSON.stringify(obj),
5013		                success: function(data){
5014		                    if(data.message == "SUCCESS"){
5015		                    	alert("성공적으로 회원정보가 수정되었습니다.")
5016		                    	location.reload();
5017		                    }else{
5018		                        alert("에러가 발생하였습니다. 다시 시도해주세요.");
5019		                    }
5020		                },
5021		                error: function (error){
5022		                    console.log(error);
5023		                }
5024		            });
5025				});
5026				/*
5027				 * 회원 탈퇴화면이동 
5028				 */
5029				$('#myPageDelete').off().on('click',function(){
5030					var grade = $("#myPageDelete").attr("data-membergrade");
5031					if(grade == "S" || grade == "F" || grade == "D"){
5032						location.href="/myPage/memberSecession";
5033					}else if(grade == "T" || grade == "A" || grade == "C" || grade == "U"){
5034						location.href="/myPage/memberPaidSecession";
5035					}
5036					
5037//					  var obj = {
5038//			            	  memberId : $('#memberId').text(),
5039//		            		  memberName : $('#memberName').text(),
5040//			            };
5041//					
5042//				      $.ajax({
5043//			                url: "/rest/userdelete",
5044//			                type: "POST",
5045//			                contentType: "application/json",
5046//			                dataType:"JSON",
5047//			                data: JSON.stringify(obj),
5048//			                success: function(data){
5049//			                    if(data.message == "SUCCESS"){
5050//			                    	alert("회원정보가 삭제되었습니다");
5051//			                    	location.href="/main"
5052//			                    }else{
5053//			                        alert("에러가 발생했습니다 다시 시도해주세요.");
5054//			                    }
5055//			                },
5056//			                error: function (error){
5057//			                    console.log(error);
5058//			                }
5059			            });
5060				}
5061			}
5062}
5063
5064/*마이페이지 소통광장*/
5065var MYPAGECOMMUNITY = {
5066		init : function(){
5067			var self = this;
5068			self.eventBind.clickEvent(self);
5069		},
5070		
5071		eventBind : {
5072			
5073			clickEvent : function(self){
5074				$(".massageDeleteBtn").on("click",function(){
5075					var massageSeq = $(this).attr("data-messageseq");
5076					
5077					self.massageDelete(massageSeq);
5078				})
5079				
5080				$("#msgSendBtn").on("click",function(){
5081					self.msgReply();
5082				})
5083				
5084				$(".selStatusUpdateBtn").on("click",function(){
5085					var status = $(this).prev().val();
5086					var seq = $(this).attr("data-communityseq");
5087					self.selStatusUpdate(status,seq);
5088				})
5089			}
5090			
5091		},
5092		
5093		/*판매상태수정*/
5094		selStatusUpdate : function(status,seq){
5095			var self = this;
5096
5097			$.ajax({
5098				url : "/rest/community/statusUpdate",
5099				type : "POST",
5100				data : {
5101					status : status,
5102					seq : seq
5103				},
5104				success : function(result){
5105					if(result > 0){
5106						alert("정상적으로 거래상태 변경 성공 하였습니다.");
5107					} else {
5108						alert("거래상태 변경 처리 실패하였습니다.\n다시 시도해 주세요");
5109						location.reload();
5110					}
5111					
5112				}
5113			
5114			})
5115		},
5116		
5117		/*쪽지삭제*/
5118		massageDelete : function(seq){
5119			var self = this;
5120			
5121			$.ajax({
5122				url : "/rest/communityMassage/delete",
5123				type : "POST",
5124				data : {seq : seq},
5125				success : function(result){
5126					if(result > 0) {
5127						alert("정상적으로 삭제 되었습니다.");
5128						location.reload();
5129					} else {
5130						alert("삭제되지 않았습니다.\n다시 시도해 주세요");
5131					}
5132				}
5133			})
5134		},
5135		
5136		/*쪽지답장*/
5137		msgReply : function(){
5138			var self = this;
5139			
5140			if($("#msgCotent").val() == "") {
5141				alert("내용을 입력해주세요");
5142				return false;
5143			}
5144			
5145			var data = {
5146				content : $("#msgCotent").val(),
5147				targetId : $("#targatId").val(),
5148				targetName : $("#targatName").val(),
5149				targetSeq : $("#targatSeq").val(),
5150				communityGubun : $("#communityGubun").val(),
5151				replyStatus : "Y"
5152			}
5153			
5154			$.ajax({
5155				url : "/community/rest/sendMessage",
5156				type : "POST",
5157				contentType: "application/json",
5158				dataType:"JSON",
5159				data: JSON.stringify(data),
5160				success : function(result){
5161					if(result > 0) {
5162						alert("쪽지가 정상적으로 발송되었습니다.");
5163						window.close();
5164					} else {
5165						alert("쪽지가 정상적으로 발송되지 못했습니다.")
5166					}
5167				}
5168			})
5169			
5170		}
5171		
5172		
5173};
5174
5175/*구독자게시판*/
5176var SUBSBOARD = {
5177	    listOption: {
5178	        rows: 20,
5179	        pagePerBlock: 10
5180	    },
5181	    
5182		init : function(){
5183			var self = this;
5184			var pathName = location.pathname;
5185			self.eventBind.eEvent(self);
5186			self.eventBind.clickEvent(self);
5187			
5188			if(pathName == "/ncompany/subscription/bulletinBoard"){
5189				self.selectBoardList(1);
5190			}
5191			
5192		},
5193		
5194		eventBind : {
5195			eEvent : function(self){
5196				
5197	            $("#searchText").keydown(function(key) {
5198	                if (key.keyCode == 13) {
5199	                    $("#searchBtn").trigger("click");
5200	                }
5201	            });
5202				
5203			},
5204			clickEvent : function(self){
5205				
5206				$("#submitBtn").on("click",function(){
5207					
5208					self.formCheck();
5209				})
5210				
5211				$(document).on("click",".paging_wrap a",function(){
5212					var page = $(this).attr("data-page");
5213					self.selectBoardList(page);
5214				})
5215				
5216				$("#searchBtn").on("click",function(){
5217					self.selectBoardList(1);
5218				})
5219				
5220				$("#passwordMatchBtn").on("click",function(){
5221					var password = $("#anonymous-secure").val();
5222					var contentSeq = $(this).attr("data-contentseq");
5223					var action = $(this).attr("data-action");
5224					var bool = self.passwordMatch(contentSeq, password);
5225					
5226					if(bool){
5227						if(action == "list") location.href="/ncompany/subscription/bulletinBoard/detail/"+contentSeq;
5228						else if(action == "receive") location.href="/ncompany/subscription/bulletinBoard/write?boardSeq="+contentSeq;
5229						else if(action == "update") location.href="/ncompany/subscription/bulletinBoard/edit/"+contentSeq;
5230						else if(action == "delete") location.href="/rest/ncompany/subscription/bulletinBoard/delete?boardSeq="+contentSeq;
5231					} else {
5232						alert("비밀번호가 일치하지 않습니다.\n확인 후 다시 시도해 주세요.");
5233						$("#anonymous-secure").val("");
5234					}
5235				})
5236				
5237				$(document).on("click",".secretBoard",function(){
5238					var contentSeq = $(this).attr("data-contentseq");
5239					$("#passwordMatchBtn").attr("data-contentseq",contentSeq);
5240					$("#passwordMatchBtn").attr("data-action","list");
5241				})
5242				
5243				$("#receiveBtn").on("click",function(){
5244					var contentSeq = $(this).attr("data-contentseq");
5245					$("#passwordMatchBtn").attr("data-contentseq",contentSeq);
5246					$("#passwordMatchBtn").attr("data-action","receive");
5247				})
5248				
5249				$("#updateBtn").on("click",function(){
5250					var contentSeq = $(this).attr("data-contentseq");
5251					$("#passwordMatchBtn").attr("data-contentseq",contentSeq);
5252					$("#passwordMatchBtn").attr("data-action","update");
5253				})
5254				
5255				$("#deleteBtn").on("click",function(){
5256					var contentSeq = $(this).attr("data-contentseq");
5257					$("#passwordMatchBtn").attr("data-contentseq",contentSeq);
5258					$("#passwordMatchBtn").attr("data-action","delete");
5259				})
5260			}
5261		},
5262		
5263		/*비밀번호 매치*/
5264		passwordMatch : function(contentSeq, password){
5265			var returnA = false;
5266			$.ajax({
5267				url : "/rest/ncompany/subscription/bulletinBoard/passwordMatch",
5268				type : "GET",
5269				async: false,
5270				data : {
5271					contentSeq : contentSeq,
5272					password : password
5273				},
5274				success : function(result){
5275					if(result > 0) returnA = true;
5276				}
5277				
5278			})
5279			return returnA;
5280		},
5281		
5282		/*게시글 리스트 요청 및 출력*/
5283		selectBoardList : function(page){
5284			var self = this;
5285			
5286			$.ajax({
5287				url : "/rest/ncompany/subscription/bulletinBoard/list",
5288				type : "POST",
5289				data : {
5290					selectOption : $("#selectOption option:selected").val(),
5291		            searchText : $("#searchText").val(),
5292		            page : page,
5293		            size : self.listOption.rows
5294		        },
5295				success : function(o){
5296		    		var html = '';
5297		    		if(o.totalElements == 0) $("#listBody").empty();
5298		    		if(page > o.totalPages) return false;
5299
5300		    		$("#listBody").empty();
5301		    		
5302		    		$.each(o.content, function(i, item){
5303		    			
5304		    			
5305		    			
5306		    			if(item.gubun == "main"){
5307		    				
5308		    				if(item.deleteStatus == 'Y' && item.privateStatus == 'Y'){
5309		    					html += "<tr>";
5310		    					html += "<td>"+item.boardSeq+"</td>";
5311		    					html += "<td class='ta_left'><a class='delete secret' href='javascript:void(0);'>삭제된 게시물 입니다.</a></td>";
5312		    				} else {
5313		    					if(item.deleteStatus == 'Y') {
5314		    						html += "<tr>";
5315		    						html += "<td>"+item.boardSeq+"</td>";
5316		    						html += "<td class='ta_left'><a class='delete' href='javascript:void(0);'>삭제된 게시물 입니다.</a></td>";
5317		    					}
5318		    					
5319		    					if(item.privateStatus == 'Y') {
5320		    						html += '<tr data-toggle="modal" data-target="#board_pw_pop">';
5321		    						html += "<td>"+item.boardSeq+"</td>";
5322		    						html += "<td class='ta_left'><a class='secret secretBoard' data-contentseq="+item.boardSeq+" href='javascript:void(0);'>비공개로 등록된 게시물입니다.</a></td>";
5323		    					}
5324		    				}
5325		    				
5326		    				if(item.deleteStatus == 'N' && item.privateStatus == 'N'){
5327	    						html += "<tr>";
5328	    						html += "<td>"+item.boardSeq+"</td>";
5329		    					html += "<td class='ta_left'><a href=/ncompany/subscription/bulletinBoard/detail/"+item.boardSeq+">"+item.title+"</a></td>";
5330		    				}
5331		    				
5332		    			} else {
5333		    				
5334		    				if(item.deleteStatus == 'Y' && item.privateStatus == 'Y'){
5335	    						html += "<tr>";
5336	    						html += "<td>"+item.boardSeq+"</td>";
5337		    					html += "<td class='ta_left'><a class='reply delete' href='javascript:void(0);'>삭제된 게시물 입니다.</a></td>";
5338		    				} else {
5339		    					if(item.deleteStatus == 'Y') {
5340		    						html += "<tr>";
5341		    						html += "<td>"+item.boardSeq+"</td>";
5342		    						html += "<td class='ta_left'><a class='reply delete' href='javascript:void(0);'>삭제된 게시물 입니다.</a></td>";
5343		    					}
5344		    					
5345		    					if(item.privateStatus == 'Y') {
5346		    						html += '<tr data-toggle="modal" data-target="#board_pw_pop">';
5347		    						html += "<td>"+item.boardSeq+"</td>";
5348		    						html += "<td class='ta_left'><a class='reply secretBoard' data-contentseq="+item.boardSeq+" href='javascript:void(0);'>"+item.title+"</a></td>";
5349		    					}
5350		    				}
5351		    				
5352		    				if(item.deleteStatus == 'N' && item.privateStatus == 'N'){
5353	    						html += "<tr>";
5354	    						html += "<td>"+item.boardSeq+"</td>";
5355		    					html += "<td class='ta_left'><a class='reply' href=/ncompany/subscription/bulletinBoard/detail/"+item.boardSeq+">"+item.title+"</a></td>";
5356		    				}
5357		    				
5358		    			}
5359		    			
5360		    			if(item.name == null){
5361							html += "<td>"+item.registName+"</td>";
5362						}else{
5363							html += "<td>"+item.name+"</td>";
5364						}
5365		    			html += "<td>"+item.date+"</td>";
5366						if(item.readCount == null){
5367							html += "<td>0</td>";
5368						}else{
5369							html += "<td>"+item.readCount+"</td>";
5370						}
5371		    			html += "</tr>";
5372		    			
5373		    			$("#listBody").append(html);
5374		    			
5375		    			html = "";
5376		    			
5377		    			
5378		    			
5379		    		});
5380		    		
5381					var pageHtml = "";
5382					
5383					
5384					if(Number(page) > 6){
5385						
5386						if(Number(page) + 4 > o.totalPages){
5387							$("#pageingBox li").removeClass("on");
5388							$("."+(o.pageable.pageNumber+1)).parent().addClass("on");
5389							return false;
5390						}
5391						
5392						pageHtml += '<a href="#" onclick="return false;" class="prev_btn" data-page="'+(Number(page)-6)+'"></a>';
5393						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)-5)+'" data-page="'+(Number(page)-5)+'">'+(Number(page)-5)+'</a></li>';
5394						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)-4)+'" data-page="'+(Number(page)-4)+'">'+(Number(page)-4)+'</a></li>';
5395						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)-3)+'" data-page="'+(Number(page)-3)+'">'+(Number(page)-3)+'</a></li>';
5396						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)-2)+'" data-page="'+(Number(page)-2)+'">'+(Number(page)-2)+'</a></li>';
5397						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)-1)+'" data-page="'+(Number(page)-1)+'">'+(Number(page)-1)+'</a></li>';
5398						pageHtml += '<li class="on"><a href="#" onclick="return false;" class="'+(Number(page))+'" data-page="'+(Number(page))+'">'+(Number(page))+'</a></li>';
5399						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)+1)+'" data-page="'+(Number(page)+1)+'">'+(Number(page)+1)+'</a></li>';
5400						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)+2)+'" data-page="'+(Number(page)+2)+'">'+(Number(page)+2)+'</a></li>';
5401						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)+3)+'" data-page="'+(Number(page)+3)+'">'+(Number(page)+3)+'</a></li>';
5402						pageHtml += '<li><a href="#" onclick="return false;" class="'+(Number(page)+4)+'" data-page="'+(Number(page)+4)+'">'+(Number(page)+4)+'</a></li>';
5403						pageHtml += '<a href="#" class="next_btn" onclick="return false;" data-page="'+(Number(page)+5)+'"></a>';
5404						
5405						$("#pageingBox").html(pageHtml);
5406						
5407					} else if(Number(page) <= 6){
5408						
5409						pageHtml += '<a href="#" onclick="return false;" class="prev_btn" data-page="1"></a>'
5410						pageHtml += '<li><a href="#" onclick="return false;" class="1" data-page="1">1</a></li>'
5411						pageHtml += '<li><a href="#" onclick="return false;" class="2" data-page="2">2</a></li>'
5412						pageHtml += '<li><a href="#" onclick="return false;" class="3" data-page="3">3</a></li>'
5413						pageHtml += '<li><a href="#" onclick="return false;" class="4" data-page="4">4</a></li>'
5414						pageHtml += '<li><a href="#" onclick="return false;" class="5" data-page="5">5</a></li>'
5415						pageHtml += '<li><a href="#" onclick="return false;" class="6" data-page="6">6</a></li>'
5416						pageHtml += '<li><a href="#" onclick="return false;" class="7" data-page="7">7</a></li>'
5417						pageHtml += '<li><a href="#" onclick="return false;" class="8" data-page="8">8</a></li>'
5418						pageHtml += '<li><a href="#" onclick="return false;" class="9" data-page="9">9</a></li>'
5419						pageHtml += '<li><a href="#" onclick="return false;" class="10" data-page="10">10</a></li>'
5420						pageHtml += '<a href="#" class="next_btn" onclick="return false;" data-page="11"></a>'
5421						
5422						$("#pageingBox").html(pageHtml);
5423						$("."+(o.pageable.pageNumber+1)).parent().addClass("on");
5424							
5425					}
5426					
5427				}
5428			})
5429		},
5430		
5431		/*문의하기 등록*/
5432		formCheck : function(){
5433			var self = this;
5434			var name = $("input[name=registName]").val();
5435			var email = $("input[name=registEmail]").val();
5436			var title = $("input[name=contentSubject]").val();
5437			var content = $("textarea[name=bodyValue]").val();
5438			var password = $("input[name=password]").val();
5439			
5440			if(name.length <= 0) {
5441				alert("이름을 입력해 주세요");
5442				$("input[name=registName]").focus();
5443				return false;
5444			}
5445			if(email.length <= 0) {
5446				alert("이메일을 입력해 주세요");
5447				$("input[name=registEmail]").focus();
5448				return false;
5449			}
5450			if(!email.includes("@") || email.startsWith("@") || email.endsWith("@")) {
5451				alert("이메일의 양식을 지켜 입력해주세요");
5452				$("input[name=registEmail]").focus();
5453				return false;
5454			}
5455			if(title.length <= 0) {
5456				alert("제목을 입력해 주세요");
5457				$("input[name=contentSubject]").focus();
5458				return false;
5459			}
5460			if(content.length <= 0) {
5461				alert("내용을 입력해 주세요");
5462				$("input[name=bodyValue]").focus();
5463				return false;
5464			}
5465			if(password.length <= 0) {
5466				alert("비밀번호를 입력해 주세요");
5467				$("input[name=password]").focus();
5468				return false;
5469			}
5470			if(password.length < 6) {
5471				alert("비밀번호는 6자리까지 입력해 주세요.");
5472				$("input[name=password]").focus();
5473				return false;
5474			}
5475			
5476
5477			$("#insertForm").submit(); 
5478
5479		}
5480		
5481		
5482};
5483var UNION = {
5484		
5485	init : function () {
5486        var self = this;
5487        self.unionElectionList();
5488		//self.drawUnionElectionList();
5489        self.eventBind();
5490		console.log("UNIONELECTION.INIT");
5491    },
5492    eventBind : function(){
5493		var self = this;
5494		$('.union_tab li').on('click', function(){
5495			$('.union_tab li').removeClass('on');
5496			$(this).addClass("on");
5497			var code = $(this).children().eq(0).attr('data-code');
5498			$("#searchOption01").val(code).prop("selected",true);
5499			self.unionElectionList()
5500        });     
5501
5502        $("#unionSearch").on('click', function () {
5503			self.unionElectionList();
5504			
5505        });
5506
5507		$("input[name=searchText]").keydown(function(key) {
5508			if (key.keyCode == 13) {
5509				$("#unionSearch").trigger("click");
5510			}
5511		});
5512		
5513		$('#search_Btn').on('click',function(){
5514			var pattern = /\s/g;
5515			var searchText = $('#searchText').val();
5516			if(searchText  == '' || searchText == null || searchText.match(pattern)){
5517				alert('키워드를 입력해 주세요.');
5518			}
5519			self.unionElectionList();
5520			$('.union_tab li').removeClass('on');
5521			var area = $("#searchOption01 option:selected").val();
5522			$(".union_tab li a[data-code="+area+"]").parent().addClass('on');
5523		});
5524    },
5525	
5526    unionElectionList : function (page, size, seq='', type="board") {
5527        var self = this;
5528        if(ObjectUtils.isEmpty(page) ){page = 1;}
5529        if(ObjectUtils.isEmpty(size) ){size = 20;}
5530        var searchOption01 = (type === "board" ? $("#searchOption01 option:selected").val() : "");
5531		var searchOption02 = (type === "board" ? $("#searchOption02 option:selected").val() : "");
5532        var searchText = (type === "board" ? $("#searchText").val() : "");
5533		var data = {searchOption01, searchOption02, searchText, page, size};
5534		
5535		$.ajax({
5536			url : "/rest/unionList",
5537			type : "GET",
5538			contentType: "application/json",
5539			dataType:"JSON",
5540			data : data,
5541			success: function (data) {
5542				var a = data.list;
5543				$("#pagination").children().remove();
5544				self.drawUnionElectionList(data);
5545				
5546				if(a.length > 0){
5547					self.renderPaging(data);
5548				}
5549
5550				a.length
5551			},
5552			error: function (error){
5553				console.log(error);
5554			}
5555		});
5556    },
5557	
5558	/*당선자 리스트 그리기*/
5559    drawUnionElectionList : function (data) {
5560        var self = this;
5561		var html = "";
5562		$("#unionElectionList").html("");
5563		for(var i=0; i<data.list.length; i++){
5564			
5565			var birth = data.list[i].unionPresidentBirth;
5566			if(birth == null){
5567				
5568			}
5569			else{
5570				if(birth.indexOf('년') > -1){
5571					birth=birth.replaceAll('년','');
5572				}
5573			}
5574			
5575			html +="<li>";
5576			html +="	<div class='union_box'>";
5577			html +="    <div class='img_box'><img src='"+mediaData.mediaCdn + "/data1/srv-nongmin/resources/unionElection/old/" + data.list[i].imageSavedName+"' alt='조합장 이미지' /></div>";
5578			html +="		<div class='txt_box'>";
5579			html +="			<span class='tit'>" + data.list[i].unionName + "</span>";
5580			html +="			<span class='name'>" + data.list[i].unionPresidentName + "</span>";
5581			html +="			<div class='area_box'>";
5582			html +="				<span class='area'>" + data.list[i].codeName + "</span>";
5583			if(birth != null){
5584				html +="			<span class='year'>" + birth + "년</span>";
5585			}
5586			if(data.list[i].electedCount == "1"){
5587				html +="			<em>초선</em>";	
5588			}
5589			else if(data.list[i].electedCount == "2"){
5590				html +="			<em>재선</em>";	
5591			}else{
5592				html +="			<em>" +data.list[i].electedCount+ "선</em>";	
5593			}
5594			html +="			</div>";
5595			html +="		</div>";
5596			html +="	</div>";
5597			html +="	<a href='/unionElectionDetail?seq=" + data.list[i].unionPresidentSeq + "' class='union_view_btn'>프로필 보기</a>";
5598			html +="</li>";
5599		}
5600
5601		$("#unionElectionList").html(html);
5602		
5603	   //self.eventBind.clickUnionElectionListTr(self);
5604		
5605    },
5606	
5607	renderPaging : function(data){
5608		
5609        var self = this ; 
5610        var html = ""; 
5611        var currentPage = data.number+1;
5612        var prePage = currentPage-1;
5613        var nextPage = currentPage+1;
5614        var lastPage = data.totalPages;
5615        
5616        var pagePerBlock = 10;
5617
5618        //모바일 시 페이징 처리
5619        if(data.deviceChk == 'M'){
5620            pagePerBlock = 5 ;
5621        }
5622        var pageGroup = Math.ceil(currentPage/pagePerBlock);
5623        var start = (pageGroup -1)*pagePerBlock+1;
5624        var last = pageGroup * pagePerBlock;
5625		
5626       
5627		if(currentPage > 1){
5628			html += "<a href='#' onclick=UNION.unionElectionList('"+prePage+"') class='prev_btn' aria-label='Previous'></a>";	            
5629		}else{
5630			html += "<a href='#' onclick='UNION.unionElectionList(1)' class='' aria-label='Previous'></a>"; 
5631		}
5632		for(var i=start; i <= last; i++){
5633			if(i > lastPage) break;
5634			if(i == currentPage){
5635				html += "<li class='on'><a href='#'>"+i+"</a></li>" ;
5636			}else{
5637				html += "<li class=''><a href='#' onclick=UNION.unionElectionList('"+i+"')>"+i+"</a></li>";
5638			}
5639		}
5640		if(currentPage < lastPage){
5641			html += "<a href='#' onclick=UNION.unionElectionList('"+nextPage+"') class='next_btn' aria-label='Next'></a>";
5642		}else{
5643			html += "<a href='#' onclick=UNION.unionElectionList('"+lastPage+"') class='' aria-label='Next'></li>";
5644//			if(pagePerBlock == 10){
5645//			}
5646		}
5647	
5648		$("#pagination").html(html);
5649    }
5650};

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.