PageSourceSearch

https://www.jybooks.com/common/script/jquery_common.js?v=20200611024600003

js jybooks.com collected 2026-10-08 10:37:42 UTC 64,742 bytes, 2,968 lines download raw bytes

1/**********************************
2
3// 폼 영역 기본 입력 값들 설정
4
5**********************************/
6
7var frmDefaultConfig ={
8
9	//연락처
10
11	tel:[
12
13		["010","011","016","017","018","019"],
14
15		["02","031","032","033","041","042","043","051","052","053","054","055","061","062","063","064","070"],
16
17		["010","011","016","017","018","019", "02","031","032","033","041","042","043","051","052","053","054","055","061","062","063","064","070"]
18
19	],
20
21	//이메일
22
23	mail:["직접입력","naver.com", "nate.com", "gmail.com", "daum.net", "hanmail.net","hotmail.com",	"korea.com","netian.com","yahoo.co.kr","yahoo.com"]
24
25};
26
27
28
29//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
30
31// Ajax 관련
32
33//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
34
35//function ajaxDataCall(ele, params) {
36
37//    $.ajax({
38
39//		cache : false,
40
41//		async: ele.async==undefined?false:ele.aysnc,
42
43//		headers: {"cache-control":"no-cache","pragma":"no-cache"},
44
45//    	type:ele.type,
46
47//    	dataType:ele.dataType,
48
49//    	url:ele.URL,
50
51//    	data:params,
52
53//    	contentType: "application/x-www-form-urlencoded; charset=UTF-8",
54
55//    	success:eval(ele.ajaxHandler),
56
57//		error:function(xhr, status, error){
58
59//			if(ele.errorHandler !=""){
60
61//				eval(ele.errorHandler+"(xhr,status, error)");
62
63//			}else{
64
65//				var eMsg = "code : " + xhr.status + "\n"+"message : "+ xhr.responseText+"\n"+"error : "+ error;
66
67//				alert(eMsg);
68
69//			}
70
71//		}
72
73//    });
74
75//}
76
77
78
79var Jq = {
80
81    loadAjaxData : function(pConfig, aParams, fn_success, fn_err) {
82
83        $.ajax({
84
85			cache : false,
86
87			async	: pConfig.aysnc == undefined?false:pConfig.aysnc,
88
89			headers: {"cache-control":"no-cache","pragma":"no-cache"},
90
91            type:pConfig.type,
92
93    		dataType:pConfig.dataType,
94
95            url     : pConfig.URL,
96
97            data    : aParams,
98
99			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
100
101            success : function(data) {
102
103				//console.log(typeof fn_success);
104
105                if (fn_success != null && fn_success != "undefined") {
106
107					if(typeof fn_success == "string"){
108
109						 eval(fn_success+"(data)");
110
111					}else{
112
113	                    fn_success(data);
114
115					}
116
117                } else {
118
119                    $.globalEval(data);
120
121                }
122
123            },
124
125            error: function(xhr, status, error) {
126
127				 if (fn_err != null && fn_err!= "undefined") {
128
129					if(typeof fn_success == "string"){
130
131						eval(fn_err+"(xhr,status, error)");
132
133					}else{
134
135						fn_err(xhr, status, error);
136
137					}
138
139                } else {
140
141					alert("처리도중 오류발생"); /*alert(error);*/
142
143                }
144
145	        }
146
147        });
148
149    },
150
151	createHttpRequest:function(){
152
153		if (window.ActiveXObject){
154
155			// Win e4,e5,e6 용
156
157			try{
158
159				 return new ActiveXObject("Msxml2.XMLHTTP") ;
160
161			} catch (e) {
162
163				try {
164
165				  return new ActiveXObject("Microsoft.XMLHTTP") ;
166
167				} catch (e2) {return null;	}
168
169			}
170
171		} else if(window.XMLHttpRequest) {
172
173			// Win ,Mac ,linux 용
174
175			return new XMLHttpRequest();
176
177		} else {return null;}
178
179	},
180
181	sendPostRequest:function(url, parameter){
182
183		var oj = Jq.createHttpRequest();
184
185		oj.open("POST", url, false);
186
187		oj.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
188
189		oj.send(parameter);
190
191		return oj.responseText;
192
193	},
194
195	ajaxFileUpload:function(pConfig, params){
196
197		$.ajaxFileUpload({
198
199			url: pConfig.URL,
200
201			secureuri: false,
202
203			fileElementId: pConfig.FileID,
204
205			dataType: pConfig.dataType,
206
207			data: params,
208
209			success: pConfig.ajaxHandler,
210
211			error:pConfig.errorHandler
212
213		});
214
215		return false;
216
217	}
218
219}
220
221
222
223$.fn.serializeObject = function()
224
225{
226
227   var o = {};
228
229   var a = this.serializeArray();
230
231   $.each(a, function() {
232
233       if (o[this.name]) {
234
235           if (!o[this.name].push) {
236
237               o[this.name] = [o[this.name]];
238
239           }
240
241           o[this.name].push(this.value || '');
242
243       } else {
244
245           o[this.name] = this.value || '';
246
247       }
248
249   });
250
251   return o;
252
253};
254
255
256
257//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
258
259// null or undefined 값 변환
260
261//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
262
263function undefinedNullToValue(str, cVal, isComma){
264
265	if(cVal == undefined) cVal = "";
266
267	if(str === null || str === undefined || str === "") str = cVal;
268
269
270
271	if(isComma === true) str = commCtrl.commaFormat(str);
272
273
274
275	return str;
276
277}
278
279
280
281function replaceJSONUnicode(data){
282
283	if(data == null || data == undefined) data = "{\"errcode\":\"-1\", \"errmsg\":\"데이터가 비어있습니다.\"}";
284
285
286
287	if(typeof data == "string" && data != ""){
288
289		data = data.replace(/[\u0000-\u0019]+/g,""); 
290
291		data = JSON.parse(data)
292
293	}
294
295		
296
297	return data;
298
299}
300
301
302
303//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
304
305// 페이징관련
306
307//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
308
309var pageCtrl = {
310
311	setPaging:function(pConfig){
312
313
314
315		if(pConfig.tc == undefined || pConfig.tc == 0){
316
317			$(pConfig.obj).html("");
318
319		}else{
320
321			pageCtrl.ShowPaging(pConfig);
322
323		}
324
325	},
326
327	ShowPaging:function(pConfig){
328
329		var totalCount = Number(pConfig.tc);
330
331		var pageNo = Number(pConfig.np);
332
333		var totalPage = Number(pConfig.tp);
334
335		//var clickEvent = eval(pConfig.click);
336
337		var blockPage =  pConfig.blockpage == undefined?5:Number(pConfig.blockpage);
338
339		var pageSize = pConfig.pagesize == undefined?10:Number(pConfig.pagesize);
340
341		var endPage, startPage,prev, next, no;
342
343		var strObj = pConfig.obj;
344
345
346
347		if(pageNo > totalPage) pageNo = totalPage;
348
349
350
351		endPage = Math.ceil(pageNo/blockPage)*blockPage;
352
353		startPage = endPage -blockPage +1;
354
355
356
357		if(endPage > totalPage) endPage = totalPage;
358
359
360
361		prev = startPage == 1? false : true;
362
363		next = (endPage * pageSize)>=totalCount?false:true;
364
365		no = totalCount - (pageNo -1) * pageSize; //리스트 출력 시작 번호
366
367
368
369		var str = "", strClick = "";
370
371		//최근글로 이동
372
373		if(pageNo ==1){
374
375			str += "<a class='btn-arrow first' href='javascript:;'>first</a>";
376
377		}else{
378
379			strClick = pConfig.click+"(1)";
380
381			str += "<a class='btn-arrow first' href='javascript:"+strClick+";'>first</a>";
382
383		}
384
385		//이전 blockpage만큼
386
387		//if(pageCtrl.startPage-pageCtrl.blockPage>1){
388
389		if(prev){
390
391			strClick = pConfig.click+"("+(startPage - blockPage)+")";
392
393			str += "<a class='btn-arrow prev' href='javascript:"+strClick+";'>prev</a>";
394
395		}else {
396
397			str += "<a class='btn-arrow prev' href='javascript:;'>prev</a>"
398
399		}
400
401
402
403		//페이징 시작
404
405		if(startPage>0){
406
407			for(var i=startPage;i<=endPage;i++){
408
409				if(pageNo == i){
410
411					str += "<a class='select'>"+i+"</a>";
412
413				}else{
414
415						strClick = pConfig.click+"("+i+")";
416
417					str += "<a href='javascript:"+strClick+";'>"+i+"</a>";
418
419				}
420
421			}
422
423		}
424
425
426
427		//다음 이동
428
429		//if(pageCtrl.endPage < pageCtrl.totalPage){
430
431		if(next){
432
433			strClick = pConfig.click+"("+(startPage + blockPage)+")";
434
435			str += "<a class='btn-arrow next' href='javascript:"+strClick+";'>next</a>";
436
437		}else{
438
439			str += "<a class='btn-arrow next' href='javascript:;'>next</a>";
440
441		}
442
443
444
445		//끝목록
446
447		if(pageNo < totalPage){
448
449			strClick = pConfig.click+"("+totalPage+")";
450
451			str += "<a class='btn-arrow last' href='javascript:"+strClick+";'>last</a>";
452
453		}else{
454
455			str += "<a class='btn-arrow last' href='javascript:;'>last</a>";
456
457		}
458
459
460
461		$(strObj).html(str);
462
463	}
464
465};
466
467
468
469//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
470
471// 갤러리 설정
472
473//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
474
475function SetSlideGallery(pConfig){
476
477	pConfig.thumbObj = $(pConfig.thumbID);
478
479	pConfig.totalcnt = $("li", pConfig.thumbObj).size();		//이미지 전체 갯수
480
481	pConfig.width = $("li:first", pConfig.thumbObj).width();	//이미지 하나 넓이
482
483	//pConfig.copyObj = $("li:lt("+pConfig.dispcnt+")",pConfig.thumbObj).clone();
484
485	pConfig.totalpage = parseInt((pConfig.totalcnt-1)/pConfig.dispcnt)+1;
486
487	//if(pConfig.totalcnt>=6) {pConfig.thumbObj.append(pConfig.copyObj);}
488
489
490
491	//메인 사진 이전,다음 클릭
492
493	$(pConfig.mainNext).on('click', function(){$(pConfig.thumbNext).click();});
494
495	$(pConfig.mainPrev).on('click', function(){$(pConfig.thumbPrev).click();});
496
497
498
499	//Thumbs 이미지 클릭시
500
501	$("li", pConfig.thumbObj).each(function(idx,elem){
502
503		$(elem).on('click', function(e){
504
505			$("li", pConfig.thumbObj).removeClass("on");
506
507			$(this).addClass("on");
508
509			$(pConfig.mainID).css({"background-image":"url('"+$(this).data("url")+"')"});
510
511			pConfig.num = $(this).index();
512
513			return false;
514
515		});
516
517	});
518
519
520
521	//Thumbs 다음 버튼
522
523	$(pConfig.thumbNext).on('click', function(){
524
525		if(pConfig.num == pConfig.totalcnt-1){
526
527			pConfig.num = -1;
528
529			//return;
530
531		}
532
533		pConfig.num++;
534
535
536
537		if(pConfig.num == 0){
538
539			pConfig.viewpage = 1;
540
541			pConfig.thumbObj.css({'margin-left':-12+"px"});
542
543		}else if((pConfig.num%pConfig.dispcnt) == 0){//view 넘기 6칸씩
544
545			//var gap = -pConfig.width*pConfig.num;
546
547			//var gap = (-pConfig.width*pConfig.num);// - (12*pConfig.viewpage);
548
549			//gap = (-1200*pConfig.viewpage)+(-36*pConfig.viewpage);
550
551			var gap = (-1236*pConfig.viewpage) + (pConfig.viewpage>1?(12*(pConfig.viewpage-1)):0);
552
553			pConfig.viewpage++;
554
555			pConfig.thumbObj.animate({marginLeft:gap+"px"}, 500);
556
557		}
558
559
560
561
562
563		var thumb = $("li:eq("+pConfig.num+")",pConfig.thumbObj);
564
565		$(pConfig.mainID).css({"background-image":"url('"+thumb.data("url")+"')"});
566
567		$("li", pConfig.thumbObj).removeClass("on");
568
569		thumb.addClass("on");
570
571		/*
572
573		if(pConfig.num == pConfig.totalcnt){
574
575			pConfig.num = 0;
576
577			pConfig.thumbObj.css({'margin-left':pConfig.num});
578
579		}
580
581
582
583		pConfig.num++;
584
585		var gap = (-pConfig.width*pConfig.num)-12;
586
587		pConfig.thumbObj.animate({marginLeft:gap+"px"}, 500);
588
589
590
591		*/
592
593
594
595		return false;
596
597	});
598
599
600
601	//Thumbs 이전 버튼
602
603	$(pConfig.thumbPrev).on('click', function(){
604
605
606
607		if(pConfig.num ==0){pConfig.num = pConfig.totalcnt;}
608
609		var gap;
610
611		pConfig.num--;
612
613
614
615		//console.log(pConfig.num+","+(pConfig.num%pConfig.dispcnt));
616
617
618
619		if(pConfig.num == pConfig.totalcnt-1){
620
621			//pConfig.viewpage = parseInt(pConfig.num/pConfig.dispcnt)+1;
622
623			pConfig.viewpage = pConfig.totalpage;
624
625			//gap = (-1236*(pConfig.viewpage-1)) + (pConfig.viewpage>1?(12*(pConfig.viewpage-2)):0);
626
627			gap = (-1236*(pConfig.viewpage-1)) + (12*(pConfig.viewpage-2));
628
629			pConfig.thumbObj.css({'margin-left':gap+"px"});
630
631		}else if((pConfig.num%pConfig.dispcnt) == 5){//view 넘기 6칸씩
632
633			pConfig.viewpage--;
634
635			gap = (-1236*(pConfig.viewpage-1)) + (12*(pConfig.viewpage-2));
636
637
638
639			pConfig.thumbObj.animate({marginLeft:gap+"px"}, 500);
640
641		}
642
643
644
645		var thumb = $("li:eq("+pConfig.num+")",pConfig.thumbObj);
646
647		$(pConfig.mainID).css({"background-image":"url('"+thumb.data("url")+"')"});
648
649		$("li", pConfig.thumbObj).removeClass("on");
650
651		thumb.addClass("on");
652
653		return false;
654
655	});
656
657}
658
659
660
661
662
663//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
664
665// 파일 다운
666
667//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
668
669function FileDownload(path){
670
671	$("#iFrame1").attr("src", path);
672
673}
674
675
676
677//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
678
679//값 변경
680
681//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
682
683function ReverWord(pVal){
684
685	pVal = (pVal==null || pVal == undefined)?"":pVal;
686
687	pVal = pVal.replace(/\n/gi, "<br/>");
688
689	return pVal;
690
691}
692
693
694
695function ReverWordRemove(pVal){
696
697	pVal = (pVal==null || pVal == undefined)?"":pVal;
698
699	//pVal = pVal.replace(/\r\n/gi, "<br/>");
700
701	//pVal = pVal.replace(/\n/gi, "<br/>");
702
703	pVal = pVal.replace(/<br\/>/gi, "");
704
705	return pVal;
706
707}
708
709
710
711function HTMLToTextArea(pVal){
712
713	pVal = (pVal==null || pVal == undefined)?"":pVal;
714
715	pVal = pVal.replace(/<br\/>/gi, "\n");
716
717	pVal = pVal.replace(/''/gi, "'");
718
719	return pVal;
720
721}
722
723
724
725
726
727
728
729//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
730
731//숫자 옵션 option 추가
732
733//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
734
735function getSelectDataAsc(pconfig){
736
737	var str = "", optVal = "", selected = "";
738
739
740
741	if(pconfig.addopt != ""){
742
743		str = "<option value='"+pconfig.addval+"' >"+pconfig.addopt+"</option>";
744
745	}
746
747
748
749	if(pconfig.order =="desc"){
750
751		for(var i=pconfig.s; i>=pconfig.e;i--){
752
753			optVal = i+'';
754
755			selected = "";
756
757
758
759			if(i<10 && pconfig.usezero) optVal = "0"+optVal;
760
761			if(optVal == pconfig.selval) selected = "selected";
762
763
764
765			str += "<option value='"+optVal+"' "+selected+">"+optVal+pconfig.u+"</option>";
766
767		}
768
769	}else{
770
771		for(var i=pconfig.s; i<=pconfig.e;i++){
772
773			optVal = i+'';
774
775			selected = "";
776
777
778
779			if(i<10 && pconfig.usezero) optVal = "0"+optVal;
780
781			if(optVal == pconfig.selval) selected = "selected";
782
783
784
785			str += "<option value='"+optVal+"' "+selected+">"+optVal+pconfig.u+"</option>";
786
787		}
788
789	}
790
791
792
793	$(pconfig.obj).html(str);
794
795}
796
797
798
799//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
800
801//배열 option 추가
802
803//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
804
805function setBasicSelectOpt(selObj, pObj, objConfig){
806
807	var obj;
808
809
810
811	if(pObj != "") obj = $(selObj, $(pObj));
812
813	else obj = $(selObj);
814
815
816
817	$(obj).empty(); //기존꺼 있으면 삭제
818
819	$(objConfig).each(function(idx, val){
820
821		$(obj).append(new Option(val, val)); //title, value 순서
822
823	});
824
825}
826
827
828
829//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
830
831// 선택된 메일 select 값 input에 넣기
832
833//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
834
835function inputSelectMail(event){
836
837	var strFrom = event.data.eleFrom;
838
839	var strTo = event.data.eleTo;
840
841	var strParent = event.data.eleParent;
842
843
844
845	var eleFrom, eleTo;
846
847	if(strParent == ""){
848
849		eleFrom = $(strFrom), eleTo = $(strTo);
850
851	}else{
852
853		eleFrom = $(strFrom, $(strParent));
854
855		eleTo = $(strTo, $(strParent));
856
857	}
858
859
860
861	if($('option:selected', eleFrom).index() == 0){
862
863		eleTo.val("");
864
865		eleTo.attr('readonly', false);
866
867	}else{
868
869		eleTo.val($("option:selected", eleFrom).val());
870
871		eleTo.attr('readonly', true);
872
873	}
874
875}
876
877
878
879//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
880
881// 파일
882
883//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
884
885var fileCtrl = {
886
887	/******************************
888
889	//File input element 초기화
890
891	******************************/
892
893	ClearFileInputElem:function(strFileID){
894
895		$(strFileID).prop('files', null);
896
897
898
899		var browser = navigator.userAgent.toLowerCase();
900
901		if(browser.indexOf('msie') != -1){//ie일때
902
903			$(strFileID).replaceWith( $(strFileID).clone(true) );
904
905		}else{
906
907			$(strFileID).val("");
908
909		}
910
911	},
912
913	/******************************
914
915	//File 크기 체크
916
917	******************************/
918
919	SizeCheck:function(iObjSize, imb){//mb 기준
920
921		var size = Number(imb)*1024*1024;
922
923		if(iObjSize > size){
924
925			return false;
926
927		}
928
929		return true;
930
931	},
932
933	/******************************
934
935	//File 패턴 체크
936
937	******************************/
938
939	PatternCheck:function(gubun, filename){
940
941		var pattern;
942
943		var ret = null;
944
945		switch(gubun){
946
947			case "img1": //jpg, gif만
948
949				pattern = /(.jpeg$|.jpg$|.gif$)/gi;
950
951				break;
952
953			case "img2":
954
955				pattern = /(.jpeg$|.jpg$|.gif$|.png$)/gi;
956
957				break;
958
959			case "img3":
960
961				pattern = /(.jpeg$|.jpg$|.png$)/gi;
962
963			break;
964
965			case "nofiles":
966
967				pattern = /(.asp$|.exe$|.msi$|.js$|.com$)/gi;
968
969			break;
970
971			case "audio1":
972
973				pattern = /(.mp3$|.acc$)/gi;
974
975			break;
976
977		}
978
979
980
981		ret = filename.match(pattern);
982
983		return ret;
984
985	},
986
987	/******************************
988
989	//파일 확장자
990
991	******************************/
992
993	getFileExt:function(name){
994
995		name =	undefinedNullToValue(name);
996
997
998
999		if(name == ""){
1000
1001			return "";
1002
1003		}else{
1004
1005			return name.substr(name.lastIndexOf("."));
1006
1007		}	
1008
1009	},
1010
1011};
1012
1013
1014
1015//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1016
1017// 날짜 및 숫자 변환
1018
1019//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1020
1021var commCtrl = {
1022
1023	/**********************************
1024
1025	// 패턴체크
1026
1027	**********************************/
1028
1029	vaildChkData:function(pType, pStrVal){
1030
1031		var ptnDay = /^(19|20)\d{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/;
1032
1033		var ptnOnlyNum = /^[\d]+$/;
1034
1035		var ptnUserID = /^(?=.*[a-zA-Z])(?=.*[0-9])[A-Za-z0-9+]{6,20}$/;  //6~20자리 영문, 숫자
1036
1037		//var ptnPwChk1 = /^[a-zA-Z0-9]{8,16}$/; //영어 or 숫자 8~16자로
1038
1039		//var ptnPwChk1=/^(?=.*[a-zA-Z])(?=.*[0-9])[A-Za-z0-9+]{4,20}$/;  //4~20영어,숫자 필수, 특수문자 안됨
1040
1041		var ptnPwChk1=/^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^*()\-_=+\\\|\[\]{};:\'",.<>\/?])*.{4,20}$/i;  //문자+숫자(+특수문자) :  특수문자도 필수로 하려면 뒤에 *를 빼면됨
1042
1043		///^(?=.*[a-zA-Z])(?=.*[!@#$%^*\-_+])(?=.*[0-9]).{4,}$/i; //특정특수문자포함 + 영문+숫자
1044
1045		var ptnPwChk2 = /[a-z]/i;  //적어도 한개의 a-z 확인
1046
1047		var pthPwChk3 = /\d/;  //적어도 한개의 0-9 확인
1048
1049		var ptnHp = /^0(?:10|11|16|17|18|19)-(?:\d{3}|\d{4})-\d{4}$/;
1050
1051		var ptnEmail =  /^[-!#$%&amp;'*+./0-9=?A-Z^_a-z{|}~]*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
1052
1053		//var ptnEmail=  /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
1054
1055		//var ptnPw2 = /^[a-z]{1}(?=.*\d)[a-z\d]{5,11}$/; //영소문자+숫자 6~12자 이내
1056
1057		var space = /\S/;	//스페이스
1058
1059
1060
1061		var retvalid = false;
1062
1063		switch (pType) {
1064
1065			case 'date' : if(!(ptnDay.test(pStrVal))){ retvalid = false;} else {retvalid = true;} break;
1066
1067			case 'number' : if(!(ptnOnlyNum.test(pStrVal))){ retvalid = false;} else {retvalid = true;} break;
1068
1069			case 'pw' :
1070
1071				if(!(ptnPwChk1.test(pStrVal))){ retvalid = false;} else {retvalid = true;} //문자+숫자(+특수문자)
1072
1073				/* 반복문자 3개이상 못오게*/
1074
1075				if(retvalid){
1076
1077					if (pStrVal.match(/(\w)\1\1/)) {
1078
1079						retvalid=false;
1080
1081					}
1082
1083					/*
1084
1085					for(var i=pStrVal.length-1;i>=2;i--)	{
1086
1087						if((pStrVal.charAt(i)==pStrVal.charAt(i-1)) && (pStrVal.charAt(i)==pStrVal.charAt(i-2)))
1088
1089						{
1090
1091							retvalid=false;
1092
1093							break;
1094
1095						}
1096
1097					}
1098
1099					*/
1100
1101				}
1102
1103
1104
1105				//if(!(ptnPwChk1.test(pStrVal) && ptnPwChk2.test(pStrVal) && pthPwChk3.test(pStrVal))){retvalid = false;	}else {retvalid = true;}
1106
1107				break;
1108
1109			case 'hp' : if(!(ptnHp.test(pStrVal))){ retvalid = false;} else {retvalid = true;} break;
1110
1111			case 'userid':if(!(ptnUserID.test(pStrVal))){ retvalid = false;} else {retvalid = true;} break;
1112
1113			case 'email':if(!(ptnEmail.test(pStrVal))){ retvalid = false;} else {retvalid = true;} break;
1114
1115		}
1116
1117		return retvalid;
1118
1119	},
1120
1121	isValidNumber:function(num){
1122
1123		var ret = num===null||num===undefined || num === ""?false:true;
1124
1125		var value = num?num.toString():"";
1126
1127		var retChar = "";
1128
1129
1130
1131		for (var i = 0; i < value.length; i++) {
1132
1133			retChar = value.substr(i,1);
1134
1135
1136
1137			if (retChar > "9" || retChar < "0"){
1138
1139				ret = false;
1140
1141				break;
1142
1143			}
1144
1145		}
1146
1147		return ret;
1148
1149	},
1150
1151	/**********************************
1152
1153	// 숫자만 입력
1154
1155	**********************************/
1156
1157	onlyNumber:function(){
1158
1159		//if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'');
1160
1161		this.value = this.value.replace(/[^0-9]/g, "");
1162
1163	},
1164
1165	/**********************************
1166
1167	// 숫자 제외 값은 빈값으로 변경
1168
1169	**********************************/
1170
1171	removeChar:function(val){
1172
1173		val = val +"";
1174
1175		return val==null?"":val.replace(/[^0-9]/g, "");
1176
1177	},
1178
1179	/**********************************
1180
1181	// 숫자 콤마 찍기
1182
1183	**********************************/
1184
1185	commaFormat:function(val){
1186
1187		if(val == null){ return "0";}
1188
1189		val = val +"";
1190
1191		return val.replace(/(\d)(?=(?:\d{3})+(?!\d))/g,'$1,').split(".")[0]; //소수점 제외
1192
1193	},
1194
1195	/**********************************
1196
1197	// 숫자 콤마 없애기
1198
1199	**********************************/
1200
1201	uncommaFormat:function(val){
1202
1203	  return val.replace(/[^\d]+/g, '');
1204
1205	},
1206
1207	/**********************************
1208
1209	// input에 콤마 값 집어넣기 keyup 이벤트에서
1210
1211	**********************************/
1212
1213	inputComma:function(){
1214
1215		this.value = commCtrl.commaFormat(commCtrl.uncommaFormat(this.value));
1216
1217	},
1218
1219	/**********************************
1220
1221	//날짜 변환
1222
1223	//pDate : 변환할 Date 형식 이나 String 형식
1224
1225	//pChr	 : string 날짜 연결 char
1226
1227	**********************************/
1228
1229	getDateToString: function(pDate, pChr){
1230
1231		var strYear, imonth, strMonth, idate, strDate;
1232
1233		var ret;
1234
1235
1236
1237		if(typeof pDate == "object"){
1238
1239			strYear = pDate.getFullYear();
1240
1241			imonth = pDate.getMonth()+1;
1242
1243			strMonth = imonth<10?"0"+imonth:imonth;
1244
1245			idate = pDate.getDate();
1246
1247			strDate = idate<10?"0"+idate:idate;
1248
1249		}else{
1250
1251			pDate = commCtrl.removeChar(pDate);
1252
1253			strYear = pDate.substr(0,4);
1254
1255			strMonth = pDate.substr(4,2);
1256
1257			strDate = pDate.substr(6,2);
1258
1259		}
1260
1261
1262
1263		if(pChr != "년월일"){
1264
1265			ret = strYear + pChr + strMonth + pChr + strDate;
1266
1267		}else{
1268
1269			ret = strYear + "년 " + strMonth + "월 " + strDate + "일";
1270
1271		}
1272
1273		return ret;
1274
1275	},
1276
1277	/**********************************
1278
1279	//날짜+시간 : 붙여서 표기
1280
1281	**********************************/
1282
1283	getStickDateTime:function(pDate){
1284
1285		 var strDate = commCtrl.getDateToString(pDate,"");
1286
1287
1288
1289		if(typeof(pDate) == "string") pDate = commCtrl.getStringToDate(pDate);
1290
1291
1292
1293		 var hh = pDate.getHours();
1294
1295		 var min = pDate.getMinutes();
1296
1297
1298
1299		 hh = hh.length<2?("0"+hh):hh;
1300
1301		 min = min.length<2?("0"+min):min;
1302
1303
1304
1305		 return strDate+hh+min;
1306
1307	},
1308
1309	/**********************************
1310
1311	//날짜 : 년월일 시분초 
1312
1313	**********************************/
1314
1315	getStringFullTime:function(pDate, pChr){
1316
1317		var ret = "";
1318
1319		var strYear, strMonth, strDay, strHH, strMM, strSec;
1320
1321		if(pDate == null) pDate = new Date();
1322
1323
1324
1325		strYear = pDate.getFullYear();
1326
1327		strMonth = pDate.getMonth()+1;
1328
1329		if(strMonth<10) strMonth = "0"+strMonth;
1330
1331		strDay = pDate.getDate();
1332
1333		if(strDay<10) strDay = "0"+strDay;
1334
1335
1336
1337		strHH = pDate.getHours();
1338
1339		if(strHH<10) strHH = "0"+strHH;
1340
1341
1342
1343		strMM = pDate.getMinutes();
1344
1345		if(strMM<10) strMM = "0"+strMM;
1346
1347
1348
1349		strSec = pDate.getSeconds();
1350
1351		if(strSec<10) strSec = "0"+strSec;
1352
1353
1354
1355		if(pChr == "년월일시분초"){
1356
1357			ret = strYear+"년"+strMonth+"월"+strDay+"일 "+strHH+"시"+strMM+"분"+strSec+"초";
1358
1359		}else if(pChr == "hhmm"){
1360
1361			ret = strHH+":"+strMM;
1362
1363		}else if(pChr == "stickhhmm"){
1364
1365			ret = strHH+""+strMM;		
1366
1367		}else if(pChr == "stickall"){
1368
1369			ret = strYear+''+strMonth+''+strDay+strHH+''+strMM+''+strSec;
1370
1371		}else{
1372
1373			ret = strYear+pChr+strMonth+pChr+strDay+" "+strHH+":"+strMM+":"+strSec;
1374
1375		}
1376
1377
1378
1379		return ret;
1380
1381	},
1382
1383	/**********************************
1384
1385	//날짜 변환 : String -> Date
1386
1387	**********************************/
1388
1389	getStringToDate:function(pStrDt){
1390
1391		var ary = commCtrl.getStringDateToAry(pStrDt);
1392
1393		return new Date(Number(ary[0]), Number(ary[1])-1, Number(ary[2]));
1394
1395	},
1396
1397	/**********************************
1398
1399	// string 날짜 년월일 배열 리턴
1400
1401	**********************************/
1402
1403	getStringDateToAry:function(pStr){
1404
1405		var str = commCtrl.removeChar(pStr);
1406
1407		return [str.substr(0,4),str.substr(4,2), str.substr(6,2)];
1408
1409	},
1410
1411	/**********************************
1412
1413	// 요일 글자로 얻기
1414
1415	**********************************/
1416
1417	getStrDayOfTheWeek:function(pWeekNum, cType){
1418
1419		var ret= "";
1420
1421
1422
1423		var charWeek = [
1424
1425			["일", "월","화","수","목","금","토"],
1426
1427			["일요일", "월요일","화요일","수요일","목요일","금요일","토요일"],
1428
1429			["sun", "","mon","tue","wed","thurs","fri","sat"],
1430
1431			["Sun", "","Mon","Tue","Wed","Thurs","Fri","Sat"],
1432
1433			["SUN", "","MON","TUE","WED","THURS","FRI","SAT"]
1434
1435		];
1436
1437
1438
1439		switch(cType){
1440
1441			case "large-hangul": ret = charWeek[1][pWeekNum]; break;
1442
1443			case "small-eng": ret = charWeek[2][pWeekNum]; break;
1444
1445			case "mid-eng": ret = charWeek[3][pWeekNum]; break;
1446
1447			case "large-eng": ret = charWeek[4][pWeekNum]; break;
1448
1449			case "small-hangul":
1450
1451			default:
1452
1453				ret = charWeek[0][pWeekNum];
1454
1455		}
1456
1457
1458
1459		return ret;
1460
1461	},
1462
1463	/**********************************
1464
1465	// 현재 들어온 달의 마지막 날짜
1466
1467	**********************************/
1468
1469	getThisEndDay:function(dt){
1470
1471		if(dt == undefined || dt == null) dt = new Date();
1472
1473
1474
1475		var lastDate = new Date(dt.getFullYear(), dt.getMonth()+1,0);
1476
1477		var lstDay = lastDate.getDate();		//마지막날
1478
1479
1480
1481		return lstDay;
1482
1483	},
1484
1485	/**********************************
1486
1487	// 달의 첫날과 마지막날 리턴
1488
1489	**********************************/
1490
1491	getStartDayEndDay:function(strDt, pchr){
1492
1493		var str = commCtrl.removeChar(strDt);
1494
1495		var strYY  = strDt.substr(0,4);
1496
1497		var strMM = strDt.substr(4,2);
1498
1499
1500
1501		var day = new Date(strYY, parseInt(strMM)-1, 1);
1502
1503		var firstDay = strYY+pchr+strMM+pchr+"01";
1504
1505		var lstDay = strYY+pchr+strMM+pchr+commCtrl.getThisEndDay(day);
1506
1507
1508
1509		return [firstDay, lstDay];
1510
1511	},
1512
1513	/**********************************
1514
1515	// 원하는 요일 차
1516
1517	**********************************/
1518
1519	getDiffDate:function(ndt, gap, gubun, rtype){
1520
1521
1522
1523		switch(typeof ndt){
1524
1525			case "object": break;
1526
1527			case "string":
1528
1529				var selDate = commCtrl.removeChar(ndt);
1530
1531				if(selDate.length !=8){ day = new Date();}
1532
1533				else{
1534
1535					ndt = new Date(selDate.substr(0,4),(parseInt(selDate.substr(4,2))-1), selDate.substr(6,2));
1536
1537				}
1538
1539			break;
1540
1541			default:
1542
1543				ndt = new Date();
1544
1545		}
1546
1547
1548
1549		if(gubun == "y"){
1550
1551			ndt.setYear(ndt.getFullYear()+gap);
1552
1553		}else if(gubun == "m"){
1554
1555			ndt.setMonth(ndt.getMonth()+gap);
1556
1557		}else{
1558
1559			ndt.setDate(ndt.getDate()+gap);
1560
1561		}
1562
1563
1564
1565		if(rtype == "str"){
1566
1567			ndt = commCtrl.getDateToString(ndt,"-");
1568
1569		}
1570
1571
1572
1573		return ndt;
1574
1575	},
1576
1577	getDateVals:function(config){
1578
1579		var dt, tempdt;
1580
1581		var year,month,date,currdate,firstdate,lastdate;
1582
1583		var currweekno,currweekname, firstweekno,firstweekname, lastweekno, lastweekname;
1584
1585		var strType = config.weektype == undefined ?"small-hangul":config.weektype;
1586
1587
1588
1589		if(config.val == undefined || config.val == "") config.val = new Date();
1590
1591		if(typeof config.val == "object") dt = config.val;
1592
1593		else dt = commCtrl.getStringToDate(config.val);	
1594
1595
1596
1597		year = dt.getFullYear().toString();
1598
1599		month = ("0"+(dt.getMonth()+1)).substr(-2);
1600
1601		date = ("0"+dt.getDate()).substr(-2);
1602
1603		currdate = year + month + date;
1604
1605		firstdate = year + month + "01";
1606
1607
1608
1609		//현재 요일
1610
1611		currweekno = dt.getDay();
1612
1613		currweekname = commCtrl.getStrDayOfTheWeek(currweekno, strType);
1614
1615
1616
1617		//첫번째 요일
1618
1619		tempdt = new Date(year,parseInt(month,10)-1,1);
1620
1621		firstweekno = tempdt.getDay();
1622
1623		firstweekname = commCtrl.getStrDayOfTheWeek(firstweekno, strType);
1624
1625
1626
1627		//마지막 요일, 날짜
1628
1629		tempdt = new Date(year,month,0);
1630
1631		lastdate = ("0"+tempdt.getDate()).substr(-2);
1632
1633		lastdate = year + month + lastdate;
1634
1635		lastweekno = tempdt.getDay();
1636
1637		lastweekname = commCtrl.getStrDayOfTheWeek(lastweekno, strType);
1638
1639		
1640
1641	//		var hh = ("0"+dt.getHours()).substr(-2);		//시
1642
1643	//		var mm = ("0"+dt.getMinutes()).substr(-2);	//분		
1644
1645	//		var ss = ("0"+dt.getSeconds()).substr(-2);	//초
1646
1647
1648
1649		var iHH = dt.getHours(), iMM = dt.getMinutes(), iSS = dt.getSeconds();
1650
1651
1652
1653		var hh24 =  ("0"+iHH).substr(-2);	//24시간 표시 : 시	
1654
1655		var hh =  ("0"+iHH).substr(-2);		//일반 표시 : 시	
1656
1657
1658
1659		var mm =  ("0"+iMM).substr(-2);		//분	
1660
1661		var ss =  ("0"+iSS).substr(-2);		//초
1662
1663
1664
1665		var ampm = "오전";
1666
1667		var ampm_eng = "AM";	
1668
1669
1670
1671		if(iHH >= 12) {
1672
1673			ampm = "오후", ampm_eng = "PM"
1674
1675			if(iHH > 12){hh = ("0"+(iHH - 12)).substr(-2);}
1676
1677		}
1678
1679
1680
1681		return {
1682
1683			year:year,									//년도
1684
1685			month:month,							//월
1686
1687			date:date,									//일
1688
1689			ampm:ampm,							//오전오후 : 한글
1690
1691			ampm_eng:ampm_eng,				//오전오후 : 영어
1692
1693			hh24:hh24,								//24시간 표시 : 시	
1694
1695			hh:hh,										//12시간 표시 : 시
1696
1697			mm:mm,									//분
1698
1699			ss:ss,										//초
1700
1701			currdate:currdate,						//선택한날짜 :_selectDate
1702
1703			firstdate:firstdate,						//선택한 날짜의 1일
1704
1705			lastdate:lastdate,						//선택한 날짜의 마지막 날짜
1706
1707			currweekno:currweekno,				//선택한 날짜의 요일 번호
1708
1709			currweekname:currweekname,	//선택한 날짜의 요일 이름
1710
1711			firstweekno:firstweekno,				//선택한 날짜의 1일의 요일 번호
1712
1713			firstweekname:firstweekname,	//선택한 날짜의 1일의 요일 이름
1714
1715			lastweekno:lastweekno,				//선택한 날짜의 마지막날의 요일 번호		
1716
1717			lastweekname:lastweekname
1718
1719		}
1720
1721	},
1722
1723	/**********************************
1724
1725	//선택한 달의 첫주 첫번째 날짜 , 마지막주의 마지막 날짜 가져ì˜
1725¤ê¸°
1726
1727	**********************************/
1728
1729	getThisMonthPreNextDay:function(YYMM){
1730
1731		var FirstDay, LastDay; 
1732
1733		
1734
1735		//들어온 날짜 세팅		
1736
1737		var nMonth = new Date(YYMM.substr(0,4),(parseInt(YYMM.substr(4,2))-1), 1);
1738
1739		//첫날 요일가져오기
1740
1741		var dayOfWeek = nMonth.getDay();  //0(일)~6(토)	
1742
1743		var week = 0;	//요일 시작일			
1744
1745
1746
1747
1748
1749		//지난달 날짜 남은 수대로 뿌리기
1750
1751		if(week<dayOfWeek){
1752
1753			var preGap = (dayOfWeek*-1)-1;
1754
1755			var preDate  = new Date(nMonth.getFullYear(), nMonth.getMonth(), nMonth.getDate());
1756
1757			preDate.setDate(preDate.getDate()+preGap+1);			
1758
1759			FirstDay = commCtrl.getDateToString(preDate, "");
1760
1761		}else{
1762
1763			FirstDay = YYMM+"01";
1764
1765		}
1766
1767
1768
1769		//선택한 달의 마지막주 마지막 날짜 가져오기	
1770
1771		var lastDate = new Date(nMonth.getFullYear(), nMonth.getMonth()+1,0); //
1772
1773		var lstDay = lastDate.getDate();		//이번달 마지막날
1774
1775
1776
1777
1778
1779		var oStartDt = new Date(nMonth.getTime());
1780
1781		oStartDt.setDate(1);
1782
1783		
1784
1785		for(var i=1;i<lstDay;i++){
1786
1787			oStartDt.setDate(oStartDt.getDate()+1);
1788
1789			week = oStartDt.getDay();
1790
1791		}		
1792
1793		
1794
1795
1796
1797		if(week<6){
1798
1799			for(var i=week;i<6;i++){oStartDt.setDate(oStartDt.getDate() + 1);}
1800
1801			LastDay = commCtrl.getDateToString(oStartDt,"");		
1802
1803		}else{
1804
1805			LastDay = commCtrl.getDateToString(lastDate,"");
1806
1807		}
1808
1809
1810
1811		return [FirstDay, LastDay];
1812
1813	},
1814
1815};
1816
1817
1818
1819//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1820
1821// 현재 스크롤 top 위치 값
1822
1823//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1824
1825function getNowScrollTop(){
1826
1827	return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
1828
1829}
1830
1831
1832
1833//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1834
1835// 다음 주소
1836
1837//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1838
1839/******************************
1840
1841// 팝업 다음주소 api 호출
1842
1843******************************/
1844
1845function popupDaumPostcode(pconfig) {
1846
1847
1848
1849	//팝업 위치를 지정(화면의 가운데 정렬)
1850
1851	var width = 500; //팝업의 너비
1852
1853	var height = 600; //팝업의 높이
1854
1855	new kakao.Postcode({
1856
1857		width: width, //생성자에 크기 값을 명시적으로 지정해야 합니다.
1858
1859		height: height,
1860
1861		oncomplete: function(data) {
1862
1863			// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
1864
1865
1866
1867			// 각 주소의 노출 규칙에 따라 주소를 조합한다.
1868
1869			// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
1870
1871			var fullAddr = '';//data.address; // 최종 주소 변수
1872
1873			var extraAddr = ''; // 조합형 주소 변수
1874
1875
1876
1877			// 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
1878
1879			if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
1880
1881				fullAddr = data.roadAddress;
1882
1883
1884
1885			} else { // 사용자가 지번 주소를 선택했을 경우(J)
1886
1887				fullAddr = data.jibunAddress;
1888
1889				//fullAddr = data.roadAddress;
1890
1891			}
1892
1893
1894
1895			// 사용자가 선택한 주소가 도로명 타입일때 조합한다.
1896
1897			if(data.userSelectedType === 'R'){
1898
1899				//법정동명이 있을 경우 추가한다.
1900
1901				if(data.bname !== ''){
1902
1903					extraAddr += data.bname;
1904
1905				}
1906
1907				// 건물명이 있을 경우 추가한다.
1908
1909				if(data.buildingName !== ''){
1910
1911					extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
1912
1913				}
1914
1915				// 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
1916
1917				fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : '');
1918
1919			}
1920
1921
1922
1923			var strZip = "#PostZip",
1924
1925				strZipAddr= "#PostZipAddr",
1926
1927				strAddr = "#PostAddr";
1928
1929
1930
1931			if(pconfig != undefined){
1932
1933				strZip = pconfig.PostZip;
1934
1935				strZipAddr =  pconfig.PostZipAddr;
1936
1937				strAddr = pconfig.PostAddr;
1938
1939			}
1940
1941
1942
1943			//우편번호, 주소 넣기
1944
1945			$(strZip).val(data.zonecode);
1946
1947			$(strZipAddr).val(fullAddr);
1948
1949			$(strAddr).focus();
1950
1951
1952
1953			/*
1954
1955			// 우편번호와 주소 정보를 해당 필드에 넣는다.
1956
1957			document.getElementById('PostZip').value = data.zonecode; //5자리 새우편번호 사용
1958
1959			document.getElementById('PostZipAddr').value = fullAddr;
1960
1961			document.getElementById('PostBCode').value = data.bcode;
1962
1963			document.getElementById('PostBName').value = data.bname;
1964
1965			// 커서를 상세주소 필드로 이동한다.
1966
1967			//document.getElementById('PostAddr').focus();
1968
1969			*/
1970
1971		}
1972
1973	}).open({
1974
1975		left: (window.screen.width / 2) - (width / 2),
1976
1977		top: (window.screen.height / 2) - (height / 2)
1978
1979	});
1980
1981}
1982
1983
1984
1985/******************************
1986
1987// 레이어 다음주소 api 호출
1988
1989******************************/
1990
1991var layerPost = {
1992
1993	objLayer : null,
1994
1995	closeDaumPostcode : function() {
1996
1997		$('#PostLayer').hide();
1998
1999    },
2000
2001
2002
2003	daumPostLayerPostZip : function(pconfig){
2004
2005		layerPost.objLayer = document.getElementById(pconfig.strlayer);
2006
2007		//중앙으로 위치 잡기
2008
2009		$(".postLayer-body").css({"left":(($(window).width()/2)-($(".postLayer-body").width()/2))+"px"});
2010
2011
2012
2013
2014
2015		 new kakao.Postcode({
2016
2017            oncomplete: function(data) {
2018
2019				// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
2020
2021
2022
2023				// 각 주소의 노출 규칙에 따라 주소를 조합한다.
2024
2025				// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
2026
2027				var fullAddr = ''; // 최종 주소 변수
2028
2029				var extraAddr = ''; // 조합형 주소 변수
2030
2031
2032
2033				// 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
2034
2035				if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
2036
2037					fullAddr = data.roadAddress;
2038
2039				} else { // 사용자가 지번 주소를 선택했을 경우(J)
2040
2041					fullAddr = data.jibunAddress;
2042
2043					//fullAddr = data.roadAddress;
2044
2045				}
2046
2047
2048
2049				// 사용자가 선택한 주소가 도로명 타입일때 조합한다.
2050
2051				if(data.userSelectedType === 'R'){
2052
2053					//법정동명이 있을 경우 추가한다.
2054
2055					if(data.bname !== ''){
2056
2057						extraAddr += data.bname;
2058
2059					}
2060
2061					// 건물명이 있을 경우 추가한다.
2062
2063					if(data.buildingName !== ''){
2064
2065						extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
2066
2067					}
2068
2069					// 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
2070
2071					fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : '');
2072
2073				}
2074
2075
2076
2077				var strZip = "#PostZip", strZipAddr= "#PostZipAddr", strAddr = "#PostAddr";
2078
2079				if(pconfig.postzip != undefined){
2080
2081					strZip = pconfig.postzip;
2082
2083					strZipAddr =  pconfig.postzipaddr;
2084
2085					strAddr = pconfig.postaddr;
2086
2087				}
2088
2089
2090
2091				// 우편번호와 주소 정보를 해당 필드에 넣는다.
2092
2093				$(strZip).val(data.zonecode);
2094
2095				$(strZipAddr).val(fullAddr);
2096
2097				$(strAddr).focus();
2098
2099
2100
2101				layerPost.closeDaumPostcode();
2102
2103			},
2104
2105			width:'100%',
2106
2107			height:'100%'
2108
2109		 }).embed(layerPost.objLayer);
2110
2111
2112
2113	} //end of daumPostLayerPostZip
2114
2115
2116
2117}
2118
2119
2120
2121//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2122
2123// 쿠키값 설정하기
2124
2125//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2126
2127function setCookie( name, value, expiredays ) {
2128
2129	var todayDate = new Date();
2130
2131	todayDate.setDate( todayDate.getDate() + expiredays );
2132
2133	document.cookie = name + "=" + escape( value ) + "; path=/;";
2134
2135}
2136
2137
2138
2139//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2140
2141// 로그인 정보
2142
2143//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2144
2145function getLoginInfo(){
2146
2147	var logInfo = null;
2148
2149	var conf = {type:"post", dataType:"json", URL:"/inc/getLoginInfo.asp"};
2150
2151	Jq.loadAjaxData(conf,"",function(json){logInfo = json[0];},function(xhr,status, error){});
2152
2153	return logInfo;
2154
2155}
2156
2157
2158
2159//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2160
2161// 로그인으로 이동
2162
2163//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2164
2165function goLoginPage(path){
2166
2167	alert("로그인 후 이용가능합니다.");
2168
2169
2170
2171	if(path == undefined){
2172
2173		location.href = "/login/login.asp?ReturnPage=" + encodeURIComponent(location.pathname + location.search);
2174
2175	}else{
2176
2177		location.href = "/login/login.asp?ReturnPage=" + path;
2178
2179	}
2180
2181}
2182
2183
2184
2185//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2186
2187// css property check
2188
2189//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2190
2191function webkitTextSecurityCheck(){
2192
2193	var b = document.body || document.documentElement,
2194
2195	s = b.style;
2196
2197
2198
2199	if(typeof s == 'undefined') { return false; }
2200
2201	if(typeof s.webkitTextSecurity == "undefined"){	return false;}
2202
2203
2204
2205	return true;
2206
2207}
2208
2209
2210
2211//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2212
2213// 주문정보 다 지우기 -order 페이지 제외 : 안씀
2214
2215//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2216
2217function fnClearOrderCart(){
2218
2219	var config = {type:"post", dataType:"text", URL:"/order/proc/ClearOrderCart.asp"};
2220
2221	Jq.loadAjaxData(config,"",function(data){},function(xhr,status, error){});
2222
2223}
2224
2225
2226
2227//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2228
2229// 팝업 오픈
2230
2231//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2232
2233function BrowserPopup(popUrl, popWidth, popHeight) {
2234
2235	var winHeight = screen.availHeight;	// 현재창의 높이
2236
2237	var winWidth = document.body.clientWidth;	// 현재창의 너비
2238
2239	var winX = window.screenX || window.screenLeft || 0;// 현재창의 x좌표
2240
2241	var winY = window.screenY || window.screenTop || 0;	// 현재창의 y좌표
2242
2243
2244
2245	var popX = winX + (winWidth - popWidth)/2;
2246
2247	var popY = winY + (winHeight - popHeight)/2;
2248
2249
2250
2251	var rn = Math.round(Math.random()*100);
2252
2253	var popName = "popup"+rn;
2254
2255
2256
2257	window.open(popUrl,popName,"width="+popWidth+"px,height="+popHeight+"px,top="+popY+",left="+popX+",toolbar=no, menubar=no, scrollbars=yes, resizable=yes");
2258
2259}
2260
2261
2262
2263//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2264
2265// 레어어 팝업 닫기
2266
2267//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2268
2269function closeFrameLayer() {
2270
2271	$("#popView").hide();
2272
2273	//$('html, body').css({ 'overflow': 'auto', 'height': 'auto' });
2274
2275}
2276
2277
2278
2279//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2280
2281// 레어어 팝업 열기
2282
2283//w(프레임 넓이), h (프레임 높이), title(레이어 타이틀)
2284
2285//subtitle(타이틀 밑에 작은 글씨), url : 프레임주소
2286
2287//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2288
2289function OpenFrameLayer(pconfig){
2290
2291	var popView = $("#popView");
2292
2293	var popBody = $("#popBody");
2294
2295
2296
2297	var pWidth = pconfig.w == undefined?$(".layer-body", popView).width():pconfig.w;
2298
2299	var pHeight = pconfig.h == undefined?popBody.height():pconfig.h;
2300
2301	//var nLeft = ($(window).width()/2)-($(".layer-body").width()/2);
2302
2303	//var nLeft = ($(window).width()/2)-(pWidth/2);
2304
2305	var nLeft = $(window).width()/2;
2306
2307	//console.log($(window).width(),$(".layer-body").width());
2308
2309	//console.log(document.body.clientWidth, pconfig.w);
2310
2311
2312
2313	var strHTML = "<iframe id=\"popframe\" src=\"" + pconfig.url + "\" style=\"width:100%;height:"+pHeight+"px;\" frameborder=\"0\" scrolling=\"auto\"></iframe>";
2314
2315	popBody.html(strHTML);
2316
2317
2318
2319	//popBody.style.border = borderWidth + '5px solid';
2320
2321	$(".header-title strong", popView).text(pconfig.title);
2322
2323	if(pconfig.subtitle != undefined){$(".layer-header span", popView).text(pconfig.subtitle);}
2324
2325	$(".layer-body", popView).css({"width":pWidth+"px", "height":(pHeight+100)+"px", "left":nLeft+"px"});
2326
2327
2328
2329	popView.show();
2330
2331}
2332
2333
2334
2335
2336
2337//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2338
2339// 글자 수 제한
2340
2341//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2342
2343/***********************************
2344
2345// 글자갯수 바이트단위 세기
2346
2347***********************************/
2348
2349function Calculate_Byte(pStr){
2350
2351	var sTmpStr, sTmpChar;
2352
2353	var nOriginLen = 0;
2354
2355	var nStrLength = 0;
2356
2357
2358
2359	sTmpStr = new String(pStr);
2360
2361	nOriginLen = sTmpStr.length;
2362
2363
2364
2365	for ( var i=0 ; i < nOriginLen ; i++ )	{
2366
2367		sTmpChar = sTmpStr.charAt(i);
2368
2369		if (escape(sTmpChar).length > 4)
2370
2371		{
2372
2373			nStrLength += 2;
2374
2375		} else if (sTmpChar!='\r'){
2376
2377			nStrLength ++;
2378
2379		}
2380
2381	}
2382
2383	return nStrLength;
2384
2385}
2386
2387
2388
2389
2390
2391/***********************************
2392
2393// 글자 바이트 단위로 자르기
2394
2395***********************************/
2396
2397function Cut_StrByte(pStr, pMaxLen){
2398
2399	var sTmpStr, sTmpChar, sDestStr;
2400
2401	var nOriginLen = 0;
2402
2403	var nStrLength = 0;
2404
2405	var sDestStr = "";
2406
2407	sTmpStr = new String(pStr);
2408
2409	nOriginLen = sTmpStr.length;
2410
2411
2412
2413	for ( var i=0 ; i < nOriginLen ; i++ )
2414
2415	{
2416
2417		sTmpChar = sTmpStr.charAt(i);
2418
2419
2420
2421		if (escape(sTmpChar).length > 4){
2422
2423			nStrLength = nStrLength + 2;
2424
2425		} else if (sTmpChar!='\r')
2426
2427		{
2428
2429			nStrLength ++;
2430
2431		}
2432
2433
2434
2435		if (nStrLength <= pMaxLen)
2436
2437		{
2438
2439			sDestStr = sDestStr + sTmpChar;
2440
2441		} else
2442
2443		{
2444
2445			break;
2446
2447		}
2448
2449	}
2450
2451	return sDestStr;
2452
2453}
2454
2455
2456
2457/***********************************
2458
2459// 글자수 세기
2460
2461***********************************/
2462
2463function Calculate_StrLen(pStr){
2464
2465	var sTmpStr, sTmpChar;
2466
2467	var nOriginLen = 0;
2468
2469	var nStrLength = 0;
2470
2471
2472
2473	sTmpStr = new String(pStr);
2474
2475	nOriginLen = sTmpStr.length;
2476
2477
2478
2479	for ( var i=0 ; i < nOriginLen ; i++ )	{
2480
2481		sTmpChar = sTmpStr.charAt(i);
2482
2483		if (sTmpChar!='\r'){
2484
2485			nStrLength ++;
2486
2487		}
2488
2489	}
2490
2491	return nStrLength;
2492
2493}
2494
2495
2496
2497/***********************************
2498
2499// 글자수 자르기
2500
2501***********************************/
2502
2503function Cut_StrLen(pStr, pMaxLen){
2504
2505	var sTmpStr, sDestStr;
2506
2507	var nOriginLen = 0;
2508
2509	var sDestStr = "";
2510
2511	sTmpStr = new String(pStr);
2512
2513	nOriginLen = sTmpStr.length;
2514
2515
2516
2517	if(nOriginLen>=pMaxLen){
2518
2519		sDestStr = sTmpStr.substr(0,pMaxLen);
2520
2521	}else{
2522
2523		sDestStr = sTmpStr;
2524
2525	}
2526
2527	
2528
2529	return sDestStr;
2530
2531}
2532
2533
2534
2535
2536
2537/***********************************
2538
2539// 입력 폼 유효성 체크
2540
2541***********************************/
2542
2543function validCheck(o, msg, isNumber, focus){
2544
2545    var space = /\S/;
2546
2547    var ret = true;
2548
2549
2550
2551    focus = focus==undefined || true;
2552
2553
2554
2555    if (o.val() == "" || !space.test(o.val())){
2556
2557        if (msg!=undefined && msg!=""){
2558
2559            alert(msg);
2560
2561        }
2562
2563        if (focus===true){
2564
2565            o.focus();
2566
2567        }
2568
2569        ret = false;
2570
2571    }
2572
2573
2574
2575    if (ret===true && isNumber===true){
2576
2577        var numberCheck = /\D/g.test(o.val()); //숫자가 아닌것들 체크
2578
2579
2580
2581        if (numberCheck){
2582
2583            alert("숫자만 입력해 주세요.");
2584
2585            o.val("");
2586
2587            ret = false;
2588
2589
2590
2591            if (focus===true){
2592
2593                o.focus();
2594
2595            }
2596
2597        }
2598
2599    }
2600
2601
2602
2603    return ret;
2604
2605}
2606
2607
2608
2609//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2610
2611// 이미지 http 관리자 연결 삭제하기
2612
2613//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2614
2615function RemoveHttpOsUrl(){	
2616	try{
2617		var ChkURL1 = "http://os.jybooks.g72.biz";
2618		var ChkURL2 = "http://www.jybooks.g72.biz";
2619		var ChkURL3 = "http://admin.jybooks.com";
2620		var ChkURL4 = "http://www.jybooks.com";
2621
2622		$("img").each(function(idx,elem){
2623			var src = $(elem).prop("src");
2624
2625			if(src != ""){
2626				src = src.toLowerCase();
2627				src = removeDomainImg(src);
2628				$(elem).attr("src", src);
2629
2630				//if(src.indexOf(ChkURL1)>-1){src = src.replace(ChkURL1, "");	$(elem).attr("src", src);}
2631				//if(src.indexOf(ChkURL2)>-1){src = src.replace(ChkURL2, "");	$(elem).attr("src", src);}
2632			}			
2633		});		
2634
2635		$("p").each(function(idx,elem){
2636			var url = String($(elem).css("background-image")).toLowerCase();
2637			//if(url.indexOf(ChkURL1)>-1){url = url.replace(ChkURL1,"");$(elem).css({"background-image":url});	}
2638			//if(url.indexOf(ChkURL2)>-1){url = url.replace(ChkURL2,"");$(elem).css({"background-image":url});	}
2639			
2640
2641			if(url != "undefined" && url != ""){
2642				url = removeDomainImg(url);
2643
2644				$(elem).css({"background-image":url});
2645
2646			}
2647
2648	
2649
2650		});
2651
2652	}catch(ex){
2653
2654		//console.log(ex.message);
2655
2656	}
2657
2658}
2659
2660
2661
2662function removeDomainImg(strUrl){
2663	var str = strUrl;
2664
2665	if(str == null || str == undefined){
2666		str = "";
2667	}else{
2668		str = str.replace(new RegExp("http://www.jybooks.com", "g"), "");
2669		str = str.replace(new RegExp("https://www.jybooks.com", "g"), "");
2670		str = str.replace(new RegExp("http://admin.jybooks.com", "g"), "");	
2671		str = str.replace(new RegExp("https://admin.jybooks.com", "g"), "");
2672		str = str.replace(new RegExp("http://os.jybooks.com", "g"), "");			
2673
2674		str = str.replace(new RegExp("http://www.jybooks.g72.biz", "g"), "");
2675		str = str.replace(new RegExp("http://jybooks.g72.biz", "g"), "");
2676		str = str.replace(new RegExp("https://jybooks.g72.biz", "g"), "");
2677		str = str.replace(new RegExp("http://os.jybooks.g72.biz", "g"), "");
2678
2679		//개발용
2680		str = str.replace(new RegExp("http://dev.jybooks.com", "g"), "");
2681		str = str.replace(new RegExp("https://dev.jybooks.com", "g"), "");
2682		str = str.replace(new RegExp("http://dev-os.jybooks.com", "g"), "");
2683		str = str.replace(new RegExp("http://dev-jybooks.g72.biz", "g"), "");		
2684		str = str.replace(new RegExp("http://devos-jybooks.g72.biz", "g"), "");	
2685	}
2686
2687	return str;
2688
2689}
2690
2691
2692
2693//■ 전화번호 하이프 넣기 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2694
2695function autoTelHyphen(val){
2696
2697	val = (val === null || val === undefined) ? "":val;
2698
2699	return val.replace(/[^0-9]/g, "").replace(/(^02|^0502|^0503|^0505|^0506|^0507|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})$/,"$1-$2-$3").replace("--", "-");
2700
2701}
2702
2703
2704
2705// 전체 공백지우기 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2706
2707function RemoveBlank(str){
2708
2709	str = undefinedNullToValue(str);
2710
2711	str =  String(str).replace(/\s/gi, "");
2712
2713	return str;
2714
2715}
2716
2717
2718
2719//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2720
2721// selectbox 로드 후 label 표기 
2722
2723//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2724
2725function initComboNearLable(){
2726
2727	$(".selectBox").each(function(idx,elem){$(elem).siblings("label").text($("option:selected",$(elem)).text());});	
2728
2729}
2730
2731
2732
2733//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2734
2735// 로딩 바 
2736
2737//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2738
2739function displayLoading(gbn, msg){
2740
2741	if(msg == undefined) msg = "";
2742
2743
2744
2745	if(gbn == "y"){
2746
2747		$("#list-loading p").html(msg);
2748
2749		$("#list-loading").show();
2750
2751	}else{
2752
2753		$("#list-loading").hide();
2754
2755	}
2756
2757}
2758
2759
2760
2761/***************************************
2762
2763//FileAPI 이용한 이미지 업로드 처리  - 용량줄임
2764
2765/***************************************/
2766
2767function imgUploadWithFileAPI(config){
2768
2769	if(config.aryFiles != null){
2770
2771		var ApiFile = config.aryFiles;
2772		var strURL = undefinedNullToValue(config.UploadURL,"/common/aspcommon/upload_photo.aspx");
2773		var ApiFileExt = fileCtrl.getFileExt(ApiFile.name);
2774		var strSeqNo = undefinedNullToValue(config.aryseqno,"");
2775		var ApiSaveFileName = config.prefix+"_"+commCtrl.getStringFullTime(new Date(), "stickall");
2776
2777		if(strSeqNo != "" ) ApiSaveFileName +="_"+strSeqNo;
2778		ApiSaveFileName += ApiFileExt;	
2779
2780
2781		var strFileType = "jpeg";
2782		if(ApiFileExt.indexOf("gif") > -1) strFileType = "gif"
2783		else if(ApiFileExt.indexOf("png") > -1) strFileType = "png";
2784
2785		FileAPI.getInfo(ApiFile, function(err, info) {//err:string, info:object
2786
2787			if(err){
2788				alert("파일업로드를 하지 못했습니다. \r\n 첨부파일 형식을 확인해 주세요.");
2789				displayLoading("n");
2790				return false;
2791
2792			}	
2793
2794			
2795
2796			var _width = info.width;
2797			var _height = info.height;
2798
2799			if(_width >= 800 || _height >= 600){
2800				_width = 800;
2801				_height = 600;
2802
2803			}			
2804
2805
2806
2807			var isImageOriginal = false;
2808
2809			var oImageTransform = {
2810				width : _width,
2811				height : _height,
2812				strategy : info.width > info.height ? 'max' : 'min',
2813				type : 'image/'+strFileType, 
2814				quality : 0.90,
2815				rotate : 'auto', // == autoOrientation
2816			}
2817
2818			if(strFileType.toLowerCase().indexOf("gif") > -1){
2819				isImageOriginal = true;
2820				oImageTransform = null;
2821			}
2822
2823			FileAPI.upload({
2824				url: strURL,
2825				headers : {},
2826				data: { "wFileName": ApiSaveFileName, "wFolderName":config.folder},
2827
2828				files: { file: ApiFile },
2829				imageOriginal : isImageOriginal,
2830				imageTransform : oImageTransform,
2831				progress: function (evt){ 
2832					//var pr = evt.loaded/evt.total * 100;
2833
2834					//if($('#progressbar').length) $('#progressbar').attr({value:evt.loaded, max:evt.total});
2835
2836					//progressbar.progressbar("value",pr);
2837
2838				},
2839
2840				complete: function (err, xhr){
2841
2842					if( !err ){
2843
2844						var json = JSON.parse(xhr.responseText);
2845
2846						if(json.errcode == "0"){
2847
2848							var filepath = "/Upfile/"+json.folder+"/"+json.filename;
2849
2850							config.FnGetFilePath(filepath);							
2851
2852						}else{
2853
2854							alert(json.errmsg);		
2855
2856							config.FnGetFilePath("");										
2857
2858						}		
2859
2860					}else{
2861
2862						alert(err);
2863
2864						config.FnGetFilePath("");										
2865
2866					}					
2867
2868				}
2869
2870			}); //end of upload
2871
2872		}); //end of info
2873
2874	}
2875
2876}
2877
2878
2879
2880// 임시 iframe 추가하기 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2881
2882function addTempIframe(req){
2883
2884	var ifrmID		= req.id;
2885
2886	var parentID	= undefinedNullToValue(req.parentID, "dvIFrameTemp");	
2887
2888
2889
2890	var iFrm = document.createElement('iframe');
2891
2892	iFrm.setAttribute('name', ifrmID);
2893
2894	iFrm.setAttribute('id', ifrmID);
2895
2896
2897
2898	if(req.showyn === "Y"){
2899
2900		iFrm.setAttribute('width', req.width);
2901
2902		iFrm.setAttribute('height', req.height);
2903
2904	}else{
2905
2906		iFrm.style.display= "none";
2907
2908	}
2909
2910
2911
2912	var el = document.getElementById(parentID);
2913
2914	el.appendChild(iFrm);
2915
2916}
2917
2918
2919
2920function parseJwt (token) {
2921
2922	var jsonPayload = "";
2923
2924
2925
2926	try{
2927
2928		var base64Url = token.split('.')[1];
2929
2930		var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
2931
2932
2933
2934		jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
2935
2936			return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
2937
2938		}).join(''));
2939
2940	}catch(ex){
2941
2942		jsonPayload =  "{\"errcode\":-1}";
2943
2944	}	
2945
2946
2947
2948	return JSON.parse(jsonPayload);
2949
2950}
2951
2952// 네이버 광고전환 추적 공통함수 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2953function trackNaverConversion(conversionData) {
2954  if (window.wcs) {
2955      if(!wcs_add) var wcs_add = {};
2956      
2957      wcs_add["wa"] = "s_4e5dc088aaf1";
2958      
2959      var _conv = {};
2960      _conv.type = conversionData.type;
2961      
2962      if (conversionData.id) _conv.id = conversionData.id;
2963      if (conversionData.value) _conv.value = conversionData.value;
2964      if (conversionData.items) _conv.items = conversionData.items;
2965      
2966      wcs.trans(_conv);
2967  }
2968}

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.