PageSourceSearch

https://landeng.co.kr/j-script/j-common.js?v=1791464603

js landeng.co.kr collected 2026-10-08 13:03:53 UTC 18,412 bytes, 751 lines download raw bytes

1/**
2* Common JavaScript Library
3*
4* @Author		: choe byungkook(sinbiweb)
5* @Update		: 2018-05-31
6* @Email		: [email protected]
7* @Description	: Common Javascript Library 
8*/
9(function(){ 
10	String.prototype.trim = function(){	return this.replace(/(^\s*)|(\s*$)/g, "");}		//Trim
11	String.prototype.stripspace = function() { return this.replace(/ /g, ""); }			//공백제거
12	String.prototype.getExt = function() {												//파일 확장자 구하기
13		var ext = this.substring(this.lastIndexOf(".") + 1, this.length);
14		return ext;
15	};
16})(window);
17
18var CHandler = {
19	// 회원아이디 유효성 검사 //
20	chkUserID : function(obj)
21	{
22		if($.type(obj) === "string")
23			var id = obj;
24		else if($.type(obj) === "object")
25			var id = obj.val();
26
27		var patten = /^[a-z]{1}[a-zA-Z0-9_-]{3,11}$/;	//영문소문자로 시작하는 4~12자리의 영문(대,소), 숫자, _ 만 허용함. 
28		if(!patten.test(id))
29			return false;
30		else
31			return true;
32	}, 
33	// 이메일 유효성 검사 //
34	chkEmail : function(email)
35	{
36		if(email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
37			return true;
38		else
39			return false;
40	},
41	// password check //
42	chkPassword : function(pw)
43	{
44		if(!/^[a-zA-Z0-9_!@#$%^&*()+=\/]{6,12}$/.test(pw) || pw.indexOf(' ') > -1) 
45		{
46			//alert('비밀번호는 숫자와 영문자 조합으로 6~12자리를 사용해야 합니다.');
47			return "111";
48		}
49
50		var chk_num = pw.search(/[0-9]/g);
51		var chk_eng = pw.search(/[a-z]/ig);
52
53		if(chk_num < 0 || chk_eng < 0)
54		{
55			//alert('비밀번호는 숫자와 영문자를 혼용하여야 합니다.');
56			return "222";
57		}
58
59		if(/(\w)\1\1\1/.test(pw))
60		{
61			//alert('비밀번호에 같은 문자를 4번 이상 사용하실 수 없습니다.');
62			return "333";
63		}
64		return "000";
65	},
66	// password confirm --- true or false //
67	validatePassword : function(pw)
68	{
69		if(pw.length < 1)
70			return false;
71		else if(this.chkPassword(pw) == "000")
72			return true;
73		else
74			return false;
75	},
76	// Alphabet check //
77	chkAlphabet : function(str)
78	{
79		if(str.length < 1) return false;
80		str = str.toUpperCase();
81		for(var i=0; i < str.length; i++)
82		{
83			if(!('A' <= str.charAt(i) && str.charAt(i) <= 'Z'))
84				return false;
85		}
86
87		return true;
88	},
89	// 한글 check //
90	chkHangul : function(str)
91	{
92		var patten = /[가-힣]/;
93		if(!patten.test(str))
94			return false;
95		else
96			return true;
97	}, 
98	// nickname check //
99	chkNickName : function(obj)
100	{
101		if($.type(obj) === "string")
102			var nic = obj;
103		else if($.type(obj) === "object")
104			var nic = obj.val();
105
106		var patten = /^[A-Za-z0-9_가-힣]{3,20}$/;
107		if(!patten.test(nick))
108			return false;
109		else
110			return true;
111	},
112	// ip check //
113	chkIp : function($obj)
114	{
115		var ip = $obj.val();
116		var filter = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;
117		if(filter.test(ip) == true)
118			return true;
119		else
120			return false;
121	},
122	// phone, mobile check
123	chkPhone : function(number)
124	{
125		var reg =  /[-)(_]*/g;
126		var phone_num = String(number).replace(reg, "");
127		if(phone_num.substring(1,2) == "2")
128			phone = phone_num.substring(0,2) + "-" + phone_num.substring(2, phone_num.length - 4) + "-" + phone_num.substring(phone_num.length - 4, phone_num.length);
129		else
130			phone = phone_num.substring(0,3) + "-" + phone_num.substring(3, phone_num.length - 4) + "-" + phone_num.substring(phone_num.length - 4, phone_num.length);
131		
132		if(phone_num.substring(1,2) == "1")
133			phone = phone.trim().match(/^01[016789]{1}-[1-9]{1}[0-9]{2,3}-[0-9]{4}$/);
134		else
135			phone = phone.match(/^0[0-9]{1,2}-[1-9]{1}[0-9]{2,3}-[0-9]{4}$/);
136		
137		return (phone) ? true : false;
138	},
139	// file check //
140	chkFileType : function(obj)
141	{
142		var ext = obj.value.getExt().toLowerCase();
143		var filetype = obj.getAttribute("filetype");
144
145		if(filetype == "image")
146		{
147			if(ext != "gif" && ext != "jpg" && ext != "jpeg" && ext != "png")
148			{
149				alert("이미지파일(gif, jpg, png)만 업로드 가능합니다.");
150				obj.focus();
151				return false;
152			}
153		}
154		else if(filetype)
155		{
156			if(ext != filetype)
157			{
158				alert(filetype+" 파일만 업로드 가능합니다.");
159				obj.focus();
160				return false;
161			}
162		}
163
164		return true;
165	},
166	// emoji check //
167	chkEmoji : function(str)
168	{
169		var regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g;
170		
171		
172		if(regex.test(str))
173			return true;	// 이모지(emoji) 포함됨
174		else
175			return false;	// 이모지(emoji) 포함 안됨
176	}
177};
178
179var NumberHandler = {
180	chkNumber : function(number)
181	{
182		if(/(^\d+$)|(^\d+\.\d+$)/.test(number))
183			return true;
184		else
185			return false;
186	}, 
187	removePreZero : function(str)
188	{
189		var i, result;
190		if(str == "0") return str;
191		for(i=0; i < str.length; i++)
192			if(str.substr(i,1) != "0") break;
193		
194		result = str.substr(i, str.length-i);
195		return result;
196	}, 
197	stripChar : function(val, isDec)
198	{
199		var i;
200		var minus = "-";
201		var number = "1234567890"+((isDec) ? "." : "");
202		var result = "";
203		for(i=0; i < val.length; i++)
204		{
205			chkno = val.charAt(i);
206			if(i == 0 && chkno == minus)
207				result += minus;
208			else
209			{
210				for(j=0; j < number.length; j++)
211				{
212					if(chkno == number.charAt(j))
213					{
214						result += number.charAt(j);
215						break;
216					}
217				}
218			}
219		}
220		return result;
221	},
222	stripComma : function(str)
223	{
224		var reg = /(,)*/g;
225		number = String(str).replace(reg, "");
226		return number;
227	}, 
228	NumberFormat : function(number)
229	{
230		var arr = new Array();
231		number = String(number);
232		for(var i=1; i <= number.length; i++)
233		{
234			if(i%3)
235				arr[number.length-i] = number.charAt(number.length-i);
236			else
237				arr[number.length-i] = ","+number.charAt(number.length-i);
238		}
239		return arr.join('').replace(/^,/,'');
240	}, 
241	// 소수점 반올림(number:소수, cnt:자릿수) //
242	decimalRound : function(number, cnt)
243	{
244		if(!cnt)
245			return Math.round(number);
246		else if(cnt > 0)
247		{
248			for(var i=0; i < cnt; i++)
249				number = number * 10;
250
251			number = Math.round(number);
252			var avg = 1;
253			for(var i=0; i < cnt; i++)
254				avg = avg * 10;
255
256			number = number / avg;
257			return number;
258		}
259		else
260		{
261			for(var i=0; i < cnt*(-1); i++)
262				number = number / 10;
263
264			number = Math.round(number);
265			for(var i=0; i < cnt*(-1); i++)
266				number = number * 10;
267
268			return number;
269		}
270	}, 
271	// 소수점 올림 (number:소수, cnt:자릿수) //
272	decimalCeil : function(number, cnt)
273	{
274		if(!cnt)
275			return Math.ceil(number);
276		else if(cnt > 0)
277		{
278			for(var i=0; i < cnt; i++)
279				number = number * 10;
280
281			number = Math.ceil(number);
282			avg = 1;
283			for(var i=0; i < cnt; i++)
284				avg = avg * 10;
285
286			number = number / avg;
287			return number;
288		}
289		else
290		{
291			for(var i=0; i < cnt*(-1); i++)
292				number = number / 10;
293
294			number = Math.ceil(number);
295			for(var i=0; i < cnt*(-1); i++)
296				number = number * 10;
297
298			return number;
299		}
300	}, 
301	decimalFloor : function(number)
302	{
303		var val = String(number);
304		var exval = val.split(".");
305
306		return exval[0];
307	},
308	// 소수점 있는 수 number_format
309	decimalNumerFormat : function(number)
310	{
311		var val = String(number);
312		var tmp = val.split(".");
313		if(tmp[0].length > 3)
314		{
315			var arNum = new Array();
316			tmp[0] = String(tmp[0]);
317			for(var i=1; i <= tmp[0].length; i++)
318			{
319				if(i%3)
320					arNum[tmp[0].length-i] = tmp[0].charAt(tmp[0].length-i);
321				else
322					arNum[tmp[0].length-i] = "," + tmp[0].charAt(tmp[0].length-i);
323			}
324
325			if(tmp[1])
326				return arNum.join("").replace(/^,/,'') + "." + tmp[1];
327			else
328				return arNum.join("").replace(/^,/,'');
329		}
330		else
331			return number;
332	},
333	// 단위 절사 (number:수, unit:단위) //
334	digitCut : function(number, unit)
335	{
336		//unit = unit * 1000
337		unit = Math.pow(10, unit);
338		//alert(unit);
339		number = Math.floor(number/unit) * unit;
340		return number;
341	}, 
342	toCurrency : function(obj)
343	{
344		if(obj.disabled) return false;
345		var num = obj.value.stripspace();
346		if(num == "") return false;
347		if(!this.chkNumber(this.stripChar(num)))
348		{
349			num = this.stripChar(num, false);
350			obj.blur();
351			obj.focus();
352		}
353		num = this.stripChar(this.stripComma(num), false);
354		num = this.removePreZero(num);
355		obj.value = this.NumberFormat(num);
356	}
357};
358
359var FHandler = {
360	FormChk : function(form) 
361	{
362		var ele, expstr, chkval, ele_type, ele_val;
363		for(var i=0; i < form.elements.length; i++)
364		{
365			ele = form.elements[i];	
366			expstr = ele.getAttribute("exp");
367			chkval = ele.getAttribute("chkval");
368			ele_type = ele.type.toLowerCase();
369			ele_val = ele.value;
370
371			if(expstr != null && expstr != "")
372			{
373				switch(ele_type)
374				{
375					case "hidden" : 
376						if(ele_val.replace(/^\s*/,'').replace(/\s*$/, '') == "")
377						{
378							alert(expstr);
379							return false;
380							break;
381						}
382					break;
383					case "text" : case "password" : case "textarea" : 
384						if(ele_val.replace(/^\s*/,'').replace(/\s*$/, '') == "" && ele.disabled == false)
385						{
386							alert(expstr + " 입력해 주세요.");
387							ele.focus();
388							return false;
389							break;
390						}
391					break;
392					case "select-one" : 
393						if(ele_val == "" && ele.disabled == false)
394						{
395							alert(expstr + " 선택해 주세요.");
396							ele.focus();
397							return false;
398							break;
399						}
400					break;
401					case "radio" : 
402						if($(":radio[name='"+ele.name+"']:checked").length < 1)
403						{
404							alert(expstr + " 선택해 주세요.");
405							$(":radio[name='"+ele.name+"']").eq(0).focus();
406							return false;
407							break;
408						}
409					break;
410					case "file" : 
411						if(ele_val == "" && ele.disabled == false)
412						{
413							alert(expstr + " 선택해 주세요.");
414							ele.focus();
415							return false;
416							break;
417						}
418						else if(ele_val != "" && ele.getAttribute("filetype"))
419						{
420							if(!CHandler.chkFileType(ele))
421							{
422								return false;
423								break;
424							}
425						}
426					break;
427					case "emoji" : 
428						if(CHandler.chkEmoji(ele_val))
429						{
430							alert("이모지(emoji)는 사용하실수 없습니다.");
431							ele.value = "";
432							ele.focus();
433							return false;
434							break;
435						}
436					break;
437				}
438			}
439
440			if(chkval != null && ele_val.length > 0)
441			{
442				switch(chkval)
443				{
444					case "id" : 
445						if(!CHandler.chkUserID(ele_val))
446						{
447							alert("아이디형식이 맞지 않습니다.");
448							ele.value = "";
449							ele.focus();
450							return false;
451							break;
452						}
453					break;
454					case "email" : 
455						if(!CHandler.chkEmail(ele_val))
456						{
457							alert("메일형식이 맞지 않습니다.");
458							ele.value = "";
459							ele.focus();
460							return false;
461							break;
462						}
463					break;
464					case "password" : 
465						var result = CHandler.chkPassword(ele_val);
466						if(result != "000")
467						{
468							if(result == "111")
469								alert("비밀번호는 영문,숫자를 포함한 6~12자리를 사용해야 합니다.");
470							else if(result == "222")
471								alert("비밀번호는 숫자와 영문자를 혼용하셔야 합니다.");
472							else if(result == "333")
473								alert("비밀번호에 같은 문자를 4번이상 사용하실수 없습니다.");
474
475							ele.value = "";
476							ele.focus();
477							return false;
478							break;
479						}
480					break;
481					case "pass_confirm" : 
482						if(form.pass.value != ele_val)
483						{
484							alert("비밀번호가 일치하지 않습니다.");
485							ele.value = "";
486							ele.focus();
487							return false;
488							break;
489						}
490					break;
491					case "alphabet" : 
492						if(!CHandler.chkAlphabet(ele_val))
493						{
494							alert("알파벳으로만 입력해 주세요.");
495							ele.value = "";
496							ele.focus();
497							return false;
498							break;
499						}
500					break;
501					case "number" : 
502						if(!NumberHandler.chkNumber(ele_val))
503						{
504							alert("숫자로만 입력해 주세요.");
505							ele.value = "";
506							ele.focus();
507							return false;
508							break;
509						}
510					break;
511					case "hangul" : 
512						if(!CHandler.chkHangul(ele_val))
513						{
514							alert("한글만 입력 가능합니다.");
515							ele.value = "";
516							ele.focus();
517							return false;
518							break;
519						}
520					break;
521					case "nick" : 
522						if(!CHandler.chkNickName(ele_val))
523						{
524							alert("닉네임 형식이 맞지 않습니다.");
525							ele.value = "";
526							ele.focus();
527							return false;
528							break;
529						}
530					break;
531					case "phone" : 
532						if(!CHandler.chkPhone(ele_val))
533						{
534							alert("연락처 형식이 맞지 않습니다.");
535							ele.value = "";
536							ele.focus();
537							return false;
538							break;
539						}
540					break;
541					case "emoji" : 
542						if(CHandler.chkEmoji(ele_val))
543						{
544							alert("이모티콘 및 이모지(emoji)는 사용하실수 없습니다.");
545							ele.value = "";
546							ele.focus();
547							return false;
548							break;
549						}
550					break;
551				}
552			}
553		}
554		
555		if(typeof(myeditor) == "object") myeditor.outputBodyHTML();
556		if(typeof(myeditor1) == "object") myeditor1.outputBodyHTML();
557		if(typeof(myeditor2) == "object") myeditor2.outputBodyHTML();
558		if(typeof(myeditor3) == "object") myeditor3.outputBodyHTML();
559		if(typeof(myeditor4) == "object") myeditor4.outputBodyHTML();
560		if(typeof(myeditor5) == "object") myeditor5.outputBodyHTML();
561		if(typeof(myeditor6) == "object") myeditor6.outputBodyHTML();
562		if(typeof(myeditor7) == "object") myeditor7.outputBodyHTML();
563		return true;
564	}
565};
566
567/**
568* 팝업함수 선언
569*/
570var Popup = {
571	open : function(url, name, opt)
572	{
573		var win = window.open(url, name, opt);
574		win.focus();
575	},
576	open2 : function(url, name, w, h, scroll)
577	{
578		var win = window.open(url, name, "width="+w+",height="+h+",scrollbars="+scroll);
579	},
580	// full window popup //
581	open_f : function(url, name) 
582	{
583		var w = screen.availWidth;
584		var h = screen.availHeight;
585
586		var win = window.open(url, name, "width="+w+", height="+h+", left=0, top=0, toolbar=no, nenubar=no, scrollbars=yes, resizable=no");
587	}
588};
589
590/**
591* 공통함수 선언
592*/
593var Common = {
594	// toggle : block, none //
595	setToggle : function(id, mode) 
596	{
597		if(mode)
598			$("#"+id).css("display", mode);
599		else
600			$("#"+id).css("display",(($("#"+id).css("display") != "none") ? "none" : "block"));
601	},
602	// object disabled //
603	setDisabled : function($obj, bool) 
604	{
605		if(bool)
606		{
607			if($obj.attr("type") == "checkbox")
608				$obj.prop("checked", false);
609
610			$obj.attr("disabled", true);
611			if($obj.attr("type") != "button")
612				$obj.css("backgroundColor", "#f1f1f1");
613		}
614		else
615		{
616			$obj.attr("disabled", false);
617			if($obj.attr("type") != "button")
618				$obj.css("backgroundColor", "#ffffff");
619		}
620	}, 
621	/**
622	* hidden add
623	* @params : obj : form, name : hidden input 명, val : 값
624	*/
625	addHidden : function(obj, name, val)
626	{
627		var input = document.createElement("input");
628		input.type = "hidden";
629		input.name = name;
630		input.value = val;
631
632		obj.appendChild(input);
633	}, 
634	/**
635	* select option all remove
636	* @params : object
637	*/
638	removeAllselectbox : function(obj)
639	{
640		for(var i=obj.length-1; i >= 0; i--)
641			Common.removeSelectList(obj, i);
642	}, 
643	/**
644	* select option one remove
645	*/
646	removeSelectList : function(obj, i)
647	{
648		obj.remove(i);
649	},
650	/**
651	* set cookie 
652	* @params : cname(쿠키명), cvalue(값), expiredays(기간)
653	*/
654	_setCookie : function(cname, cvalue, expiredays)
655	{
656		var cdate = new Date();
657		cdate.setDate(cdate.getDate() + Number(expiredays));
658		document.cookie = cname + "=" + escape(cvalue) + "; path=/; expires=" + cdate.toGMTString() + ";"
659	}, 
660	/**
661	* get cookie
662	* @params : cname -> 쿠키명 
663	*/
664	_getCookie : function(cname)
665	{
666		var nameOfCookie = name + "=";
667		var x = 0;
668		while(x <= document.cookie.length)
669		{
670			var y = (x + nameOfCookie.length);
671			if(document.cookie.substring(x,y) == nameOfCookie)
672			{
673				if((endOfCookie = document.cookie.indexOf(";", y)) == -1)
674					endOfCookie = document.cookie.length;
675
676				return unescape(document.cookie.substring(y, endOfCookie));
677			}
678			x = document.cookie.indexOf(" ", x) + 1;
679			if(x == 0) break;
680		}
681		return "";
682	}, 
683	_chgToggle : function(id, mode)
684	{
685		if(mode)
686			$("#"+id).css("display", $mode);
687		else
688			$("#"+id).css("display", (($("#"+id).css("display") != "none") ? "none" : "block"));
689	},
690	_all_checked : function(el, bool)
691	{
692		$(":checkbox[name='"+el+"']:enabled").prop("checked", bool);
693	}, 
694	_checked_all : function(obj, el) {
695		if(obj.checked == true)
696			$(":checkbox[name='"+el+"']:enabled").prop("checked", true);
697		else
698			$(":checkbox[name='"+el+"']:enabled").prop("checked", false);
699	}, 
700	is_checked : function(el, msg)
701	{
702		if(!el) return;
703
704		if($(":checkbox[name='"+el+"']:checked").size() > 0)
705			return true;
706		else
707		{
708			msg = (msg) ? msg : "선택된 항목이 없습니다.";
709			alert(msg);
710			$(":checkbox[name='"+el+"']").eq(0).focus();
711			return false;
712		}
713	},
714	set_date : function(s, e)
715	{
716		$(":text[name='sday']").val(s);
717		$(":text[name='eday']").val(e);
718	}, 
719	win_resize : function(w, h)
720	{
721		var clintAgent = navigator.userAgent;
722
723		if(h == "") h = $("div#pwrap").prop("offsetHeight");
724		if(clintAgent.indexOf("MSIE") != -1)
725			window.resizeBy(w - $("body").prop("clientWidth"), h - $("body").prop("clientHeight"));
726		else
727			window.resizeBy(w - window.innerWidth, h - $("body").prop("clientHeight"));
728	},
729	_add_bookmark : function(url, tit)
730	{
731		var browser = navigator.userAgent.toLowerCase();
732		if(window.sidebar)
733			window.sidebar.addPanel(tit, url, "");
734		else if(window.external)
735		{
736			//IE
737			if(browser.indexOf("chrome") == -1)
738				window.external.AddFavorite(url, tit);
739			else
740				alert("CTRL + D 또는 Command + D를 눌러 즐겨찾기에 추가해주세요.");
741		}
742		else if(window.opera && window.print)
743			return true;
744		else if(browser.indexOf("konqueror") != -1)
745			alert("CTRL + B를 눌러 즐겨찾기에 추가해주세요.");
746		else if(browser.indexOf("webkit") != -1)
747			alert("CTRL + B 또는 Command + B를 눌러 즐겨찾기에 추가해주세요.");
748		else
749			alert("사용하고 계시는 브라우저에서는 이 버튼으로 즐겨찾기를 추가 할수 없습니다.");
750	}
751};

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.