PageSourceSearch

https://www.kiees.or.kr/inc/js/util.js?ver=2026100518

js kiees.or.kr collected 2026-10-05 09:36:58 UTC 69,051 bytes, 2,365 lines download raw bytes

1//==========================================================================================================
2//기능설명			: Util
3//==========================================================================================================
4var Util = {};
5Util.ajax = function(parm){
6	var o = $.extend({
7		url		: null,					//url
8		async	: true,				//동기(false)/비동기(true)
9		cache	: false,				//캐쉬
10		timeout	: 9000,					//대기시간		
11		data	: null,					//json 타입 전송값
12		success	: function(data){},					//성공시 함수
13		fail	: function(error){},					//실패시 함수
14		dataType : 'html'
15	},parm || {});
16	
17	//var
18	var fn_success	= o.success;
19	var fn_fail		= o.fail;
20	
21	//jquery ajax
22	$.ajax({
23		url: o.url,
24		type: 'POST',
25		async : o.async, 
26		cache : o.cache,
27		timeout: o.timeout,
28		dataType:o.dataType,
29		data:o.data,
30		success: function(data,res) {
31			if(data != "" && data != undefined){
32				if(typeof(fn_success) == 'function') {
33					fn_success(data);
34				}
35			}
36		},
37		error: function (xhr, ajaxOptions, error){
38			if(typeof(fn_fail) == 'function') {
39				fn_fail(error);
40			}
41
42		}
43	});
44};
45
46Util.laypop = function(parm){
47    //매개변수
48    var o = $.extend({
49        snode		: $(document.body),
50        id    		: null,
51        name    	: null,
52        layer 		: {style:null, addStyle : null, top:null, width:500, height:700, left:0},
53        title		: {style:null, html:null},
54        cont    	: {style:null, html:null},
55        btns		: [{html : null, fn : null}],
56        ccl			: null,
57        resize		: true,
58        dragg		: true,
59        zidx		: null
60    },parm || {});
61
62    //var
63    var snode		=  o.layer.style || $(document.body);
64    var oname		= o.name || "jado_box_commfnLayerPopDf";
65    var oid			= o.id || "jado_box_commfnLayerPopDf";
66    var maskHeight	= $(document).height();
67    var maskWidth	= $(window).width();
68    var top			= ($(window).scrollTop() + ($(window).height() - (o.layer.height)) / 2 );
69    if(o.layer.top != "" && o.layer.top != null) top = $(window).scrollTop() + o.layer.top;
70    var left		= 0;
71    var zidx		= "999999990";
72    if(o.layer.left != "" && o.layer.left != null) left = o.layer.left;
73    if(o.zidx != "" && o.zidx != null) zidx = o.zidx;
74
75    //mask
76    var mask		= $("<div name='"+oname+"_mask' style='width:"+maskWidth+"px;height:"+maskHeight+"px;position:absolute;left:0;top:0;z-index:"+zidx+"0;background-color:#000;filter: alpha(opacity=40);opacity: 0.8;'></div>");
77    var wrap		= $("<div id='"+oid+"_wrap' name='"+oname+"_wrap' style='width:100%;position:absolute;left:0;top:0;z-index:"+zidx+"1;'></div>");
78
79    //style
80    var sty_warp	= o.layer.style	|| "top:"+top+"px;left:"+left+"px;width:100%;height:0px;position:absolute;z-index:"+zidx+"2;";
81    var sty_layer	= o.layer.style	|| "margin:0px auto;background-color:#fff;";
82    var sty_title	= o.title.style	|| "display:block;";
83    var sty_cont	= o.cont.style	|| "";
84    var sty_addlay	= o.layer.addStyle	|| "";
85
86    //html
87    var title		= o.title.html || "";
88    var cont		= o.cont.html || "";
89    if(typeof(cont) != "object") cont = $(cont);
90    var icon		= "";
91    if(o.dragg == true){
92        icon = "cursor:move;";
93    }
94
95    //width
96    if(o.layer.width != "-"){
97        sty_layer	+= ";width:"+o.layer.width+"px;";
98    }
99
100    if(sty_addlay != "" && sty_addlay != null){
101        sty_layer	+= sty_addlay;
102	}
103
104    var hm			="<div id='"+oid+"' name='"+oname+"' style='"+sty_warp+";'>"
105					+"	<div name='"+oname+"_layer' style='"+sty_layer+"'>"
106					+"		<p name='"+oname+"_top' style='position:relative; height:50px; padding:0 20px; line-height:50px; background-color:#666; color:#fff;"+icon+"'>"
107					+"			<span style='"+sty_title+"'>"+title+"</span>"
108					+"			<span name='"+oname+"_cclBtn' style='display:inline-block; position:absolute; right:0; top:0; z-index:99; width:50px; height:50px;'><i style='width:50px; color:#fff; background-color:#222;font-size:14px; line-height:50px; cursor:pointer; text-align: center;' class='im im-x-mark'></i><span class='blind'>닫기</span></button>"
109					+"		</p>"
110					+"		<div name='"+oname+"_body' style='width:100%;float:left;'>"
111					+"			<div name='"+oname+"_cont' style='"+sty_cont+";padding:10px;'></div>"
112					+"		</div>"
113					+"		<p name='"+oname+"_btns' style='display:inline-block; vertical-align:middle; width:100%; text-align:center; height:40px; padding-bottom:10px;'></p>"
114					+"	</div>"
115					+"</div>"
116    hm			= $(hm);
117
118    //cont append
119    o.snode.append(mask);
120    o.snode.append(wrap);
121    wrap.append(hm);
122    hm.find("div[name='"+oname+"_cont']").append(cont);
123
124    //취소
125    var ccl = function(){
126        if(o.ccl == null){
127            $("[name^='"+oname+"']").remove();
128        }else{
129            o.ccl();
130        }
131    };
132
133    //event
134    if(o.resize == true)	hm.find("div[name='"+oname+"_layer']").resizable();
135    if(o.dragg == true)		hm.find("div[name='"+oname+"_layer']").draggable({handle:'p'});
136    $(mask).click(function(){
137        ccl();
138    });
139
140    //btns
141    if(o.btns != null){
142        for(var i=0; i<o.btns.length; i++){
143            if(o.btns[i].html != null){
144                var btn = $(o.btns[i].html);
145                hm.find("p[name='"+oname+"_btns']").append(btn);
146                hm.find("p[name='"+oname+"_btns']").append("&nbsp;");
147                btn.click(o.btns[i].fn);
148            }
149        }
150    }
151
152    //닫기
153    $("[name='"+oname+"_cclBtn']").click(ccl);
154}
155
156Util.parmOne = function(parm, option, key){
157	if(typeof(parm) == "object"){						//object
158		var res = $.extend(option, parm || {});
159	}else{
160		var res = {}; res[key]= parm;
161	}
162
163	return res;
164}
165
166Util.chknull = function(parm){
167	var o = Util.parmOne(parm, {
168		str	: null		//문자열
169	}, "str");
170
171	if(o.str == "" || o.str == undefined || o.str == null){
172		return true;
173	}else{
174		return false;
175	}
176};
177
178Util.ajaxAppend = function(parm){
179	var o = $.extend({
180		url		: null,	
181		data	: null,
182		dataType : 'html',	
183		snode	: null,
184		render : null,
185		remove : true
186	},parm || {});
187	
188	if(o.remove != false) o.snode.children().remove();
189	if(o.render == null) o.render = function(data){return data};
190	
191	new Util.ajax({
192		url : o.url,
193		data : o.data,
194		async	: false,
195		dataType : o.dataType,
196		success : function(data){		
197			if(data != ""){
198				data = o.render(data);
199				o.snode.append($(data));
200			}
201		}
202	});
203};
204
205Util.btnClick = function(parm){
206	var o = $.extend({
207		btns	: null,
208		vnode	: null,
209		key		: "intSeq",
210		fn		: null
211	},parm || {});
212
213	o.btns.click(function(){
214		o.vnode.val($(this).attr(o.key));
215		o.fn($(this));
216	});
217}
218
219Util.chkForm = function(parm){
220	var o = $.extend({
221		pnode : null,
222		item  : [{name:null, type:null}]
223	},parm || {});
224	for(var i=0; i<o.item.length; i++){
225		var name	= o.item[i].name;
226		var type	= o.item[i].type;
227		if(Util.chknull(name) == false){
228			var node	= o.pnode.find("[name='"+name+"']");
229			var val		= node.val();
230			var chk		= node.attr("chk");
231
232			if(Util.chknull(chk) == false){
233				if(val == "" && chk == "ok"){
234					if(type == "hidden"){
235						Util.alert({text:node.attr("item"), confirmButtonClass:"btn-danger"});
236					}else if(type == "text" || type == "textarea"){
237						alert(node.attr("item")+"을(를) 입력해주세요!");
238					}else{
239
240                        alert(node.attr("item")+"을(를) 선택해주세요!");
241					}
242
243					node.focus();  return false; break; 
244				}
245			}
246		}
247	}
248
249	return true;	
250}
251
252Util.getQtr = function(parm){
253	var o = $.extend({
254		pnode : null,
255		item  : [{name:null, type:null}],
256		seq   : null
257	},parm || {});
258	var str = "";
259	for(var i=0; i<o.item.length; i++){	
260		var name	= o.item[i].name;
261		var type	= o.item[i].type;
262		if(Util.chknull(name) == false){
263			var node	= o.pnode.find("[name='"+name+"']");
264			var val		= "";
265
266			if(node.length > 1){
267				for(var x=0; x<node.length; x++){
268					if(val != "") val += "-";
269					if(Util.chknull(node.eq(x).val()) == false){
270						val += encodeURIComponent(node.eq(x).val());
271					}
272				}
273			}else{
274				if(Util.chknull(node.val()) == false){
275					val		= encodeURIComponent(node.val());
276				}
277			}
278
279            if(type == "checkbox"){
280                if(node.is(":checked") == true){
281                    val		= node.val();
282                }else{
283                    val		= "0";
284                }
285            }
286
287            if(val != ""){
288				if(str != "") str += "&";
289				str += name+"="+val;
290			}
291		}
292	}
293
294	if(Util.chknull(o.seq) == false){
295		if(str != "") str += "&";
296		str += "seq="+o.seq;
297	}
298
299	return str;
300}
301
302Util.actBtn = function(parm){
303	var o = $.extend({
304		btns : null,
305		no  : 0
306	},parm || {});
307
308	o.btns.removeClass("active");
309	o.btns.eq(o.no).addClass("active");	
310	var str = o.btns.eq(o.no).attr("intSeq");
311	return str;
312}
313
314Util.btn = function(parm){
315	var o = $.extend({
316		name	: null,
317		mode	: null,
318		txt		: null,
319		col		: null,
320		val		: null,
321		url		: null
322	},parm || {});
323
324	var css = ""; icon = ""; style = "";
325	
326	if(o.mode == "ins"){
327		css 	= "btn blue";
328		icon 	= "<i class='fa fa-check'></i>";
329		style 	= "background-color:#006cb4 !important;";
330    }else if(o.mode == "del"){
331		css 	= "btn red";
332		icon 	= "<i class='fa fa fa-times'></i>";
333        style 	= "background-color:#e7505a !important;";
334	}else if(o.mode == "ccl"){
335		css = "btn btn-outline grey-salsa";
336	}else{
337		css = "btn "+o.col+" btn-outline";
338	}
339
340	return "<button type='button' name='"+o.name+"' class='"+css+"' value='"+o.val+"' url='"+o.url+"' style='"+style+"'>"+icon+o.txt+"</button>";
341}
342
343Util.alert = function(parm){
344	var o = $.extend({
345		title: "",
346		text: "처리하였습니다.",
347		type: "",
348		allowOutsideClick: true,
349		showConfirmButton: "btn-primary",
350		showCancelButton: false,
351		confirmButtonClass: "btn-info",
352		cancelButtonClass: "",
353		closeOnConfirm: false,
354		closeOnCancel: false,
355		confirmButtonText: "",
356		cancelButtonText: ""
357	},parm || {});
358
359	swal({
360		title: o.title,
361		text: o.text,
362		type: o.type,
363		allowOutsideClick: o.allowOutsideClick,
364		showConfirmButton: o.showConfirmButton,
365		showCancelButton: o.showCancelButton,
366		confirmButtonClass: o.confirmButtonClass,
367		cancelButtonClass: o.cancelButtonClass,
368		closeOnConfirm: o.closeOnConfirm,
369		closeOnCancel: o.closeOnCancel,
370		confirmButtonText: o.confirmButtonText,
371		cancelButtonText: o.cancelButtonText
372	});
373}
374
375Util.confirm = function(parm, fn){
376
377	var o = $.extend({
378		title: "",
379		text: "처리하였습니다.",
380		type: "",
381		allowOutsideClick: "",
382		showConfirmButton: true,
383		showCancelButton: true,
384		confirmButtonClass: "btn-info",
385		cancelButtonClass: "btn-default",
386		closeOnConfirm: true,
387		closeOnCancel: true,
388		confirmButtonText: "예",
389		cancelButtonText: "아니오"
390	},parm || {});
391
392	swal({
393		title: o.title,
394		text: o.text,
395		type: o.type,
396		allowOutsideClick: o.allowOutsideClick,
397		showConfirmButton: o.showConfirmButton,
398		showCancelButton: o.showCancelButton,
399		confirmButtonClass: o.confirmButtonClass,
400		cancelButtonClass: o.cancelButtonClass,
401		closeOnConfirm: o.closeOnConfirm,
402		closeOnCancel: o.closeOnCancel,
403		confirmButtonText: o.confirmButtonText,
404		cancelButtonText: o.cancelButtonText
405		},
406		function(isConfirm){
407			if(typeof(fn) == 'function') {
408				fn(isConfirm);
409			}
410		}
411	);
412}
413
414Util.datatable = function (parm) {
415	var o = $.extend({
416		pnode	: null,
417		url		: null,
418		schKey	: 'schKey',
419		schVal	: 'schVal'
420	},parm || {});
421
422	var grid = new Datatable();
423	grid.init({
424		src: o.pnode,
425		onSuccess: function (grid, response) {
426		},
427		onError: function (grid) {
428		},
429		onDataLoad: function(grid) {
430		},
431		loadingMessage: 'Loading...',
432		dataTable: {
433			searching: true,
434			bStateSave: true, 
435			fnStateSaveParams:    function ( oSettings, sValue ) {
436				$("#datatable_ajax tr.filter .form-control").each(function() {
437					sValue[$(this).attr('name')] = $(this).val();
438				});
439				return sValue;
440			},
441			fnStateLoadParams : function ( oSettings, oData ) {
442				$("#datatable_ajax tr.filter .form-control").each(function() {
443					var element = $(this);
444					if (oData[element.attr('name')]) {
445						element.val( oData[element.attr('name')] );
446					}
447				});
448				return true;
449			},
450			lengthMenu: [
451				[10, 20, 50, 100, 150, -1],
452				[10, 20, 50, 100, 150, "All"]
453			],
454			pageLength: 10,
455			ajax: {
456				url: o.url,
457				data : function(d){
458					var data = {
459						schKey : $("#"+o.schKey).val()
460						,schVal : $("#"+o.schVal).val()
461					};
462					d = $.extend(d, data || {});
463					return d;
464				}
465			},
466			order: [
467				[1, "desc"]
468			]
469			,columns: o.columns
470		}
471	});
472
473
474	grid.getTableWrapper().on('click', 'table-group-action-submit', function (e) {
475		e.preventDefault();
476		var action = $(".table-group-action-input", grid.getTableWrapper());
477		if (action.val() != "" && grid.getSelectedRowsCount() > 0) {
478			grid.setAjaxParam("customActionType", "group_action");
479			grid.setAjaxParam("customActionName", action.val());
480			grid.setAjaxParam("id", grid.getSelectedRows());
481			grid.getDataTable().ajax.reload();
482			grid.clearAjaxParams();
483		} else if (action.val() == "") {
484			App.alert({
485				type: 'danger',
486				icon: 'warning',
487				message: 'Please select an action',
488				container: grid.getTableWrapper(),
489				place: 'prepend'
490			});
491		} else if (grid.getSelectedRowsCount() === 0) {
492			App.alert({
493				type: 'danger',
494				icon: 'warning',
495				message: 'No record selected',
496				container: grid.getTableWrapper(),
497				place: 'prepend'
498			});
499		}
500	});
501
502	grid.getTableWrapper().on('click', 'button', function (e) {
503		var val = $(e.target).val();
504		var url = $(e.target).attr('url');
505
506		if(url != '' && url != 'null') {
507			document.location.href = url + val;
508		}
509	});
510
511	return grid;
512}
513
514Util.unique = function (array) { 
515	var result = []; 
516	$.each(array, function(index, element){ 
517		if ($.inArray(element, result) == -1){ 
518		result.push(element); 
519	} 
520}); return result;}
521
522Util.existFunction = function(func){
523	return typeof window[func]=== 'function';
524}
525
526Util.bbsGoViewQtr = function(parm) {
527    var o = $.extend({
528        schbox  : "searchBox",
529        qtr		: null,
530        cuts	: null
531    },parm || {});
532
533    var schbox		= o.schbox;
534    if(schbox == "" || schbox == null){
535        schbox		= "searchBox";
536	}
537
538	var qtr			= o.qtr;
539    var searchBox 	= $("[name='"+schbox+"']");
540
541    searchBox.find("input[type='text']").each(function(){
542        var nm    = $(this).attr("name");
543        var val   = $(this).val();
544        if(val == null || val == undefined) val = "";
545
546        if(qtr != "") qtr += "&";
547        qtr += nm+"=" + val;
548    });
549    searchBox.find("select").each(function(){
550        var nm    = $(this).attr("name");
551        var val   = $(this).find("option:selected").val();
552        if(val == null || val == undefined) val = "";
553
554        if(qtr != "") qtr += "&";
555        qtr += nm+"=" + val;
556    });
557
558    var schCategory = getUrlVar("schCategory");
559    if(schCategory != "" && schCategory != null && Number(schCategory) > 0){
560        qtr += '&schCategory='+schCategory;
561    }
562
563    var setRowCount = $("#setRowCount").val();
564    if(setRowCount != "" && setRowCount != null && Number(setRowCount) > 0){
565        qtr += '&setRowCount='+setRowCount;
566    }
567
568    var schBtnVal 	= getUrlVar("schBtnVal");
569    if(schBtnVal != "" && schBtnVal != null && Number(schBtnVal) > 0){
570        qtr += '&schBtnVal='+schBtnVal;
571    }
572
573    qtr 		= Util.getUniqueQtr({qtr : qtr});
574
575    var array	= qtr.split("&");
576    var res 	= Util.getQtrByArray({array:array, cuts:o.cuts});
577
578    return res;
579};
580
581Util.bbsGoListQtr = function(parm) {
582    var o = $.extend({
583        qtr		: null,
584        cuts	: null
585    },parm || {});
586
587    var qtr		= o.qtr;
588    var param 	= window.location.search.substring(1);
589    var array	= new Array();
590    var array1	= new Array();
591    var array2	= new Array();
592
593	if(qtr != "" && qtr != null){
594        array1 	= qtr.split("&");
595        array	= array.concat(array1);
596	}
597    if(param != "" && param != null){
598        array2 	= param.split("&");
599        array	= array.concat(array2);
600	}
601	var res = Util.getQtrByArray({array:array, cuts:o.cuts});
602
603	return res;
604};
605
606Util.getQtrByArray = function(parm) {
607    var o = $.extend({
608        array	: null,
609        cuts	: null
610    },parm || {});
611
612    var array		= o.array;
613    var cuts		= o.cuts;
614
615    var checkCut 	= function(cuts, key){
616		var res = false;
617		if(cuts != null && cuts != "" && key != null && key != ""){
618            for(var i=0; i<cuts.length; i++){
619                if(cuts[i] == key) res = true;
620            }
621		}
622		return res;
623	};
624
625    var uniqueArray = [];
626    $.each(array, function(i, el){
627        if($.inArray(el, uniqueArray) === -1) uniqueArray.push(el);
628    });
629
630    var res = "";
631    for(var i=0; i<uniqueArray.length; i++){
632    	var arr = uniqueArray[i].split("=");
633    	if(checkCut(cuts, arr[0]) != true){
634            if(res != "") res += "&";
635            res += uniqueArray[i];
636		}
637    }
638
639    return res;
640};
641
642Util.getUniqueQtr = function(parm) {
643    var o = $.extend({
644        qtr	: null
645    },parm || {});
646
647    var qtr			= o.qtr;
648    var qust		= false;
649    if (qtr.indexOf("?") != -1) qust = true;
650    qtr 			= qtr.replace(/\?/g,"&");
651    var array		= qtr.split("&");
652
653    var uniqueArray = [];
654    var checkArray	= [];
655    var userArray	= [];
656    var idx			= 0;
657
658    //순서뒤집기
659    array.reverse();
660
661    //중복체크
662    $.each(array, function(i, el){
663        el		= $.trim(el);
664
665        var chk	= "";
666        if(el != "" && el != null){
667            if (el.indexOf("=") != -1) {
668                chk = el.split("=");
669                chk = chk[0];
670            }
671
672            if(chk == "") chk = el;
673
674            if($.inArray(chk, checkArray) === -1){
675                userArray.push(idx);
676            }
677
678            uniqueArray.push(el);
679            checkArray.push(chk);
680            idx++;
681        }
682    });
683
684    //중복제외 쿼리스트링 만들기(pmode 빼놓고)
685    var res		= "";
686    var pmode	= "";
687    for(var i=0; i<uniqueArray.length; i++){
688        if($.inArray(i, userArray) === -1){
689        }else{
690            if (uniqueArray[i].indexOf("pmode") != -1) {
691                pmode = uniqueArray[i];
692            }else{
693                if(res != "") res += "&";
694                res += uniqueArray[i];
695            }
696        }
697    }
698
699    //pmode 맨앞에
700    res			= pmode + "&" + res;
701
702    //?없을 경우
703    if(qust == true){
704        if (res.indexOf("?") != -1) {
705        }else{
706            res = "?"+res;
707        }
708    }
709
710    return res;
711};
712
713//?물음표 없을경우 처리, ?& => ? 처리
714Util.repUrlQtr = function(qtr) {
715	if(qtr != "" && qtr != null){
716        qtr	= qtr.replace(/\?/g,"&");
717        qtr = "?"+qtr;
718        qtr	= qtr.replace("?&","?");
719        qtr = qtr.replace(/undefined/gi, "");
720	}
721
722    return qtr;
723};
724
725Util.getToYmd = function(){
726    var date 	= new Date();
727    var y		= date.getFullYear();
728    var m		= date.getMonth() + 1;
729    var d		= date.getDate();
730    if(m < 10) 	m = "0"+m;
731    if(d < 10) 	d = "0"+d;
732
733    var ymd 	= y+"-"+m+"-"+d;
734
735    return ymd;
736};
737
738Util.getManAge = function(ymd, birth){
739	if(ymd == "" || ymd == null){
740		var date 		= new Date();
741		var year 		= date.getFullYear();
742		var month 		= (date.getMonth() + 1);
743		var day 		= date.getDate();
744		if (month < 10) month 	= '0' + month;
745		if (day < 10) 	day 	= '0' + day;
746	}else{
747		var ymd 		= ymd.replace('-', '').replace('-', '');
748		var year 		= ymd.substr(0, 4);
749		var month 		= ymd.substr(4, 2);
750		var day 		= ymd.substr(6, 2);
751	}
752
753	var monthDay 	= month + day;
754	birth 			= birth.replace('-', '').replace('-', '');
755	var birthdayy 	= birth.substr(0, 4);
756	var birthdaymd 	= birth.substr(4, 4);
757
758	var age = monthDay < birthdaymd ? year - birthdayy - 1 : year - birthdayy;
759
760	return age;
761};
762
763Util.setManAge = function(parm){
764    var o = $.extend({
765        today	: null,	//today node
766        birth	: null,	//birth node
767        age		: null	//age node
768    },parm || {});
769
770    var setAge = function(){
771        if(o.age != null && o.age != ""){
772        	var a 	= o.today.val();
773        	var b 	= o.birth.val();
774            var age = Util.getManAge(a, b);
775
776            if(Number(age) > 0 && Number(age) < 200){
777                o.age.val(age);
778			}
779        }
780	};
781
782    if(o.today != null && o.birth != null && o.today != "" && o.birth != ""){
783        setInterval(function() {
784            setAge();
785        }, 1000);
786	}
787};
788
789
790Util.tabMenu = function(parm){
791    var o = $.extend({
792        tab		: null,	//tab node
793        cont	: null,	//content node
794        actTab	: null,	//tab 클래스명
795        actCont	: null,	//content 클래스명
796		liYn	: true  //tab li여부
797    },parm || {});
798
799    var actTab = o.actTab;
800    if(actTab == null || actTab == "") actTab = "active";
801    var actCont = o.actCont;
802    if(actCont == null || actCont == "") actCont = "hide";
803
804    var selIndex = function(idx){
805        if(o.liYn == true){
806            var lis = o.tab.find("li");
807        }else{
808            var lis = o.tab;
809        }
810        var li  	= lis.eq(idx);
811		var conts	= o.cont;
812        var cont	= o.cont.eq(idx);
813
814        //cont
815        if(o.cont != "" && o.cont != null){
816            conts.addClass(actCont);
817            cont.removeClass(actCont);
818        }
819
820        //all
821        var all = li.attr("all");
822		if(all == "ok"){
823            conts.removeClass("hide");
824		}
825
826		//active
827		if(actTab != "" && actTab != null){
828            lis.removeClass(actTab);
829            li.addClass(actTab);
830		}
831	};
832
833	if(o.tab != null && o.tab != ""){
834		if(o.liYn == true){
835            var lis = o.tab.find("li");
836		}else{
837			var lis = o.tab;
838		}
839
840        lis.click(function(){
841			var idx = lis.index(this);
842
843            selIndex(idx);
844		});
845
846		var idx = getUrlVar("tab");
847		if(idx == "" || idx == null || Number(idx) < 1) idx = 0;
848        selIndex(idx);
849	}
850};
851
852//리스트 선택삭제
853Util.deletes = function(delFn){
854    $("#chkAll").on('click',function(){
855        if($(this).is(':checked')) $(".checkboxes").prop('checked',true);
856        else $(".checkboxes").prop('checked',false);
857    });
858
859    if(delFn == "" || delFn == null) delFn = "Deletes";
860    var seq = "";
861    $("[name='chkSeq']").each(function(){
862        if($(this).is(":checked")){
863            if(seq != "") seq += ",";
864            seq += $(this).val();
865        }
866    });
867
868    if(seq == ""){
869        Util.alert({text:"선택한 목록이 없습니다!",confirmButtonClass:"btn-danger"});
870        return false;
871    }
872
873    Util.confirm({
874        'text': '삭제하시겠습니까?'
875    }, function(isConfirm){
876        if(isConfirm){
877            $.ajax({
878                type:"POST",
879                data:{
880                    'pmode' : getUrlVar('pmode'),
881                    'smode' : 'ajax',
882                    'fn'    : delFn,
883                    'seq'   : seq
884                },
885                success:function(data){
886                	document.location.reload();
887                }
888            });
889        }
890    });
891};
892
893//now date Y-m-d H:i:s
894Util.getNowYmdhis = function(){
895    var day 	= new Date
896	var y		= day.getFullYear();
897    var m		= day.getMonth()+1;
898    var d		= day.getDate();
899    var h		= day.getHours();
900    var i		= day.getMinutes();
901    var s		= day.getSeconds();
902	if(Number(m) < 10) m = "0"+m;
903	if(Number(d) < 10) d = "0"+d;
904	if(Number(h) < 10) h = "0"+h;
905	if(Number(i) < 10) i = "0"+i;
906	if(Number(s) < 10) s = "0"+s;
907
908	return [y,m,d].join('-')+' '+[h,i,s].join(':');
909};
910
911//now date Y-m-d
912Util.getNowYmd = function(){
913    var day 	= new Date
914    var y		= day.getFullYear();
915    var m		= day.getMonth()+1;
916    var d		= day.getDate();
917    if(Number(m) < 10) m = "0"+m;
918    if(Number(d) < 10) d = "0"+d;
919
920    return y+"-"+m+"-"+d;
921};
922
923//button click view/hide
924Util.viewHideNode = function(parm){
925    var o = $.extend({
926		pnode	: null,
927        btn		: null,	//button
928        name	: null	//node name
929    },parm || {});
930
931    if(o.btn != "" && o.btn != null && o.name != "" && o.name != null){
932        o.btn.click(function(){
933            if(o.pnode != "" && o.pnode != null){
934                var pnode = o.pnode;
935            }else{
936                var pnode = $(this).parent();
937            }
938            var node	  = pnode.find("[name='"+o.name+"']");
939			$("[name='"+o.name+"']").not(node).css("display","none");
940
941            if(node.css("display") == "none"){
942                node.css("display","");
943            }else{
944                node.css("display","none");
945            }
946        });
947	}
948};
949
950//validation number
951Util.chkValidatNum = function(parm){
952    var o = $.extend({
953        node	: null,
954		msgNode : null,
955		msg		: "숫자만 입력가능합니다."
956    },parm || {});
957
958    if(o.node.length > 0) {
959        o.node.blur(function () {
960            var regExp 	= /^[0-9]*$/;
961            var val 	= $(this).val();
962            o.msgNode.text("");
963
964            if(val != ""){
965                if (!regExp.test(val)) {
966                    $(this).focus();
967                    o.msgNode.text(o.msg);
968                    return false;
969                }
970			}
971        });
972    }
973};
974
975//validation phonnum
976Util.chkValidatPhon = function(parm){
977    var o = $.extend({
978        node	: null,
979		msgNode : null,
980		msg		: "연락처만 입력가능합니다."
981    },parm || {});
982
983    if(o.node.length > 0) {
984        o.node.blur(function () {
985            var regExp 	= /^[0-9]*$/;
986            var val 	= $(this).val();
987			var tmp 	= val.replace(/-/gi, "");
988            o.msgNode.text("");
989
990            if(tmp != ""){
991                if (!regExp.test(tmp)) {
992                    $(this).focus();
993                    o.msgNode.text(o.msg);
994                    return false;
995                }
996			}
997        });
998    }
999};
1000
1001Util.lodingStart = function(parm){
1002    var o = $.extend({
1003        node	: $("#c_contents"),
1004        imgSrc	: "/inc/images/ajax-loader.gif"
1005    },parm || {});
1006
1007    var top		= Number($(window).scrollTop());
1008    var pnode 	= o.node;
1009    var imgSrc 	= o.imgSrc;
1010    if(top < 1) top = 0;
1011    top			= top + 300;
1012
1013    var html 	= "<div id='lodingWrap'>"
1014        + " 	<div style='height: 100%;left: 0px;position: fixed;_position:absolute;top: 0px;width: 100%;filter:alpha(opacity=20);-moz-opacity:0.2;opacity : 0.2;background-color: white;z-index: 199;'></div><img style='position:absolute;top:"+top+"px;left:50%;height:35px;margin-top:-75px;margin-left:-75px;z-index: 200;' alt='loading' src='"+imgSrc+"'/>"
1015        + "</div>";
1016    if(pnode.find("[id='lodingWrap']").length < 1){
1017        pnode.prepend(html);
1018    }
1019};
1020
1021Util.lodingStop = function(parm){
1022    var o = $.extend({
1023        node	: $("#c_contents")
1024    },parm || {});
1025    var pnode 	= o.node;
1026    pnode.find("[id='lodingWrap']").remove();
1027};
1028
1029Util.moveNode = function(parm) {
1030    var o = $.extend({
1031        btnNode     : $("[name='btnMove']"),
1032        DropNode    : $("[name='DropMove']"),
1033        ajaxFn      : "Move",
1034		pmode	    : null
1035    }, parm || {});
1036
1037    var preSeq  	    = "";
1038    var preSort 	    = "";
1039    var nxtSeq  	    = "";
1040    var nxtSort 	    = "";
1041    var pmode 		    = o.pmode;
1042
1043    if(pmode == null || pmode == "") pmode = "session";
1044
1045    //dragg
1046    o.btnNode.draggable({
1047        start: function (event, ui) {
1048            var me = $(event.currentTarget);
1049            preSeq  = me.attr("seq");
1050            preSort = me.attr("intSort");
1051        },
1052
1053        stop: function (event, ui) {
1054            document.location.reload();
1055        }
1056    });
1057
1058    //drop
1059    o.DropNode.droppable({
1060        drop: function( event, ui ) {
1061            var me          = $(this);
1062            nxtSeq          = me.attr("seq");
1063            nxtSort         = me.attr("intSort");
1064            var intAcSeq    = $("[name='intAcSeq']").val();
1065
1066            new Util.ajax({
1067                data : {
1068                    'pmode'     : pmode,
1069                    'smode'     : 'ajax',
1070                    'fn'        : o.ajaxFn,
1071                    'moveSort'  : nxtSort,
1072                    'sort'      : preSort,
1073                    'seq'       : preSeq,
1074                    'intAcSeq'  : intAcSeq
1075                },
1076                success  : function(){
1077                    document.location.reload();
1078                }
1079            });
1080        },
1081        over: function( event, ui ) {
1082            var me          = $(this);
1083            var target      = $(event.currentTarget);
1084        },
1085        out: function( event, ui ) {
1086        }
1087    });
1088};
1089
1090Util.oFieldSet = {
1091    pnode       : null,
1092
1093    init : function(pnode){
1094        Util.oFieldSet.pnode     = pnode;
1095
1096        //selectable
1097        if(Util.oFieldSet.pnode.find("[name='selLis']").length > 0)
1098            Util.oFieldSet.pnode.find("[name='selLis']").off().selectable({ filter: "li"});
1099
1100        if(Util.oFieldSet.pnode.find("[name='schKeywd']").length > 0 )
1101            Util.oFieldSet.pnode.find("[name='schKeywd']").off().keyup(Util.oFieldSet.schField);
1102    },
1103
1104    schField : function(){
1105        var search	= $(this).val();
1106        var pnode	= $(this).next().find("ul");
1107
1108        if(search != ""){
1109            pnode.find("li").css("display","none");
1110            pnode.find("li:contains('"+search+"')").each(function () {
1111                var regex = new RegExp(search,'gi');
1112                $(this).css("display","");
1113            });
1114        }else{
1115            pnode.find("li").css("display","");
1116        }
1117    },
1118
1119    selAll : function(){
1120        var pnode	= $(this).next().find("ul");
1121        var lis     = pnode.find("li");
1122        lis.each(function(){
1123            $(this).addClass("ui-selected");
1124            $(this).attr("sel","ok");
1125        });
1126    },
1127
1128    unSelAll : function(){
1129        var pnode	= $(this).next().find("ul");
1130        var lis     = pnode.find("li");
1131        lis.each(function(){
1132            $(this).removeClass("ui-selected");
1133            $(this).attr("sel","");
1134        });
1135    },
1136
1137    kdown : function(e){
1138        var keyCode = e.which?e.which:event.keyCode;
1139
1140        if (keyCode == "38") {                                  //up
1141            Util.oFieldSet.up();
1142        }else if(e.ctrlKey == true && keyCode == "40"){         //resort
1143            Util.oFieldSet.resort();
1144        }else if(keyCode == "40"){                              //down
1145            Util.oFieldSet.down();
1146        }
1147    },
1148
1149    up : function(){
1150        var setLis      = Util.oFieldSet.pnode.find("[name='setLis']");
1151        var seqs        = Util.oFieldSet.getSelected(setLis);
1152        if(seqs == ""){
1153            return false;
1154        }
1155
1156        $.ajax({
1157            type: "POST",
1158            async: false,
1159            data: {
1160                'pmode'  : getUrlVar('pmode'),
1161                'smode'  : 'ajax',
1162                'fn'     : 'UptSetFieldsUp',
1163                'kind'   : $("[name='kind']").val(),
1164                'formSeq': $("[name='intFormSeq']").val(),
1165                'tbl'    : $("[name='tbl']").val(),
1166                'seqs'   : seqs
1167            },
1168            success: function (data) {
1169                Util.oFieldSet.reloadNonFields();
1170                Util.oFieldSet.reloadSetFields(seqs);
1171            }
1172        });
1173    },
1174
1175    downFields : function(){
1176        var seqs = Util.oFieldSet.getSelected(Util.oFieldSet.setField);
1177        if(seqs == ""){
1178            return false;
1179        }
1180
1181        $.ajax({
1182            type: "POST",
1183            async: false,
1184            data: {
1185                'pmode'  : getUrlVar('pmode'),
1186                'smode'  : 'ajax',
1187                'fn'     : 'UptSetFieldsDown',
1188                'kind'   : $("[name='kind']").val(),
1189                'formSeq': $("[name='intFormSeq']").val(),
1190                'tbl'    : $("[name='tbl']").val(),
1191                'seqs'   : seqs
1192            },
1193            success: function (data) {
1194                Util.oFieldSet.reloadNonFields();
1195                Util.oFieldSet.reloadSetFields(seqs);
1196            }
1197        });
1198
1199    },
1200
1201    resortFields : function(){
1202        var seqs = Util.oFieldSet.getSelected(Util.oFieldSet.setField);
1203
1204        $.ajax({
1205            type: "POST",
1206            async: false,
1207            data: {
1208                'pmode'  : getUrlVar('pmode'),
1209                'smode'  : 'ajax',
1210                'fn'     : 'UptSetFieldsResort',
1211                'kind'   : $("[name='kind']").val(),
1212                'formSeq': $("[name='intFormSeq']").val(),
1213                'tbl'    : $("[name='tbl']").val()
1214            },
1215            success: function (data) {
1216                Util.oFieldSet.reloadNonFields();
1217                Util.oFieldSet.reloadSetFields(seqs);
1218            }
1219        });
1220    },
1221
1222    movePop : function(){
1223        var html = "<input type='text' name='moveSort' class='form-control'/>";
1224        new Util.laypop({
1225            name : "movePop"
1226            ,layer: {style:null,width:200,height:150}
1227            ,cont : {style:null, html : html}
1228            ,btns : [
1229                {html : Util.btn({name:'popAddBtn', mode:'ins', txt:'순서로이동'})
1230                    ,fn : function(){
1231                    var pop         = $("[name^='movePop']");
1232                    var moveSort     = pop.find("[name='moveSort']").val();
1233                    Util.oFieldSet.moveFields(moveSort);
1234                    $("[name^='movePop']").remove();
1235                }}
1236                ,{html : Util.btn({name:'modCclBtn', mode:'ccl', txt:'닫기'})
1237                    ,fn : function(){
1238                        $("[name^='movePop']").remove();
1239                    }
1240                }
1241            ]
1242            ,dragg : false
1243            ,ccl : function(){
1244                $("[name^='movePop']").remove();
1245            }
1246        });
1247    },
1248
1249    moveFields : function(moveSort){
1250        var seqs = Util.oFieldSet.getSelected(Util.oFieldSet.setField);
1251        if(seqs == ""){
1252            return false;
1253        }
1254
1255        $.ajax({
1256            type: "POST",
1257            async: false,
1258            data: {
1259                'pmode'  : getUrlVar('pmode'),
1260                'smode'  : 'ajax',
1261                'fn'     : 'UptSetFieldsMove',
1262                'kind'   : $("[name='kind']").val(),
1263                'formSeq': $("[name='intFormSeq']").val(),
1264                'tbl'    : $("[name='tbl']").val(),
1265                'seqs'   : seqs,
1266                'moveSort': moveSort
1267            },
1268            success: function (data) {
1269                Util.oFieldSet.reloadNonFields();
1270                Util.oFieldSet.reloadSetFields(seqs);
1271            }
1272        });
1273    },
1274
1275    nonFields : function(){
1276        var seqs = Util.oFieldSet.getSelected(Util.oFieldSet.setField);
1277        if(seqs == ""){
1278            Util.alert({text:"선택한 목록이 없습니다!",confirmButtonClass:"btn-danger"});
1279            return false;
1280        }
1281
1282        $.ajax({
1283            type: "POST",
1284            async: false,
1285            data: {
1286                'pmode'  : getUrlVar('pmode'),
1287                'smode'  : 'ajax',
1288                'fn'     : 'UptNonFields',
1289                'kind'   : $("[name='kind']").val(),
1290                'formSeq': $("[name='intFormSeq']").val(),
1291                'tbl'    : $("[name='tbl']").val(),
1292                'seqs'   : seqs
1293            },
1294            success: function (data) {
1295                Util.oFieldSet.reloadNonFields();
1296                Util.oFieldSet.reloadSetFields("");
1297            }
1298        });
1299    },
1300
1301    setFields : function(){
1302        var seqs = Util.oFieldSet.getSelected(Util.oFieldSet.nonField);
1303        if(seqs == ""){
1304            Util.alert({text:"선택한 목록이 없습니다!",confirmButtonClass:"btn-danger"});
1305            return false;
1306        }
1307
1308        $.ajax({
1309            type: "POST",
1310            async: false,
1311            data: {
1312                'pmode'  : getUrlVar('pmode'),
1313                'smode'  : 'ajax',
1314                'fn'     : 'UptSetFields',
1315                'kind'   : $("[name='kind']").val(),
1316                'formSeq': $("[name='intFormSeq']").val(),
1317                'tbl'    : $("[name='tbl']").val(),
1318                'seqs'   : seqs
1319            },
1320            success: function (data) {
1321                Util.oFieldSet.reloadNonFields();
1322                Util.oFieldSet.reloadSetFields();
1323            }
1324        });
1325    },
1326
1327    reloadNonFields : function(){
1328        $.ajax({
1329            type: "POST",
1330            async: false,
1331            data: {
1332                'pmode'  : getUrlVar('pmode'),
1333                'smode'  : 'ajax',
1334                'fn'     : 'ListNonFieldHtml',
1335                'kind'   : $("[name='kind']").val(),
1336                'formSeq': $("[name='intFormSeq']").val(),
1337                'tbl'    : $("[name='tbl']").val()
1338            },
1339            success: function (data) {
1340                Util.oFieldSet.nonField.children().remove();
1341                Util.oFieldSet.nonField.append(data);
1342                Util.oFieldSet.nonField.selectable({ filter: "li"});
1343            }
1344        });
1345    },
1346
1347    reloadSetFields : function(seqs){
1348        $.ajax({
1349            type: "POST",
1350            async: false,
1351            data: {
1352                'pmode'  : getUrlVar('pmode'),
1353                'smode'  : 'ajax',
1354                'fn'     : 'ListSetFieldHtml',
1355                'kind'   : $("[name='kind']").val(),
1356                'formSeq': $("[name='intFormSeq']").val(),
1357                'tbl'    : $("[name='tbl']").val(),
1358                'seqs'   : seqs
1359            },
1360            success: function (data) {
1361                Util.oFieldSet.setField.children().remove();
1362                Util.oFieldSet.setField.append(data);
1363                Util.oFieldSet.setField.selectable({ filter: "li"});
1364
1365                Util.oFieldSet.setField.find("li").each(function(){
1366                    if($(this).attr("sel") == "ok")
1367                        $(this).addClass('ui-selected');
1368                });
1369
1370                Util.oFieldSet.setField.find("li").dblclick(Util.oFieldSet.movePop);
1371            }
1372        });
1373    },
1374
1375    getSelected : function(ul){
1376        var seqs = "";
1377
1378        ul.find("li").each(function(){
1379            if($(this).hasClass("ui-selected")){
1380                var seq = $(this).attr("seq");
1381
1382                if(seq != "" &&  seq != null){
1383                    if(seqs != "") seqs += ",";
1384                    seqs += $(this).attr("seq");
1385                }
1386            }
1387        });
1388
1389        return seqs;
1390    }
1391};
1392
1393
1394Util.tabmenu = {
1395    init : function(){
1396        $("[name='btnTab']").click(Util.tabmenu.tab);
1397        var idx = $("[name='intTabSeq']").val();
1398        Util.tabmenu.tabExe(idx);
1399    },
1400
1401    tab : function(){
1402        var tab     = $("[name='btnTab']");
1403        var idx     = tab.index(this);
1404
1405        Util.tabmenu.tabExe(idx);
1406    },
1407
1408    tabExe : function(idx){
1409    	if(idx == "" || idx == null) idx = 0;
1410        var tab     = $("[name='btnTab']");
1411        var cont    = $("[name='contTab']");
1412
1413        cont.css("display","none");
1414        cont.eq(idx).css("display","");
1415
1416        tab.removeClass("active");
1417        tab.eq(idx).addClass("active");
1418
1419        $("[name='intTabSeq']").val(idx);
1420    }
1421}
1422
1423Util.chkEmail =function (node) {
1424    var val = node.val()
1425    var exptext = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/;
1426    if (exptext.test(val) == false) {
1427        alert(configLang.L0000000042);
1428        node.focus();
1429        return false;
1430    }
1431
1432    return true;
1433};
1434
1435//뒤로가기 버튼막기
1436Util.backBtnClose = function(){
1437    history.pushState(null, null, location.href);
1438    window.onpopstate = function(event) {
1439        history.go(1);
1440    };	
1441};
1442
1443//파일 확장자 추출
1444Util.getFileExt = function(filename){
1445    var _fileLen = filename.length;
1446    var _lastDot = filename.lastIndexOf('.');
1447    var _fileExt = filename.substring(_lastDot, _fileLen).toLowerCase();
1448    _fileExt	 = _fileExt.replace(/\./g,"");
1449
1450    return _fileExt;
1451};
1452
1453//이메일 형식 체크
1454Util.checkEmailType = function(val){
1455    var exptext = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/;
1456    if (exptext.test(val) == false) {
1457        alert(configLang.L0000000042);
1458        node.focus();
1459        return false;
1460    }
1461    return true;
1462};
1463
1464//함수 여부 체크
1465Util.isFunction = function(fn){
1466    return typeof window[fn]=== "function";
1467};
1468
1469//파일 View
1470Util.viewFile = function(pnode){
1471	if(pnode != "" && pnode != null){
1472		if(pnode.length > 0){
1473			var fileName    = pnode.find("[name='fileName']").val();
1474			var fileSeq     = pnode.find("[name='fileSeq']").val();
1475
1476			if(fileSeq != "" && fileSeq != null){
1477				var fileDown = $(" <a name='btnFileDown' style='cursor:pointer'>"+fileName+"</a>");
1478				pnode.find("[name='fileNameTxt']").append(fileDown);
1479				fileDown.click(function(){
1480					location.href = '?pmode=UserAddon&smode=ajax&fn=DownFile&fileSeq='+ fileSeq;
1481				});
1482			}
1483		}
1484	}
1485};
1486
1487//000초 -> 00분00초 변환
1488Util.replaceMinSecTxt = function(sec){
1489    var res = "";
1490    var min = 0;
1491    	sec = Number(sec);
1492
1493    if(sec != "" && sec > 0){
1494        min 	= Math.floor(sec / 60);
1495        sec 	= Math.abs(sec % 60);
1496
1497        if(min > 0) min += "분";
1498        if(sec > 0) sec += "초";
1499        if($.trim(min) == "0") min = "";
1500        if($.trim(sec) == "0") sec = "";
1501        res = "";
1502    }
1503
1504    return min+" "+sec;
1505};
1506
1507// form 에서 사용하는 json 데이터를 파싱하는 함수 
1508Util.formJsonData = function(param)
1509{
1510    var jsonForm = 'jsonForm';
1511    var jsonFormName = 'jsonFormName';
1512
1513	if(typeof param === 'string') var inputName = param;
1514	else
1515	{
1516        var inputName = param.inputName;
1517        if(param.jsonForm) jsonForm = param.jsonForm;
1518        if(param.jsonFormName) jsonForm = param.jsonFormName;
1519    }
1520
1521    // jsonData 만들기
1522    var jsonData = {};
1523    $("["+jsonForm+"="+inputName+"]").each(function(){
1524        var name = $(this).attr(jsonFormName);
1525        var type = $(this).attr('type');
1526        if(type == "radio") var val = $("input[name="+name+"]:checked").val();
1527        else var val = $(this).val();
1528        jsonData[name] = val;
1529    });
1530
1531    $("input[name="+inputName+"]").val(JSON.stringify(jsonData));
1532}
1533
1534//코드 CRUD
1535Util.codeCrud = function(parm){
1536    var o = $.extend({
1537        lis			: {url : null, node : null, data : null},
1538        add			: {url : null, node : null, data : null, btn : null, item : [{name:null,type:null}], fn:null, form : null},
1539        mod			: {url : null, btn  : null, data : null, item : [{name:null,type:null}], fn:null, form : null},
1540        del			: {url : null, btn  : null, data : null, fn : null},
1541        key			: "intSeq",
1542        listAfter 	: null,
1543		actAfter  	: null
1544    },parm || {});
1545
1546    var list = function(act){
1547        if(o.lis.node != null){
1548            o.lis.node.children().remove();
1549
1550            new Util.ajax({
1551                url : o.lis.url,
1552                data : o.lis.data,
1553                async: true,
1554                dataType : "html",
1555                success : function(data){
1556                    if(data != "") {
1557                        data = $(data);
1558                        o.lis.node.html(data);
1559                        if(o.mod.btn != null) o.lis.node.find("tr").find("[name='"+o.mod.btn+"']").click(mod);
1560                        if(o.del.btn != null)  o.lis.node.find("tr").find("[name='"+o.del.btn+"']").click(del);
1561                        if(o.listAfter != null && typeof(o.listAfter) == "function") o.listAfter();
1562
1563                        if(act == "add" || act == "mod" || act == "del"){
1564                            if(o.actAfter != null && typeof(o.actAfter) == "function") o.actAfter();
1565						}
1566                    }
1567                }
1568            });
1569        }
1570    }
1571
1572    var chk = function(pnode, kind){
1573        for(var i=0; i<kind.item.length; i++){
1574            var name	= kind.item[i].name;
1575            var type	= kind.item[i].type;
1576            if(Util.chknull(name) == false){
1577                var node	= pnode.find(type+"[name='"+name+"']");
1578                var val		= node.val();
1579                var chk		= node.attr("chk");
1580                if(Util.chknull(chk) == false){
1581                    if(val == "" && chk == "ok"){
1582                        alert(node.attr("item")+"을(를) 입력해주세요!"); node.focus(); return false; break;
1583                    }
1584                }
1585            }
1586        }
1587
1588        return true;
1589    }
1590
1591    var qtr = function(pnode, kind){
1592        var str = "";
1593
1594        for(var i=0; i<kind.item.length; i++){
1595            var name	= kind.item[i].name;
1596            var type	= kind.item[i].type;
1597            if(Util.chknull(name) == false){
1598                var node	= pnode.find(type+"[name='"+name+"']");
1599                var val		= node.val();
1600                if(val != ""){
1601                    if(str != "") str += "&";
1602                    str += name+"="+val;
1603                }
1604            }
1605        }
1606
1607        return str;
1608    }
1609
1610    //등록
1611    var add = function(){
1612        if(Util.chkForm({pnode:o.add.node, item:o.add.item})){
1613            var str 	= Util.getQtr({pnode:o.add.node, item:o.add.item});
1614
1615            if(str != ""){
1616                if(Util.chknull(o.add.data) == false){
1617                    str += "&"+o.add.data;
1618                }
1619
1620                if(o.add.form != null && o.add.form != ""){
1621                    o.add.form.attr("action", o.add.url);
1622                    o.add.form.submit();
1623				}else{
1624                    new Util.ajax({
1625                        url : o.add.url,
1626                        dataType : "text",
1627                        async	: false,
1628                        data : str,
1629                        success : function(data){
1630                            list("add");
1631                            ccl();
1632                        }
1633                    });
1634				}
1635            }else{
1636            	alert("등록된 값이없습니다.");
1637			}
1638        }
1639    }
1640
1641    //수정
1642    var mod = function(){
1643        if(Util.chkForm({pnode:$(this).parent().parent(), item:o.mod.item})){
1644            var str 	= Util.getQtr({pnode:$(this).parent().parent(), item:o.mod.item});
1645            if(str != ""){
1646                if(Util.chknull(o.mod.data) == false){
1647                    str += "&"+o.mod.data;
1648                }
1649                var seq = $(this).attr(o.key);
1650                str	+= "&"+o.key+"="+seq+"&seq="+seq;
1651
1652                if(o.mod.form != null && o.mod.form != ""){
1653                	var modForm = $("[name='"+o.mod.form+"_"+seq+"']");
1654
1655                    modForm.attr("action", o.mod.url);
1656                    modForm.submit();
1657                }else {
1658                    new Util.ajax({
1659                        url: o.mod.url,
1660                        dataType: "text",
1661                        async: false,
1662                        data: str,
1663                        success: function (data) {
1664                            list("mod");
1665                            ccl();
1666                        }
1667                    });
1668                }
1669            }else{
1670                alert("등록된 값이없습니다.");
1671            }
1672        }
1673    }
1674
1675    //삭제
1676    var del = function(){
1677        if(confirm("정말로 삭제하시겠습니까?")){
1678            var seq = $(this).attr(o.key);
1679            var str	= o.key+"="+seq+"&seq="+seq;
1680
1681            if(str != ""){
1682                if(Util.chknull(o.del.data) == false){
1683                    str += "&"+o.del.data;
1684                }
1685
1686                new Util.ajax({
1687                    url : o.del.url,
1688                    dataType : "text",
1689                    async	: false,
1690                    data : str,
1691                    success : function(data){
1692                        list("del");
1693                    }
1694                });
1695            }
1696        }
1697    }
1698
1699    //취소
1700    var ccl = function(){
1701        o.add.node.find("input[type='text']").val("");
1702        o.add.node.find("select").val("");
1703        o.add.node.find("input[type='checkbox']").prop("checked", false);
1704        o.add.node.find("input[type='radio']").prop("checked", false);
1705        o.add.node.find("textarea").val("");
1706    }
1707
1708    this.init = function(){
1709        if(Util.chknull(o.add.btn) != true){
1710            o.add.node.find("[name='"+o.add.btn+"']").unbind();
1711            o.add.node.find("[name='"+o.add.btn+"']").click(add);
1712        }
1713        list("");
1714    }
1715
1716    this.search = function(data){
1717        o.lis.data = $.extend(o.lis.data, data || {});
1718        list("sch");
1719    };
1720}
1721
1722//Disabled node by ICheck
1723Util.disabledByICheck = function(parm){
1724    var o = $.extend({
1725		type		: "radio",	//selecter 노드타입
1726        snode		: null,		//selecter 노드
1727        target		: null,		//target   노드
1728        value		: null		//selecter enabled 값 (,)콤마구분
1729    },parm || {});
1730
1731    var selected = function(){
1732		var val 	= "";
1733		var able	= false;
1734
1735		if(o.snode.length > 0){
1736            val 	= o.snode.filter(":checked").val();
1737		}
1738
1739		if(o.value != ""){
1740			var arrValue	= o.value.split(",");
1741			for(var i=0; i<arrValue.length; i++){
1742				if(val != "" && val == arrValue[i]){
1743					able = true;
1744				}
1745			}
1746		}
1747
1748		if(o.target.length > 0){
1749            if(able == true){
1750                o.target.attr("disabled", false);
1751            }else{
1752                o.target.val("");
1753                o.target.attr("disabled", true);
1754            }
1755		}
1756	};
1757
1758    selected();
1759
1760    if(o.type == "radio"){
1761        o.snode.on('ifChecked',function () {
1762            selected();
1763        });
1764	}else if(o.type == "checkbox"){
1765        o.snode.on('ifChecked',function () {
1766            selected();
1767        });
1768	}
1769};
1770
1771//checkbox set raio type
1772Util.setRadioTypeCheckbox = function(){
1773    var node = $("[cbox='radio']");
1774
1775    node.on('ifClicked', function (e) {
1776        var target 	    = e.currentTarget;
1777        var cboxseq		= $(target).attr("cboxseq");
1778
1779        $("[cboxseq='"+cboxseq+"']").iCheck('uncheck');
1780    })
1781};
1782
1783//Ajax 수정팝업 (버튼클릭시)
1784Util.ajaxModPop = function(parm){
1785    var o = $.extend({
1786		node	: null			//버튼
1787        ,name 	: "ajaxModPop"	//팝업명
1788        ,pmode 	: ""
1789        ,fn		: ""
1790        ,btns 	: null			//팝업버튼들
1791		,width  : 1000
1792		,height : 800
1793		,top    : null
1794		,title  : null
1795		,afterFn : null
1796        ,kind   : ""
1797    },parm || {});
1798
1799    //popup html
1800    var pop  = function(){
1801        var seq     = $(this).attr("seq");
1802
1803        $.ajax({
1804            type:"POST",
1805			dataType : "text",
1806            data:{
1807                'pmode' : o.pmode,
1808                'smode' : 'ajax',
1809                'fn'    : o.fn,
1810                'seq'   : seq,
1811                'kind'  : o.kind
1812            },
1813            success:function(data){
1814                _pop(data);
1815
1816                if(typeof (o.afterFn)=="function" && o.afterFn != null) o.afterFn(seq);
1817            }
1818        });
1819    };
1820
1821    //popup 띄우기
1822    var _pop = function(html){
1823        new Util.laypop({
1824            name 	: o.name
1825            ,title	: {style: null, html: o.title}
1826            , layer : {style: null, top : o.top, width: o.width, height: o.height}
1827            , cont  : {style: null, html: html}
1828            , btns  : o.btns
1829            , ccl   : ccl
1830        });
1831    };
1832
1833    //popup 닫기
1834    var ccl  = function(){
1835        $("[name^='"+o.name+"']").remove();
1836    };
1837
1838    //event
1839    o.node.click(pop);
1840};
1841
1842//File Upload Pop
1843Util.fileUpPop = function(parm){
1844    var o = $.extend({
1845		label		: ""			//명칭
1846		,btn		: null			//버튼
1847        ,fileName 	: "intFileSeq"	//파일명
1848        ,uploadFn 	: "UploadXls"	//업로드 Ajax Fn
1849        ,sampleFile : ""			//샘플파일경로
1850        ,addHtml 	: ""			//추가HTML
1851        ,addCommt 	: ""			//추가코멘트
1852    },parm || {});
1853
1854    var formAct		= '?pmode='+ getUrlVar('pmode') +'&smode=ajax&fn='+o.uploadFn;
1855
1856	//close
1857    var fnCcl = function(){
1858        $("[name^='upFilePop']").remove();
1859	};
1860
1861    //upload
1862    var fnUp  = function(){
1863        var form            = $("[name='uploadPopForm']");
1864        var intXlsFileSeq   = $("[name='"+o.fileName+"']").val();
1865        if(intXlsFileSeq == ""){
1866            alert("첨부파일을 선택해주세요"); return false;
1867        }
1868
1869        form.attr('action', formAct);
1870        form.submit();
1871	};
1872
1873    //popup
1874    var fnPop = function(){
1875        var html        = " <form name='uploadPopForm'  id='uploadPopForm' method='post' enctype='multipart/form-data'>"
1876						+		o.addHtml
1877						+"      <span class='w20p fl pt5 pr10'>"+o.label+" : </span>"
1878						+"      <div class='w55p fl pl2 pr10'>"
1879						+"          <div class='file_input'>"
1880						+"              <label>"
1881						+"                  파일찾기"
1882						+"                  <input type='file' name='"+o.fileName+"' value='' onchange='javascript:document.getElementById(&quot;viewintXlsFileSeq&quot;).value=this.value'>"
1883						+"              </label>"
1884						+"              <input type='text' readonly='readonly' title='File Route' id='viewintXlsFileSeq'>"
1885						+"          </div>"
1886						+"      </div>"
1887						+"      <div class='w15p fl'>"
1888						+"          <button type='button' name='btnUploadFile' class='btn green w100' style='margin-top:1px;height:40px;'>업로드</button>"
1889						+"          <a class='btn btn-xs blue-steel w100' href='"+o.sampleFile+"'>SAMPLE</a>"
1890						+"      </div>"
1891						+"      <p class='w100p fl mt10 mb3' style='font-size:12px;color:orangered;'>"
1892						+"      	※ 업로드 후 날짜가 숫자로 변경될 경우 서식을 텍스트로 변경 후 다시업로드 해주세요!"
1893						+"      </p>"
1894			            +		o.addCommt
1895						+"  </form>";
1896
1897        new Util.laypop({
1898            name 	: "upFilePop"
1899            ,layer	: {style:null,width:650,height:150}
1900            ,cont 	: {style:null, html : html}
1901            ,btns 	: [
1902                {html : Util.btn({name:'popCclBtn', mode:'ccl', txt:'닫기'})
1903                    ,fn : fnCcl
1904                }
1905            ]
1906            ,ccl : fnCcl
1907        });
1908
1909        $("[name='btnUploadFile']").click(fnUp);
1910    };
1911
1912    o.btn.click(fnPop);
1913};
1914
1915Util.getTodayYmd = function(parm){
1916    var o = $.extend({
1917        spc			: "-"		//분기할 특수문자
1918    },parm || {});
1919
1920    var now 	= new Date();
1921    var year	= now.getFullYear();
1922    var mon 	= (now.getMonth()+1)>9 ? ''+(now.getMonth()+1) : '0'+(now.getMonth()+1);
1923    var day 	= now.getDate()>9 ? ''+now.getDate() : '0'+now.getDate();
1924
1925    return year+o.spc+mon+o.spc+day;
1926}
1927
1928Util.getDiffDays = function(pStartDate, pEndDate, pType){
1929    var strSDT          = new Date(pStartDate.substring(0,4),pStartDate.substring(4,6)-1,pStartDate.substring(6,8));
1930    var strEDT          = new Date(pEndDate.substring(0,4),pEndDate.substring(4,6)-1,pEndDate.substring(6,8));
1931    var strGapDT        = 0;
1932
1933    if(pType == 'D') {  //일수 차이
1934        strGapDT = (strEDT.getTime()-strSDT.getTime())/(1000*60*60*24);
1935    } else {            //개월수 차이
1936        if(pEndDate.substring(0,4) == pStartDate.substring(0,4)) {
1937            strGapDT    = pEndDate.substring(4,6) * 1 - pStartDate.substring(4,6) * 1;
1938        } else {
1939            strGapDT    = ((strEDT.getTime()-strSDT.getTime())/(1000*60*60*24*365.25/12)).toFixed(2);
1940        }
1941    }
1942    return strGapDT;
1943}
1944
1945//color bar color
1946Util.colorBarColor = "#fff,#ecf5e9,#fbffdd,#f5e9f4,#ffe8e8,#e7f1ff,#ffffeb,#e7e7e7,#ffdbe9,#d9fff6,#e5d9ff";
1947
1948
1949//======================== [ jquery plugin ]========================
1950
1951// 날짜형식변형 20180101 -> 2018-01-01
1952$.fn.autoDateFormat = function(){
1953    var selector = $(this);
1954
1955    setTimeout(function(){
1956        selector.blur(function(){
1957            var date    = $(this).val();
1958            var res     = "";
1959            if(date.indexOf("-") != -1) {
1960            }else{
1961                date = date.substr(0,4) + "-" + date.substr(4,2) + "-" + date.substr(6,2);
1962                $(this).val(date);
1963            }
1964        });
1965    },500);
1966};
1967
1968// value 값 리턴 (undefined 제거)
1969$.fn.getValue = function(){
1970    var selector 	= $(this);
1971    var value		= "";
1972    if(selector.length > 0){
1973        value		= selector.val();
1974        if(value == null || value == "undefined") value = "";
1975	}
1976
1977    return value;
1978};
1979
1980String.prototype.lpad = function(padLength, padString){
1981    var s = this;
1982    while(s.length < padLength)
1983        s = padString + s;
1984    return s;
1985}
1986
1987String.prototype.replaceAll = function(org, dest) {
1988    return this.split(org).join(dest);
1989}
1990
1991//======================== [ Board util ]========================
1992Util.bbs = {};
1993
1994//get seqs
1995Util.bbs.getSeqs = function(){
1996    var seq = "";
1997    $("[name='chkSeq']").each(function(){
1998        if($(this).is(":checked")){
1999            if(seq != "") seq += ",";
2000            seq += $(this).val();
2001        }
2002    });
2003
2004    return seq;
2005};
2006
2007//checl all
2008Util.bbs.chkAll	 = function(parm){
2009	if($("[id='chkAll']").length > 0){
2010        $("[id='chkAll']").off().on('click',function(){
2011            if($(this).is(':checked')){
2012                $("[name='chkSeq']").prop('checked',true);
2013            } else {
2014                $("[name='chkSeq']").prop('checked',false);
2015            }
2016        });
2017	}
2018};
2019
2020//down excel
2021Util.bbs.downExcel = function(parm){
2022    var o = $.extend({
2023        pmode		: getUrlVar("pmode"),
2024        ajaxFn		: "DownExcel",
2025		btnName 	: "btnDownExcel",
2026		formId		: "downForm"
2027    },parm || {});
2028
2029    var pmode		= o.pmode;
2030    var ajaxFn		= o.ajaxFn;
2031    var btnName		= o.btnName;
2032    var formId		= o.formId;
2033    var seq			= "";
2034
2035    if(pmode == "" || pmode == null) 	pmode	= getUrlVar("pmode");
2036    if(ajaxFn == "" || ajaxFn == null) 	ajaxFn	= "DownExcel";
2037    if(btnName == "" || btnName == null)btnName = "btnDownExcel";
2038    if(formId == "" || formId == null) 	formId	= "downForm";
2039
2040    var downExcel 	= function(){
2041        if($("[name='chkSeq']").length > 0){
2042            $("[name='chkSeq']").each(function(){
2043                if($(this).is(":checked")){
2044                    if(seq != "") seq += ",";
2045                    seq += $(this).val();
2046                }
2047            });
2048        }
2049
2050        var url 	= "?pmode=" + pmode + "&smode=ajax&fn=" + ajaxFn + "&seqs=" + seq;
2051        var form 	= $("#" + formId);
2052        form.attr("method","post");
2053        form.attr("action",url);
2054        form.submit();
2055    };
2056
2057    $("[name='" + btnName + "']").click(downExcel);
2058};
2059
2060//query string
2061Util.bbs.schQuerystr = function(parm){
2062    var o = $.extend({
2063        page  		: null,
2064        rowCnt  	: null,
2065        cate  		: null,
2066        schBtnVal 	: null,
2067        schSort 	: null,
2068        schSortFld 	: null,
2069        escpSchVal 	: false,
2070        callbak 	: null
2071    },parm || {});
2072
2073    var qtr             = "";
2074    var page            = "";
2075    var rowCnt          = "";
2076    var schKey          = "";
2077    var schVal          = "";
2078    var schCategory     = "";
2079    var intAcSeq        = "";
2080    var intBbSeq        = "";
2081    var intPaSeq        = "";
2082    var kind            = "";
2083    var schBtnVal		= "";
2084    var intAddSeq		= "";
2085    var intExamSeq		= "";
2086    var schSort			= "";
2087    var schSortFld		= "";
2088    var garbg			= "";
2089    var schYear			= "";
2090    var schPrss			= "";
2091    var schEventPart	= "";
2092    var searchSrl		= "";
2093    var schQuestion		= "";
2094	var schStat			= "";
2095	var schOrgan		= "";
2096	var schType			= "";
2097    var searchBox 	    = $("[name='searchBox']");
2098
2099    //serach key val
2100    schKey				= getUrlVar("schKey");
2101    schVal				= getUrlVar("schVal");
2102    if($("[name='schKey']").length > 0){
2103        schKey          = $("[name='schKey']").find("option:selected").val();
2104    }
2105    if($("[name='schVal']").length > 0){
2106        schVal          = $("[name='schVal']").val();
2107    }
2108    if(schVal == "검색어를 입력해주세요."){
2109        schVal			= "";
2110    }
2111    if(schVal != ""){
2112    	if(o.escpSchVal == true){
2113            schVal		= escape(schVal);
2114		}
2115	}
2116
2117    //cagegory
2118    if($("#schCategory").length > 0){
2119        if($("#schCategory").val() != ""){
2120            schCategory     = $("#schCategory").val();
2121		}
2122        if(o.cate != "" && o.cate != null){
2123            if(o.cate == "all"){
2124                schCategory	= "";
2125            }else{
2126                schCategory	= o.cate;
2127			}
2128        }
2129    }
2130
2131    //page
2132
2133    if(getUrlVar("page") != "" && getUrlVar("page") != null){
2134        page        	= getUrlVar("page");
2135    }
2136    if(o.page != null && Number(o.page) > 0){
2137        page            = o.page;
2138    }
2139    if(page == "" || page == null){
2140        page            = 1;
2141    }
2142
2143    //row count
2144    if($("[name='setRowCount']").length > 0){
2145        rowCnt          = $("[name='setRowCount']").find("option:selected").val();
2146    }
2147    if(o.rowCnt != null && Number(o.rowCnt) > 0){
2148        rowCnt          = o.rowCnt;
2149    }
2150
2151    //search btn
2152    if(getUrlVar("schBtnVal") != "" && getUrlVar("schBtnVal") != null){
2153		schBtnVal   	= getUrlVar("schBtnVal");
2154    }
2155    if(o.schBtnVal != null && o.schBtnVal != ""){
2156        if(o.schBtnVal == "all"){
2157            schBtnVal	= "";
2158        }else{
2159            schBtnVal	= o.schBtnVal;
2160        }
2161    }
2162
2163    //Sort
2164    if(getUrlVar("schSort") != "" && getUrlVar("schSort") != null){
2165        schSort   		= getUrlVar("schSort");
2166    }
2167    if(o.schSort != null && o.schSort != ""){
2168        schSort			= o.schSort;
2169    }
2170    if(getUrlVar("schSortFld") != "" && getUrlVar("schSortFld") != null){
2171        schSortFld   	= getUrlVar("schSortFld");
2172    }
2173    if(o.schSortFld != null && o.schSortFld != ""){
2174        schSortFld		= o.schSortFld;
2175    }
2176
2177	intAddSeq 			= getUrlVar('intAddSeq');
2178
2179    //query string
2180    qtr += "&page=" + page;
2181    if(schKey != "" && schKey != null){
2182        qtr += "&schKey=" + schKey;
2183    }
2184    if(schVal != "" && schVal != null) {
2185        qtr += "&schVal=" + schVal;
2186    }
2187    if(rowCnt != "" && rowCnt != null){
2188        qtr += "&setRowCount=" + rowCnt;
2189    }
2190	if(schCategory != "" && schCategory != null){
2191		qtr += "&schCategory=" + schCategory;
2192	}
2193	if(schBtnVal != "" && schBtnVal != null){
2194		qtr += "&schBtnVal=" + schBtnVal;
2195	}
2196	if(intAddSeq != "" && intAddSeq != null){
2197		qtr += "&intAddSeq=" + intAddSeq;
2198	}
2199
2200    //query string key
2201	if($("[name='searchBox']").find("[name='intAcSeq']").length < 1){
2202        if(getUrlVar("intAcSeq") != "" && getUrlVar("intAcSeq") != null){
2203            qtr += "&intAcSeq=" + getUrlVar("intAcSeq");
2204        }
2205	}
2206    if(getUrlVar("intBbSeq") != "" && getUrlVar("intBbSeq") != null){
2207        qtr += "&intBbSeq=" + getUrlVar("intBbSeq");
2208    }
2209    if(getUrlVar("intPaSeq") != "" && getUrlVar("intPaSeq") != null){
2210        qtr += "&intPaSeq=" + getUrlVar("intPaSeq");
2211    }
2212    if(getUrlVar("intGradeSeq") != "" && getUrlVar("intGradeSeq") != null){
2213        qtr += "&intGradeSeq=" + getUrlVar("intGradeSeq");
2214    }
2215    if(getUrlVar("intFormSeq") != "" && getUrlVar("intFormSeq") != null){
2216        qtr += "&intFormSeq=" + getUrlVar("intFormSeq");
2217    }
2218    if(getUrlVar("kind") != "" && getUrlVar("kind") != null){
2219        qtr += "&kind=" + getUrlVar("kind");
2220    }
2221    if(getUrlVar("intExamSeq") != "" && getUrlVar("intExamSeq") != null){
2222        qtr += "&intExamSeq=" + getUrlVar("intExamSeq");
2223    }
2224    if(getUrlVar("alphaKey") != "" && getUrlVar("alphaKey") != null){
2225        qtr += "&alphaKey=" + getUrlVar("alphaKey");
2226    }
2227    if(getUrlVar("setOrderBy") != "" && getUrlVar("setOrderBy") != null){
2228        qtr += "&setOrderBy=" + getUrlVar("setOrderBy");
2229    }
2230    if(schSort != "" && schSort != null){
2231        qtr += "&schSort=" + schSort;
2232    }
2233    if(schSortFld != "" && schSortFld != null){
2234        qtr += "&schSortFld=" + schSortFld;
2235    }
2236    if(getUrlVar("garbg") != "" && getUrlVar("garbg") != null){
2237        qtr += "&garbg=" + getUrlVar("garbg");
2238    }
2239    if(getUrlVar("schYear") != "" && getUrlVar("schYear") != null){
2240        qtr += "&schYear=" + getUrlVar("schYear");
2241    }
2242    if ($("[name='schYear']").length > 0){
2243        if(getUrlVar("schYear") != $("[name='schYear']").find("option:selected").val()) {
2244            if (qtr.includes("&schYear=")) {
2245                qtr = qtr.replace(/(&schYear=)\d+/, "$1" + $("[name='schYear']").find("option:selected").val());
2246            } else {
2247                qtr += "&schYear=" + $("[name='schYear']").find("option:selected").val();
2248            }
2249        }
2250    }
2251    if(getUrlVar("schPrss") != "" && getUrlVar("schPrss") != null){
2252        qtr += "&schPrss=" + getUrlVar("schPrss");
2253    }
2254    if(getUrlVar("schEventPart") != "" && getUrlVar("schEventPart") != null){
2255        qtr += "&schEventPart=" + getUrlVar("schEventPart");
2256    }
2257    if(getUrlVar("searchSrl") != "" && getUrlVar("searchSrl") != null){
2258        qtr += "&searchSrl=" + getUrlVar("searchSrl");
2259    }
2260    if($("#schQuestion").val() != "" && $("#schQuestion").val()  != null && $("#schQuestion").length > 0){
2261        qtr += "&schQuestion=" + $("#schQuestion").val();
2262    }
2263	if($("#schStat").val() != "" && $("#schStat").val()  != null && $("#schStat").length > 0){
2264		qtr += "&schStat=" + $("#schStat").val();
2265	}
2266	if($("#schOrgan").val() != "" && $("#schOrgan").val()  != null && $("#schOrgan").length > 0){
2267		qtr += "&schOrgan=" + $("#schOrgan").val();
2268	}
2269	if($("#schType").val() != "" && $("#schType").val()  != null && $("#schType").length > 0){
2270		qtr += "&schType=" + $("#schType").val();
2271	}
2272
2273	// 리스트 순서정렬
2274	if($("#schListSort").val() != "" && $("#schListSort").val() != null && $("#schListSort").length > 0){
2275		qtr += "&schListSort=" + $("#schListSort").val();
2276	}
2277
2278    //search box
2279    searchBox.find("input[type='text']").each(function(){
2280        var nm    = $(this).attr("name");
2281        var val   = $(this).val();
2282        if(val == null || val == undefined) val = "";
2283        if(nm == "schRegSdate" && val == "가입시작일"){
2284            val		= "";
2285        }
2286        if(nm == "schRegEdate" && val == "가입종료일"){
2287            val		= "";
2288        }
2289
2290        if(nm != "schVal"){
2291            if(val != "" && val != null){
2292                if(qtr != "") qtr += "&";
2293                qtr += nm+"=" + val;
2294            }
2295		}
2296    });
2297    searchBox.find("select").each(function(){
2298        var nm    = $(this).attr("name");
2299        var val   = $(this).find("option:selected").val();
2300        if(val == null || val == undefined) val = "";
2301
2302        if(nm != "schKey") {
2303            if (val != "" && val != null) {
2304                if (qtr != "") qtr += "&";
2305                qtr += nm + "=" + val;
2306            }
2307        }
2308    });
2309
2310	searchBox.find("input:hidden").each(function () {
2311
2312		var nm    = $(this).attr("name");
2313		var val   = $(this).val();
2314
2315		if (val != "" && val != null) {
2316			if (qtr != "") qtr += "&";
2317			qtr += nm + "=" + val;
2318		}
2319	});
2320
2321    var url = "?pmode="+getUrlVar("pmode")+"&smode="+getUrlVar("smode")+qtr;
2322
2323    if(o.callbak == "getQtr"){
2324        return qtr;
2325    }else if(o.callbak != null){
2326        if(typeof (o.callbak)=="function" && o.callbak != null) o.callbak(url);
2327    }else{
2328        document.location.href = url;
2329    }
2330
2331};
2332
2333//file del
2334Util.delFile = function(parm){
2335    var o = $.extend({
2336        pmode  		: null,
2337        seq  		: null,
2338        callbak 	: null
2339    },parm || {});
2340
2341    var seq		= o.seq;
2342	var fnDel 	= function(){
2343
2344        if(confirm("정말로 삭제하시겠습니까?")){
2345            $.ajax({
2346                type:"POST",
2347                data:{
2348                    'pmode' : o.pmode,
2349                    'smode' : 'ajax',
2350                    'fn'    : 'DelUptFile',
2351                    'seq'   : seq
2352				},
2353                success:function(data){
2354                    if( typeof o.callback === 'function' ) {
2355                        o.callbak();
2356					}else{
2357                        document.location.reload();
2358					}
2359                }
2360            });
2361        }
2362	}
2363
2364    fnDel();
2365};

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.