/**
 * 클래스명 : MyLib()
 * 기    능 : 전반적으로 사용되는 함수/메서드
 * 작 성 일 : 2007.05.08, 이지미디어, 정원광
 *
 */
MyLib = function () {
	this.TopDir = "";
	this.IsChecked = false;
	this.PrintPop;

	// 이동
	this.UrlLink = function (url, msg) {
		if (typeof msg != "undefined") {
			if (confirm(msg) == true) {
				location.href = url;
			} else {
				return;
			}
		} else {
			location.href = url;
		}
	}

	// 체크박스 모두선택
	this.All = function (frm) {
		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;
		}
	}

	// 새창띄우기
	this.WinOpen = 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);
	}


	// 새창띄우기(위치조절)
	this.WinOpenMove = function (url, wname, width, height, winl, wint, scrl) {
		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);
	}

	// 포커스 이동
	this.MoveFocus = function (num, fromform, toform) {
		var str = fromform.value.length;

		if (str == num) {
			toform.focus();
		}
	}

	// 이메일 체크
	this.Email = function (val) {
		var pattern = /^[_a-zA-Z0-9-\.\_]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
		return (pattern.test(val)) ? true : false;
	}

	// 금액에 콤마찍기
	this.Number = function (n) {
		var num = n.replace(/,/gi, "");
		var sgn = parseInt(num) < 0 ? "-" : "";
		var len = num.length;
		var pos = 3;
		var tmp = "";

		if (isNaN(num)) {
			window.alert("죄송합니다. 문자입력이 불가능합니다.");
			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);
	}

	// 문자열 길이
	this.Length = 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;
	}

	// 공백입력 불가
	this.PressBlank = function () {
		if (event.keyCode == 32) {
			event.returnValue = false;
		}
	}

	// 숫자만 입력
	this.PressNumber = function () {
		if (event.keyCode < 48 || event.keyCode > 57) {
			event.returnValue = false;
		}
	}

	// 숫자만 입력 콤마찍기
	this.NumChk = function (num) {
		num = new String(num);
		num = num.replace(/,/gi, "");
		return this.NumCheck(num);
	}

	this.NumCheck = function (num) {
		var sign = "";

		if (isNaN(num)) {
			alert("숫자만 입력할 수 있습니다.");
			return 0;
		}

		if (num == 0) {
			return num;
		}

		if (num < 0) {
			num = num * (-1);
			sign = "-";
		} else{
			num = num * 1;
		}

		num = new String(num);

		var temp = "";
		var pos = 3;
		var num_len = num.length;

		while (num_len > 0) {
			num_len = num_len - pos;
			if (num_len < 0) {
				pos = num_len + pos;
				num_len = 0;
			}
			temp = "," + num.substr(num_len, pos) + temp;
		}
		return sign + temp.substr(1);
	}

	// 숫자만 입력 콤마 없음
	this.NumberChk = function (num) {
		num = new String(num);
		num = num.replace(/,/gi, "");
		return this.NumberCheck(num);
	}
	this.NumberCheck = function (num) {
		var sign = "";

		if (isNaN(num)) {
			alert("숫자만 입력할 수 있습니다.");
			return 1;
		}

		if (num == 0) {
			return "";
		}

		if (num < 0) {
			num = num * (-1);
			sign = "-";
		} else{
			num = num * 1;
		}

		return num;
	}

	// 대문자 -> 소문자
	this.ToLower = function (str) {
		return str.toLowerCase();
	}

	// 소문자 -> 대문자
	this.ToUpper = function (str) {
		return str.toUpperCase();
	}

	// 배열안에 값이 있는지 체크
	this.InArray = function (val, arr) {
		for (var i = 0; i < arr.length; i++) {
			if (arr[i] == val) {
				return true;
			}
		}

		return false;
	}

	// 라디오버튼 체크여부
	this.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;
					}
				}

			// 해당 위치에 포커스
			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;
					}
				}

			// 체크여부
			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;
		}
	}

	// 소숫점 자릿수 맞추기
	this.Round = function (num, pos) {
		var posV = Math.pow(10, (pos ? pos : 2));

		return Math.round(num * posV) / posV;
	}

	// 문자열 반복체크
	this.Repetition = function (str, lmt) {
		if (str.length < 1) {
			return;
		}

		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;
	}

	// 쿠키값 제어
	this.Cookies = function (name, value, expire) {
		if (typeof value != "undefined" && typeof expire != "undefined") {
			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 "";
		}
	}

	// 날짜목록 (년)
	this.YearList = function (y) {
		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 = day.getFullYear() + 1; i >= 2008; i--) {
			document.write("<option value='" + i + "'" + (i == yy ? " selected" : "") + "> " + i + " 년 </option>");
		}
	}

	// 날짜목록 (년)
	// 전화상담예약만을 위해 구성. 
	this.YearCallList = function (y) {
		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 = day.getFullYear(); i >= day.getFullYear(); i--) {
			document.write("<option value='" + i + "'" + (i == yy ? " selected" : "") + "> " + i + " 년 </option>");
		}
	}

	// 날짜목록 (년)
	this.YearListBirth = function (y) {
		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 = day.getFullYear() + 1; i >= 1910; i--) {
			document.write("<option value='" + i + "'" + (i == yy ? " selected" : "") + "> " + i + " 년 </option>");
		}
	}

	// 날짜목록 (월)
	this.MonthList = 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>");
		}
	}

	// 날짜목록 (일)
	this.DayList = 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>");
		}
	}



	// 날짜목록 (일)
	//2009년 2월 6일 금요일 전화 상담예약 예약 시간 날짜 3일치만 보이게 변경.
	this.DayList1 = 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>");
//		}
		for (var i = dd-1; i <= dd + 1; i++) {
			var n = (i < 10 ? "0" : "") + i;

			document.write("<option value='" + n + "'" + (i == dd ? " selected" : "") + "> " + n + " 일 </option>");
		}
	}

	// 날짜목록 (시)
	this.HourList = 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>");
		}
	}

	// 날짜목록 (분)
	this.MinuteList = 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>");
		}
	}

	// 윤년 구하기
	this.LeapYear = function (y) {
		if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 4000 != 0)) {
			return true;
		} else {
			return false;
		}
	}

	// 해당 월의 마지막 날짜
	this.EndDate = function (y, m) {
		var edate = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

		if (m == 2) {
			if (this.LeapYear(y) == true) {
				return 29;
			} else {
				return 28;
			}
		} else {
			return edate[m];
		}
	}

	// 목록 바꾸기
	this.ChgDate = 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 mm = (m.substr(0, 1) == "0") ? parseInt(m.substr(1, m.length)) : parseInt(m);
			var ed = this.EndDate(y, mm);

			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);
			}
		}
	}

	// 좌/우 공백제거
	this.Trim = function (str) {
		return str.replace(/(^\s*)|(\s*$)/gi, "");
	}

	// 레이어 메시지
	this.ShowMessage = function (obj, value, message, type) {
		$(obj).style.posTop = event.clientY + document.body.scrollTop;

		if (/^[0-9]+$/.test(type)) {
			$(obj).style.posLeft = type;
		} else if (type == "left") {
			$(obj).style.posLeft = event.clientX - parseInt($(obj).style.width.replace(/PX/, ""));
		} else if (type == "center") {
			$(obj).style.posLeft = event.clientX - parseInt($(obj).style.width.replace(/PX/, "")) / 2;
		} else {
			$(obj).style.posLeft = event.clientX;
		}

		$(obj).innerHTML = message;

		if (value) {
			$(obj).style.display = "";
		} else {
			$(obj).style.display = "none";
		}
	}

	// 이미지 확대
	this.ImgView = function (src, w, h) {
		if (screen.width > w) {
			var width = w + 16;
		} else {
			var width = screen.width;
		}

		if (screen.height > h) {
			var height = h;
		} else {
			var height = screen.height - 100;
		}

		var mm = window.open("", "IMGVIEW", "width=" + width + ", height=" + height + ", scrollbars=yes, top=0, left=0");

		var doc = "<html>\n"
				+ "	<head>\n"
				+ "		<title>이미지 확대</title>\n"
				+ "		<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\" />\n"
				+ "	</head>\n"
				+ "	<body style=\"margin:0; cursor:pointer;\" onclick=\"self.close();\">\n"
				+ "		<img src=\"" + src + "\">\n"
				+ "	</body>\n"
				+ "</html>";

		mm.document.write(doc);
	}

	// 이미지 확대
	this.PopPrint = function (html, w, h) {
		if (screen.width > w) {
			var width = w + 16;
		} else {
			var width = screen.width;
		}

		if (screen.height > h) {
			var height = h;
		} else {
			var height = screen.height - 100;
		}

		this.PrintPop = window.open("", "PRINT", "width=" + width + ", height=" + height + ", scrollbars=yes, top=0, left=0");

		var doc = "<html>\n"
				+ "	<head>\n"
				+ "		<title>map</title>\n"
				+ "		<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"
				+ "	</head>\n"
				+ "	<body style=\"margin:0; cursor:pointer;\">\n"
				+ html
				+ "	</body>\n"
				+ "</html>";

		this.PrintPop.document.write(doc);
		this.PrintPop.history.go(0);
		this.PrintPop.print();
		setTimeout("MyLib.PrintPop.close()", 2000);
	}



	// 동영상 출력
	this.MovieView = function (src, w, h) {
		if (screen.width > w) {
			var width = w;
		} else {
			var width = screen.width;
		}

		if (screen.height > h) {
			var height = h;
		} else {
			var height = screen.height - 100;
		}

		var mm = window.open("", "MOVIEVIEW", "width=" + width + ", height=" + height + ", scrollbars=no, top=0, left=0");

		var doc = "<html>\n"
				+ "	<head>\n"
				+ "		<title>동영상</title>\n"
				+ "		<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"
				+ "	</head>\n"
				+ "	<body style=\"margin:0px; cursor:pointer;\">\n"
				+ "		<object id=\"MEDIA\" width=\"" + w + "\" height=\"" + h + "\" classid=\"CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95\" codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701\">"
				+ "			<param name=\"AnimationAtStart\" value=\"false\">"
				+ "			<param name=\"EnableContextMenu\" value=\"false\">"
				+ "			<param name=\"Filename\" value=\"" + src + "\">"
				+ "			<param name=\"AutoStart\" value=\"false\">"
				+ "			<param name=\"ShowDisplay\" value=\"false\">"
				+ "			<param name=\"ShowControls\" value=\"true\">"
				+ "			<param name=\"ShowPositionControls\" value=\"true\">"
				+ "			<param name=\"ShowStatusBar\" value=\"true\">"
				+ "			param name=\"ShowTracker\" value=\"true\">"
				+ "			<param name=\"SendPlayStateChangeEvents\" value=\"true\">"
				+ "			<param name=\"Volume\" value=\"0\">"
				+ "		</object>"
				+ "	</body>\n"
				+ "</html>";

		mm.document.write(doc);
	}

	// 체크박스 값 넘기기
	this.GetCheckbox = function (frm, mod, message) {
		var tmp = "";
		var idk = false;

		for (var i = 0; i < frm.length; i++) {
			if (frm[i].type != "checkbox") {
				continue;
			}

			if (frm[i].checked) {
				tmp += frm[i].value + " ";
				idk = true;
			}
		}

		if (idk == true) {
			if (mod.substr(0, 3) == "DEL") {
				var cfm = confirm("선택하신 필드를 삭제하시겠습니까?");
			} else {
				if (typeof message != "undefined") {
					var cfm = confirm("선택하신 필드의 상태를 '" + message + "'(으)로 변경하시겠습니까?");
				} else {
					var cfm = confirm("선택하신 필드의 상태를 변경하시겠습니까?");
				}
			}

			if (cfm) {
				frm.n.value = tmp.substr(0, tmp.length - 1);
				frm.m.value = mod;
				frm.submit();
			} else {
				return;
			}
		} else {
			window.alert("실행할 내용을 선택하세요.");
			return;
		}
	}

	// 문자열 길이 체크 후 알럿
	this.PressLength = function (messageContent,maxLengthNum) {
		var msgtext, msglen,maxLengthNum

		msgtext = document.getElementById(messageContent).value ;

		var i=0,l=0;
		var temp,lastl,maxLengthNumPrint;
		maxLengthNumPrint = maxLengthNum / 2


		//길이를 구한다.
		while(i < msgtext.length)
		{
			temp = msgtext.charAt(i);

			if (escape(temp).length > 4) {
				l+=2;
			} else if (temp!='\r') {
				l++;
			}

			if(l > maxLengthNum) {
				alert("메시지란에 허용 길이 이상의 글을 쓰셨습니다.\n메시지란에는 한글"+maxLengthNumPrint+"자, 영문"+maxLengthNum+"자까지만 쓰실 수 있습니다.");
				temp = document.getElementById(messageContent).value.substr(0,i);
				document.getElementById(messageContent).value = temp ;

				l = lastl;
				break;
			}

			lastl = l;
			i++;
		}
	}

	// AJAX 실행 POST
	this.AJAXPost = function (url, Param, kind) {
		var _Rtn = "";

		// json 개체를 쿼리스트링 형식으로 변경합니다.
		Param		= $H(Param).toQueryString();

		new Ajax.Request(
							url,
							{
								method		: "post",
								asynchronous: false,
								parameters	: Param,
								encoding	: "UTF-8",
								onComplete	: function(OriRuquest) { _Rtn = ((kind == "XML") ? OriRuquest.responseXML : OriRuquest.responseText); }
							}
						);

		return _Rtn;

	}

	// AJAX 실행 GET
	this.AJAXGet = function (url, Param, kind) {
		var _Rtn = "";

		new Ajax.Request(
							url,
							{
								method		: "get",
								asynchronous: false,
								parameters	: Param,
								encoding	: "UTF-8",
								onComplete	: function(OriRuquest) { _Rtn = ((kind == "XML") ? OriRuquest.responseXML : OriRuquest.responseText); }
							}
						);

		return _Rtn;
	}

		/*
		 *	Title : JSON 으로 GET SET
		 * @author gggl.ko
		 * Description : prototype 의 AJAX 를 JSON 을 사용하여 운용한다.
		 */
		function AJAXJSON(Url,setJSON, Method) {

				if (!Method) {
					Method = "post";
				}

				// json 개체를 쿼리스트링 형식으로 변경합니다.
				if (Method == "post") {
						this.AJAXPost = AJAXExec(Url, $H(setJSON).toQueryString(), "");
				} else {
						this.AJAXGet = AJAXExec(Url, $H(setJSON).toQueryString(), "");
				}

				try {
						return eval("("+rtn+")");
				} catch (e) {
						//alert(e.message);
						return rtn;
				}
		}

	/*
	 * @Description : 이미지 사이즈 싱크
	 * @Author : 2008-11-28 / gggl.ko
	 * @Param : 해당 이미지 객체, 원하는 최대 넓이, 원하는 최대 높이
	 */
	this.SizeSync = function (obj,w,h) {

		var wUpdate = false;
		if (w > 0) {
			var oriW = obj.width;
			obj.style.width = w;

			if (oriW < w) {
				obj.style.width = oriW;
			} else {
				if (obj.style.width == null) obj.style.width = w;
				wUpdate = true;
			}
		}

		// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		if (h > 0) {
				if (obj.height > h) {
						// 이미 가로를 변경한 상황이라면 가로 null 처리
						if (wUpdate == true) obj.style.width = null;
						obj.height=h;
						// obj.style.height=h;
				}
		}
	}


}

var MyLib = new MyLib();