﻿/**
 * 클래스명 : MyLib()
 * 기    능 : 전반적으로 사용되는 함수/메서드
 * 작 성 일 : 2007.05.08, 이지미디어, 정원광
 *
 */
MyLib = function () {
	this.TopDir = "";
	this.IsChecked = false;

	// 객체 가져오기
	this.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;
		}
	}

	// 체크박스 모두선택
	this.All = 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;
			}
		}
	}

	// 새창띄우기
	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 (input) {
		var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

		if (input.value.search(format) == -1) {
			return true;
		} else if (input.value.charAt(input.value.indexOf('@') + 1) == '.') {
			return true;
		} else {
			return 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.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 >= 2007; 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>");
		}
	}

	// 날짜목록 (시)
	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) {
	    this.Object(obj).style.posTop = event.clientY + document.body.scrollTop;

	    if (/^[0-9]+$/.test(type)) {
		    this.Object(obj).style.posLeft = type;
	    } else if (type == "left") {
		    this.Object(obj).style.posLeft = event.clientX - parseInt(this.Object(obj).style.width.replace(/PX/, ""));
	    } else if (type == "center") {
		    this.Object(obj).style.posLeft = event.clientX - parseInt(this.Object(obj).style.width.replace(/PX/, "")) / 2;
	    } else {
		    this.Object(obj).style.posLeft = event.clientX;
	    }

	    this.Object(obj).innerHTML = message;

	    if (value) {
		    this.Object(obj).style.display = "";
	    } else {
		    this.Object(obj).style.display = "none";
	    }
    }
    
    // 이메일 변경하기
    this.ChangeEmail = function (selectValue, frm) {
    	if (selectValue == '직접입력'){
		    EmailWrite.style.display = '';
		    frm.EmailWrite.value = '';
		    frm.EmailWrite.focus();
	    } else {
		    EmailWrite.style.display = 'none';
		    frm.EmailWrite.value = '';
	    }
    }

    // 은행 선택
    this.BankNameSelect = function (selectValue) {
        var BankNameArr = new Array("국민은행(388901-04-060592)");

        for (var i = 0; i < BankNameArr.length; i++) {
			document.write("<option value='" + BankNameArr[i] + "'" + (BankNameArr[i] == selectValue ? " selected" : "") + ">" + BankNameArr[i] + "</option>");
		}
    }

    // Best
    this.BestView = function (val, Idx) {
        var doc = "";
        
        // 아이디 중복 체크하기
	    xml = new XmlHttp("GET", "./Best.aspx?c=" + val, []);
	    xml.Init();

        // 로그인 여부
        if (xml.Msg) {
            doc = xml.Msg;
        }
        
        // 출력
        BestSpan.innerHTML = doc;

        // 카테고리 강조
        for (var i = 0; i < PICCATE.length; i++) {
            if (i == Idx) {
                PICCATE[i].style.color = "f64500";
            } else {
                PICCATE[i].style.color = "000000";
            }
        }
    }

    // 작품동영상
    this.PicMovie = function (url, wname, width, height, scrl) {
        this.WinOpen(url, wname, width, height, scrl);
    }

    // 작가동영상
    this.AtsMovie = function (url, wname, width, height, scrl) {
        this.WinOpen(url, wname, width, height, scrl);
    }

    // 아트 갤러리
    this.ArtGalleryOpen = function (url, wname, width, height, scrl) {
        this.WinOpen(url, wname, width, height, scrl);
    }

    // 페이지 상단 배너 이미지출력
    this.SiteBannerImgPrint = function (kind) {
		var xml;

		xml = new XmlHttp("GET", MyLib.TopDir + "/Board/Banner.aspx?k=" + kind, []);
		xml.Init();
		
		if (xml.Msg == "") {
   		    return;
		}

        var BannerArr = xml.Msg.split("||");

        /*
        if (kind == "J" || kind == "E") {
    	    for (var i = 0; i < BannerArr.length; i++) {
    	        var BannerInfo = BannerArr[i].split("^");
    			document.write("<a href=\"" + BannerInfo[0] + "\"><img src=\"" + MyLib.TopDir + BannerInfo[1] + "\" width=\"380\" border=\"0\" /></a>");
  			}
        } else {
    	    for (var i = 0; i < BannerArr.length; i++) {
    	        if (i == 0) {
    	            var BannerInfo = BannerArr[i].split("^");
    			    document.write("<a href=\"" + BannerInfo[0] + "\"><img src=\"" + MyLib.TopDir + BannerInfo[1] + "\" width=\"380\" border=\"0\" /></a>");
                }
  			}
        }
        */

		document.write('<div style="background:url(' + MyLib.TopDir + '/images/common/board/board-top-newsbg.gif) no-repeat; width:772px;height:128px;position:relative;margin:0 0 10 0">');

	    for (var i = 0; i < BannerArr.length; i++) {
	        var BannerInfo = BannerArr[i].split("^");
            if (i == 0) {
    			document.write('<a href="' + BannerInfo[0] + '"><img src="' + MyLib.TopDir + BannerInfo[1] + '" style="position:absolute;top:11px;left:11px;" /></a>');
            } else {
			    document.write('<a href="' + BannerInfo[0] + '"><img src="' + MyLib.TopDir + BannerInfo[1] + '" style="position:absolute;top:11px;left:395px;" /></a>');
            }
		}

		document.write('</div>');
    }

    // 아트 갤러리 플래쉬 포커스
    this.FlashWrite = function (url, w, h, id, bg, win){
        
        // 플래시 코드 정의
        var flashStr=
             "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+w+"' height='"+h+"' id='"+id+"' align='middle'>"+
             "<param name='movie' value='"+url+"' />"+
             "<param name='wmode' value='"+win+"' />"+
             "<param name='menu' value='false' />"+
             "<param name='quality' value='high' />"+
             "<param name='bgcolor' value='"+bg+"' />"+
             "<embed src='"+url+"' wmode='"+win+"' menu='false' quality='high' bgcolor='"+bg+"' width='"+w+"' height='"+h+"' name='"+id+"' align='middle' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />"+
             "</object>";

        // 플래시 코드 출력
        FlashImage.innerHTML = flashStr;
    }

    // 플래쉬 출력
    this.FlashWrite2 = function (url, w, h, id, bg, win){

        // 플래시 코드 정의
        var flashStr=
             "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+w+"' height='"+h+"' id='"+id+"' align='middle'>"+
             "<param name='movie' value='"+url+"' />"+
             "<param name='quality' value='high' />"+
             "<param name='allowFullScreen' value='true' />"+
             "<param name='allowScriptAccess' value='always' />"+
             "<embed src='"+url+"' wmode='"+win+"' menu='false' quality='high' bgcolor='"+bg+"' width='"+w+"' height='"+h+"' name='"+id+"' align='middle' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />"+
             "</object>";

        // 플래시 코드 출력
        document.write(flashStr);
    }

    // 플래쉬 출력
    this.FlashWrite3 = function (obj, url, w, h, id, bg, win){

        // 플래시 코드 정의
        var flashStr=
             "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+w+"' height='"+h+"' id='"+id+"' align='middle'>"+
             "<param name='movie' value='"+url+"' />"+
             "<param name='quality' value='high' />"+
             "<param name='allowFullScreen' value='true' />"+
             "<param name='allowScriptAccess' value='always' />"+
             "<embed src='"+url+"' wmode='"+win+"' menu='false' quality='high' bgcolor='"+bg+"' width='"+w+"' height='"+h+"' name='"+id+"' align='middle' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />"+
             "</object>";

        // 플래시 코드 출력
        obj.innerHTML = flashStr;
    }

    // LoginPic
    this.LoginPicView = function () {
        var doc = "";
        
        // 아이디 중복 체크하기
	    xml = new XmlHttp("GET", this.TopDir + "/Member/LoginPic.aspx", []);
	    xml.Init();

        // 로그인 여부
        if (xml.Msg) {
            doc = xml.Msg;
        }
        
        // 출력
        PicSpan.innerHTML = doc;
    }

    // 팝업
    this.PopupOpen = function () {
	    TodayDate = new Date();

	    var NowYear = TodayDate.getFullYear();
	    var NowMonth = TodayDate.getMonth() + 1;
	    var NowDay = TodayDate.getDate();
	    var NowHour = TodayDate.getHours();

	    ChgYear = new String();
	    ChgMonth = new String();
	    ChgDay = new String();
	    ChgHour = new String();

	    ChgYear = NowYear;

	    if (NowMonth < 10) {
		    ChgMonth = "0" + NowMonth;
	    } else {
		    ChgMonth = NowMonth;
	    }

	    if (NowDay < 10) {
		    ChgDay = "0" + NowDay;
	    } else {
		    ChgDay = NowDay;
	    }

	    if (NowHour < 10) {
		    ChgHour = "0" + NowHour;
	    } else {
		    ChgHour = NowHour;
	    }

	    var nowTimeStamp = parseInt(ChgYear + "" + ChgMonth + "" + ChgDay + "" + ChgHour);

	    for (var i = 0; i < PopUps.length; i++) {
		    if (nowTimeStamp >= parseInt(PopUps[i][1]) && nowTimeStamp <= parseInt(PopUps[i][2]) && this.Cookies('Notice_' + PopUps[i][7]) != 'done') {
			    window.open(PopUps[i][8], 'Notice_' + PopUps[i][7], 'left=' + PopUps[i][3] + ', top=' + PopUps[i][4] + ', width=' + PopUps[i][5] + ', height=' + PopUps[i][6]);
		    }
	    }
    }
}

var MyLib = new MyLib();
