var Common = {
	isChecked : false,

	// 객체 가져오기
	object : function (id) {
		if (document.getElementById && document.getElementById(id)) {
			return document.getElementById(id);
		} else if (document.getElementByName && document.getElementByName(id)) {
			return document.getElementByName(id);
		} else if (document.all && document.all(id)) {
			return document.all(id);
		} else if (document.layers && document.layers[id]) {
			return document.layers[id];
		} else {
			return false;
		}
	},

	// 체크박스 모두 선택하기
	selAll : function (frm, isObj) {
		if (isObj == true) {
			if (this.isChecked == false) {
				for (var i = 0; i <= frm; i++) {
					if (this.object("_a_" + i + "_").checked == true) {
						continue;
					} else {
						this.object("_a_" + i + "_").checked = true;
					}
				}

				this.isChecked = true;
			} else {
				for (var i = 0; i <= frm; i++) {
					if (this.object("_a_" + i + "_").checked == true) {
						this.object("_a_" + i + "_").checked = false;
					} else {
						continue;
					}
				}

				this.isChecked = false;
			}
			return false;
		} else {
			if (this.isChecked == false) {
				for (i = 0; i < frm.length; i++) {
					if (frm[i].type == "checkbox") {
						if (frm[i].checked == true) {
							continue;
						} else {
							frm[i].checked = true;
						}
					}
				}

				this.isChecked = true;
			} else {
				for (i = 0; i < frm.length; i++) {
					if (frm[i].type == "checkbox") {
						if (frm[i].checked == true) {
							frm[i].checked = false;
						} else {
							continue;
						}
					}
				}

				this.isChecked = false;
			}
		}
	},

	// 새창띄우기
	openWin : function (url, wname, width, height, scrl) {
		var winl = (screen.width - width) / 2;
		var wint = (screen.height - height) / 2;

		if (typeof scrl == "undefined") {
			var scroll = "no";
		} else {
			var scroll = scrl;
		}

		return window.open(url, wname, "left=" + winl + ", top=" + wint + ", scrollbars=" + scroll + ", status=yes, resizable=no, width=" + width + ", height=" + height);
	},

	// 포커스 이동
	moveFocus : function (num, fromform, toform) {
		var str = fromform.value.length;

		if (str == num) {
			toform.focus();
		}
	},

	// 이메일 체크
	isAvailableEmail : function (v) {
		var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

		if (v.search(format) == -1) {
			return false;
		} else if (v.charAt(v.indexOf('@') + 1) == '.') {
			return false;
		} else {
			return true;
		}
	},

	// 금액에 콤마찍기
	formatNumber : function (n) {
		var num = new String(n).replace(/\-/gi, "").replace(/,/gi, "").replace(/\./gi, "");
		var sgn = parseInt(num) < 0 || new String(n).substr(0, 1) == "-" ? "-" : "";
		var len = num.length;
		var pos = 3;
		var tmp = "";

		if (isNaN(num)) {
			window.alert("Only number it will be able to input.");
			return 0;
		} else if (parseInt(num) == 0) {
			return num;
		}

		while (len > 0) {
			len -= pos;

			if (len < 0) {
				pos = len + pos;
				len = 0;
			}

			tmp = "," + num.substr(len, pos) + tmp;
		}

		return sgn + tmp.substr(1);
	},

	// 문자열 길이
	strLen : function (str) {
		var len = 0;
		var tmp = null;
		var i = 0;

		while (i < str.length) {
			tmp = str.charAt(i);

			if (escape(tmp).length > 4) {
				len += 2;
			} else if (tmp != "\r") {
				len++;
			}

			i++;
		}

		return len;
	},

	// 문자열 자르기
	strCut : function (str, len, tail) {
		if (len == 0 || this.strLen(str) <= len) {
			return str;
		}

		var t = null;
		var i = 0;
		var l = 0;
		var returnValue = "";

		while (i < str.length) {
			t = str.charAt(i);

			if (escape(t).length > 4) {
				l += 2;
			} else if (t != "\r") {
				l += 1;
			}

			returnValue += t;

			if (l >= len) {
				break;
			}

			i++;
		}

		return returnValue + (typeof tail == "undefined" ? "..." : tail);
	},

	// 대문자 -> 소문자
	strToLower : function (str) {
		return str.toLowerCase();
	},

	// 소문자 -> 대문자
	strToUpper : function (str) {
		return str.toUpperCase();
	},

	// 배열안에 값이 있는지 체크
	inArray : function (val, arr) {
		for (var i = 0; i < arr.length; i++) {
			if (arr[i] == val) {
				return true;
			}
		}

		return false;
	},

	// 라디오버튼 체크 여부
	radio : function (frm, act, val) {
		switch (act) {
			// 체크값 구하기
			case 1 :
				if (frm.length > 0) {
					for (var i = 0; i < frm.length; i++) {
						if (frm[i].checked == true) {
							return frm[i].value;
						}
					}
				} else {
					if (frm.checked == true) {
						return frm.value;
					}
				}

				break;

			// 해당 위치에 포커스
			case 2 :
				if (frm.length > 0) {
					for (var i = 0; i < frm.length; i++) {
						if (frm[i].value == val) {
							frm[i].checked = true;
							break;
						}
					}
				} else {
					if (frm.value == val) {
						frm.checked = true;
					}
				}

				break;

			// 체크된 박스의 순번
			case 3 :
				if (frm.length > 0) {
					for (var i = 0; i < frm.length; i++) {
						if (frm[i].value == val) {
							return i;
						}
					}
				} else {
					return 0;
				}

				break;

			// 체크여부
			default :
				if (frm.length > 0) {
					for (var i = 0; i < frm.length; i++) {
						if (frm[i].checked == true) {
							return true;
						}
					}
				} else {
					if (frm.checked == true) {
						return true;
					}
				}
		}

		return false;
	},

	// 소숫점 자릿수 맞추기
	round : function (num, pos) {
		var posV = Math.pow(10, (pos ? pos : 2));

		return Math.round(num * posV) / posV;
	},

	// 문자열 반복체크
	isRepetition : function (str, lmt) {
		if (str.length < 1) {
			return false;
		}

		for (var i = 0; i < str.length; i++) {
			var rpt = str.substr(i, 1);
			var key = "";

			for (var j = 0; j < lmt; j++) {
				key += rpt;
			}

			var chk = str.indexOf(key);

			if (chk < 0) {
				continue;
			} else {
				return true;
				break;
			}
		}

		return false;
	},

	// 쿠키값 제어
	cookie : function (name, value, expire) {
		if (value && expire) {
			var day = new Date();
			day.setDate(day.getDate() + expire);
			document.cookie = name + "=" + escape(value) + "; path=/; expires=" + day.toGMTString() + ";";
		} else {
			var org = document.cookie;
			var dlm = name + "=";
			var x = 0;
			var y = 0;
			var z = 0;

			while (x <= org.length) {
				y = x + dlm.length;

				if (org.substring(x, y) == dlm) {
					if ((z = org.indexOf(";", y)) == -1) {
						z = org.length;
					}

					return org.substring(y, z);
				}

				x = org.indexOf(" ", x) + 1;

				if (x == 0) {
					break;
				}
			}

			return "";
		}
	},

	// 날짜목록 (년)
	yyList : function (y, s, e) {
		day = new Date();

		if (typeof y == "undefined") {
			var yy = day.getFullYear();
		} else if (y == "") {
			var yy = 0;
		} else {
			var yy = parseInt(y);
		}

		for (var i = (e ? e : day.getFullYear() + 1); i >= (s ? s : 2009); i--) {
			document.write("<option value='" + i + "'" + (i == yy ? " selected" : "") + ">" + i + "</option>");
		}
	},

	// 날짜목록 (월)
	mmList : function (m) {
		day = new Date();

		if (typeof m == "undefined") {
			var mm = day.getMonth() + 1;
		} else if (m == "") {
			var mm = 0;
		} else {
			var mm = (m.substr(0, 1) == "0") ? parseInt(m.substr(1, m.length)) : parseInt(m);
		}

		for (var i = 1; i <= 12; i++) {
			var n = (i < 10 ? "0" : "") + i;

			document.write("<option value='" + n + "'" + (i == mm ? " selected" : "") + ">" + n + "</option>");
		}
	},

	// 날짜목록 (일)
	ddList : function (y, m, d) {
		day = new Date();

		if (typeof y == "undefined") {
			var yy = day.getFullYear();
		} else if (y == "") {
			var yy = 0;
		} else {
			var yy = parseInt(y);
		}

		if (typeof m == "undefined") {
			var mm = day.getMonth() + 1;
		} else if (m == "") {
			var mm = 0;
		} else {
			var mm = (m.substr(0, 1) == "0") ? parseInt(m.substr(1, m.length)) : parseInt(m);
		}

		if (typeof d == "undefined") {
			var dd = day.getDate();
		} else if (d == "") {
			var dd = 0;
		} else {
			var dd = (d.substr(0, 1) == "0") ? parseInt(d.substr(1, d.length)) : parseInt(d);
		}

		for (var i = 1; i <= this.endDate(yy, mm); i++) {
			var n = (i < 10 ? "0" : "") + i;

			document.write("<option value='" + n + "'" + (i == dd ? " selected" : "") + ">" + n + "</option>");
		}
	},

	// 날짜목록 (시)
	hhList : function (h) {
		for (var i = 0; i <= 23; i++) {
			var n = (i < 10 ? "0" : "") + i;

			document.write("<option value='" + n + "'" + (n == h ? " selected" : "") + ">" + n + "</option>");
		}
	},

	// 날짜목록 (분)
	iiList : function (m) {
		for (var i = 0; i <= 59; i++) {
			var n = (i < 10 ? "0" : "") + i;

			document.write("<option value='" + n + "'" + (n == m ? " selected" : "") + ">" + n + "</option>");
		}
	},

	// 윤년 여부
	isLeapYear : function (y) {
		if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 4000 != 0)) {
			return true;
		} else {
			return false;
		}
	},

	// 해당 월의 마지막 날짜
	endDate : function (y, m) {
		var edate = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

		if (m == 2) {
			if (this.isLeapYear(y) == true) {
				return 29;
			} else {
				return 28;
			}
		} else {
			return edate[m];
		}
	},

	// 목록 바꾸기
	changeDate : function (sel, y, m) {
		if (typeof y == "undefined" && typeof m == "undefined") {
			for (var i = 1; i <= 12; i++) {
				var n = (i < 10 ? "0" : "") + i;

				sel.options[i] = new Option(n, n);
			}
		} else {
			var ed = this.endDate(parseInt(y), (m.substr(0, 1) == "0") ? parseInt(m.substr(1, m.length)) : parseInt(m));

			for (var i = sel.length - 1; i > 0; i--) {
				sel.options[i] = null;
			}

			for (var i = 1; i <= ed; i++) {
				var n = (i < 10 ? "0" : "") + i;

				sel.options[i] = new Option(n, n);
			}
		}
	},

	// 좌/우 공백제거
	trim : function (str) {
		return str.replace(/(^\s*)|(\s*$)/gi, "");
	},

	// 배열 섞기
	shuffle : function (arr) {
		var tmp = [];

		for (var i = 0; i < arr.length; i++) {
			tmp[i] = arr[i];
		}

		tmp.sort ( function() { return Math.random() * 2 - 1; } );

		return tmp;
	},

	// 이미지 보정 사이즈
	imgResize : function (ow, oh, mw, mh) {
		var as = [mw, mh];
		var rw, rh;

		if (mw > 0 && mh > 0) {
			if (ow > mw || oh > mh) {
				rw = ow / mw;
				rh = oh / mh;

				if (rw > rh) {
					as[0] = mw;
					as[1] = Math.ceil(oh * mw / ow);
				} else {
					as[0] = Math.ceil(ow * mh / oh);
					as[1] = mh;
				}
			} else {
				as[0] = ow;
				as[1] = oh;
			}
		} else if (mw > 0) {
			if (ow > mw) {
				as[0] = mw;
				rw = mw / ow;
			} else {
				as[0] = ow;
				rw = 1;
			}

			as[1] = Math.ceil(oh * rw);
		} else if (mh > 0) {
			if (oh > mh) {
				as[1] = mh;
				rh = mh / oh;
			} else {
				as[1] = oh;
				rh = 1;
			}

			as[0] = Math.ceil(ow * rh);
		}

		return as;
	},

	// 기본값 설정
	setDefaultValue : function (value, defaultValue) {
		if (!value) {
			return defaultValue;
		}

		return value;
	},

	// 플래쉬 출력
	setFlash : function (s, w, h, p) {
		var doc = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="' + location.protocol + '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + w + '" height="' + h + '" id="_' + Math.floor(Math.random() * 1000000) + '_">'
				+ '<param name="movie" value="' + s + '" />'
				+ '<param name="allowScriptAccess" value="always" />'
				+ '<param name="allowFullScreen" value="false" />'
				+ '<param name="wmode" value="transparent" />'
				+ '<param name="menu" value="false" />'
				+ '<param name="quality" value="high" />'
				+ '<param name="bgcolor" value="' + (p && p.bgcolor ? p.bgcolor : '#FFFFFF') + '" />'
				+ '<param name="scale" value="noscale" />'
				+ (p && p.name ? '<param name="' + p.name + '" value="' + p.value + '" />' : '')
				+ '<embed src="' + s + '" allowScriptAccess="always" allowFullScreen="false" wmode="transparent" menu="false" quality="high" bgcolor="' + (p && p.bgcolor ? p.bgcolor : '#FFFFFF') + '" width="' + w + '" height="' + h + '" ' + (p ? p.name + '="' + p.value + '"' : '') + ' type="application/x-shockwave-flash" pluginspage="' + location.protocol + '//www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />'
				+ '</object>';

		document.write(doc);
	},

	// 비디오 출력
	setVideo : function (s, w, h) {
		var temp = s.split("?");

		if (temp[0].match(/\.(swf)$/i)) {
			this.setFlash(s, w, h);
			return;
		}

		var doc = '<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"'
				+ ' width="' + w + '" height="' + h + '" VIEWASTEXT'
				+ ' codebase="' + location.protocol + '//activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"'
				+ ' standby="Loading Microsoft Windows Media Player components..."'
				+ ' type="application/x-oleobject">\n'
				+ '<param name="AnimationAtStart" value="0" />\n'
				+ '<param name="BufferingTime" value="5" />\n'
				+ '<param name="EnableContextMenu" value="0" />\n'
				+ '<param name="Filename" value="' + s + '" />\n'
				+ '<param name="ShowDisplay" value="0" />\n'
				+ '<param name="ShowPositionControls" value="1" />\n'
				+ '<param name="ShowStatusBar" value="0" />\n'
				+ '<param name="ShowTracker" value="1" />\n'
				+ '<param name="Volume" value="-300" />\n'
				+ '<embed src="' + s + '" width="' + w + '" height="' + h + '" AnimationAtStart="0" BufferingTime="5" EnableContextMenu="0" ShowDisplay="1" ShowPositionControls="1" ShowStatusBar="1" ShowTracker="1" Volume="-300"></embed>\n'
				+ '</object>';

		document.write(doc);
	},

	// 페이지 사이즈
	getPageSize : function () {
		var x, y, w, h;

		if (window.innerHeight && window.scrollMaxY) {
			x = window.innerWidth + window.scrollMaxX;
			y = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight) {
			x = document.body.scrollWidth;
			y = document.body.scrollHeight;
		} else {
			x = document.body.offsetWidth;
			y = document.body.offsetHeight;
		}

		if (self.innerHeight) {
			if (document.documentElement.clientWidth){
				w = document.documentElement.clientWidth;
			} else {
				w = self.innerWidth;
			}
			h = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		} else if (document.body) {
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}

		return {width : x < w ? x : w, height : y < h ? h : y};
	},

	// 스크롤 사이즈
	getScrollSize : function (obj) {
		var T, L, W, H;

		with (obj.document) {
			if (obj.document.documentElement && obj.document.documentElement.scrollTop) {
				T = obj.document.documentElement.scrollTop;
				L = obj.document.documentElement.scrollLeft;
			} else if (obj.document.body) {
				T = obj.document.body.scrollTop;
				L = obj.document.body.scrollLeft;
			}

			if (obj.innerWidth) {
				W = obj.innerWidth;
				H = obj.innerHeight;
			} else if (obj.document.documentElement && obj.document.documentElement.clientWidth) {
				W = obj.document.documentElement.clientWidth;
				H = obj.document.documentElement.clientHeight;
			} else {
				W = obj.document.body.offsetWidth;
				H = obj.document.body.offsetHeight
			}
		}

		return {top: T, left: L, width: W, height: H};
	}
}
