FormUtil = function(obj) {
	this.obj = obj;
}

//-----------------------------------------------------------------------------
// 폼 체크 util
//
// @return : true | false
//-----------------------------------------------------------------------------
FormUtil.prototype.success = function() {
	for(var i = 0; i < this.obj.elements.length; i++) {
		var f = this.obj[i];
		var objId = f.id;
		var fname = (f.getAttribute("FNAME") == null) ? f.name.toUpperCase() : fname = f.getAttribute("FNAME");

		// checkbox
		if(f.type == "checkbox") {
			if(!this.checkbox(f, fname)) {
				return false;
			}
		}
		// radio
		else if(f.type == "radio") {
			if(!this.radio(f, fname)) {
				return false;
			}
		}
		else { // text, textarea, password, select
			// <input required>
			if (objId == "zipcode") {
				// 완전 회원 가입시에만 사용함
				if ( ($("hphone_2").value == "" || $("hphone_3").value == "") && ($("phone_2").value == "" || $("phone_3").value == "") ) {
					alert("휴대폰이나 전화번호 중 반드시 하나는 입력해 주세요");
					return false;
				}
			}
			if(f.getAttribute("REQUIRED") != null) {
				var ftype = f.type;
				var msg = " 입력하세요.";
				if(ftype.indexOf("select") >= 0 || ftype == "file") {
					msg = " 선택하세요.";
				}

				if(!f.value.notNull()) {
					if (f.getAttribute("CHECKNO")!=null){
						alert(fname);
					}else{
						alert(fname + fname.josa("을/를") + msg);
						if(f.type!="hidden"){
							f.focus();
						}
					}
					return false;
				}
			}

			if (f.getAttribute("REQUIRCHECKED") != null) {
				if ($(objId).value != f.getAttribute("OV")) {
					alert(fname + fname.josa("을/를") + " 하셔야 합니다.");
					return false;
				}
			}

			// <input num>
			if(f.getAttribute("NUM") != null && f.value != "") {
				if(!f.value.num()) {
					alert(fname + fname.josa("은/는") + " 숫자로만 구성되어야 합니다.");
					f.value = "";
					f.focus();
					return false;
				}	
			}
			// <input eng>
			if(f.getAttribute("ENG") != null && f.value != "") {
				if(!f.value.eng()) {
					alert(fname + fname.josa("은/는") + " 영어로만 구성되어야 합니다.");
					f.value = "";
					f.focus();
					return false;
				}	
			}
			// <input numeng>
			if(f.getAttribute("NUMENG") != null && f.value != "") {
				if(!f.value.numeng()) {
					alert(fname + fname.josa("은/는") + " 영어와 숫자로만 구성되어야 합니다.");
					f.value = "";
					f.focus();
					return false;
				}
			}
			// <input han>
			if(f.getAttribute("HAN") != null && f.value != "") {
				if(!f.value.kor()) {
					alert(fname + fname.josa("은/는") + " 한글로만 구성되어야 합니다.");
					f.value = "";
					f.focus();
					return false;
				}	
			}
			// <input userid>
			if(f.getAttribute("USERID") != null && f.value != "") {
				if(!f.value.userid()) {
					alert(fname + fname.josa("은/는") + " 숫자와 영어로만 구성되어야 하며\n\n첫문자는 반드시 영어로 시작해야 합니다.");
					f.value = "";
					f.focus();
					return false;
				}	
			}
			// <input type="file" deny="value">
			if(f.getAttribute("DENY") != null && f.type == "file" && f.value != "") {
				var ext = f.value.getExt().toLowerCase();
				var ext2 = f.getAttribute("DENY").toLowerCase();
				if(ext2.indexOf(ext) >= 0) {
					alert("확장자가 " + f.getAttribute("DENY").toUpperCase() + " 인 파일은 업로드 하실 수 없습니다.");
					return false;
				}
			}
			// <input type="file" deny="value">
			if(f.getAttribute("ALLOW") != null && f.type == "file" && f.value != "") {
				var ext = f.value.getExt().toLowerCase();
				var ext2 = f.getAttribute("ALLOW").toLowerCase();
				if(ext2.indexOf(ext) < 0) {
					alert("확장자가 " + f.getAttribute("ALLOW").toUpperCase() + " 인 파일만 업로드 가능 합니다.");
					return false;
				}
			}

			// <input max="10">
			if(f.getAttribute("MAX") != null) {
				var tmpLen = f.value.getLength();
				if(tmpLen > parseInt(f.getAttribute("MAX"))) {
					alert(fname + fname.josa("은/는") + " " + f.getAttribute("MAX") + "자 이하로 입력 하세요.");
					f.value = "";
					f.focus();
					return false;
				}
			}

			// <input min="10">
			if(f.getAttribute("MIN") != null) {
				var tmpLen = f.value.getLength();
				if(tmpLen < parseInt(f.getAttribute("MIN"))) {
					alert(fname + fname.josa("은/는") + " " + f.getAttribute("MIN") + "자 이상으로 입력하세요.");
					f.focus();
					return false;
				}
			}
			// <input len="10">
			if(f.getAttribute("LEN") != null) {
				var tmpLen = f.value.getLength();
				var val = f.getAttribute("LEN");
				if(val.indexOf(val.noNum()) > 0) {
					var num1 = val.substring(0, val.indexOf(val.noNum()));
					var num2 = val.substring(val.lastIndexOf(val.noNum()) + 1, val.length);
					if(tmpLen < parseInt(num1) || tmpLen > parseInt(num2)) {
						alert(fname + fname.josa("은/는") + " " + num1 + "자 이상 " + num2 + "자 이하로 입력하세요");
						f.focus();
						return false;
					}
				}
				else {
					if(tmpLen != parseInt(val)) {
						alert(fname + fname.josa("은/는") + " " + val + "자리 입니다.");
						f.focus();
						return false;
					}
				}
			}


			// 암호 체크 때문에 있음
			if (f.type == "password" && f.name == "pass") {

				if( document.getElementsByName("passconfirm")[0].value == "" ){
					alert("비밀번호를 한번 더 입력해 주십시오.");
					f.focus();
					return false;
				}

				if (f.value != document.getElementsByName("passconfirm")[0].value) {
					alert("비밀 번호가 일치하지 않습니다.");
					f.focus();
					return false;
				}
			}


		}
	}

	return true;
}


//-----------------------------------------------------------------------------
// Checkbox 체크박스
//
// @return : true | false
//-----------------------------------------------------------------------------

FormUtil.prototype.checkbox = function(f, fname) {
	var chkObj = eval("this.obj." + f.name);
	var c = 0;
	var len = chkObj.length;
	if(len) {
		for(var j = 0; j < len; j++) {
			if(chkObj[j].checked) c++;
		}
	}
	else {
		if(chkObj.checked) c = 1;
	}
	
	if(f.getAttribute("REQUIRED") != null) {
		if(c == 0) {
			alert(fname + fname.josa("을/를") + " 체크하셔야 합니다.");
			try {
				f.focus();
			}
			catch (e) {
			}
			return false;
		}
	}
	if(f.getAttribute("MAX") != null) {
		var val = f.getAttribute("MAX");
		if(c > parseInt(val)) {
			alert(fname + fname.josa("은/는") + " 최대 " + val + "개 이하로 선택 하셔야 합니다.");
			return false;
		}
	}
	if(f.getAttribute("MIN") != null) {
		var val = f.getAttribute("MIN");
		if(c < parseInt(val)) {
			alert(fname + fname.josa("은/는") + " 최소 " + val + "개 이상 선택 하셔야 합니다.");
			return false;
		}
	}
	if(f.getAttribute("LEN") != null) {
		var val = f.getAttribute("LEN");
		if(val.indexOf(val.noNum()) > 0) {
			var num1 = val.substring(0, val.indexOf(val.noNum()));
			var num2 = val.substring(val.lastIndexOf(val.noNum()) + 1, val.length);
			if(c < parseInt(num1) || c > parseInt(num2)) {
				alert(fname + fname.josa("은/는") + " " + num1 + "개 이상 " + num2 + "개 이하로 선택 하셔야 합니다.");
				return false;
			}
		}
		else {
			if(c != parseInt(val)) {
				alert(fname + fname.josa("은/는") + " " + val + "개 선택 하셔야 합니다.");
				f.focus();
				return false;
			}
		}
	}
	return true;
}

//-----------------------------------------------------------------------------
// Radio 버튼을 눌렀냐 안눌렀냐?
//
// @return : true | false
//-----------------------------------------------------------------------------
FormUtil.prototype.radio = function(f, fname) {
	var chkObj = eval("this.obj." + f.name);
	if(f.getAttribute("REQUIRED") != null) {
		var c = 0;
		var len = chkObj.length;
		if(len) {
			for(var j = 0; j < len; j++) {
				if(chkObj[j].checked) c++;
			}
		}
		else {
			if(chkObj.checked) c = 1;
		}

		if(c == 0) {
			alert(fname + fname.josa("을/를") + " 선택하여 주세요");
			return false;
		}
	}
	return true;
}

//-----------------------------------------------------------------------------
// 체크를 했냐 안했냐
//
// @return : int
//-----------------------------------------------------------------------------
FormUtil.prototype.checked = function(btn) {
	var len = btn.length;
	var c = 0;
	if(len) {
		for(var j = 0; j < len; j++) {
			if(btn[j].checked) c++;
		}
	}
	else {
		if(btn.checked) c = 1;
	}
	return c;
}


String.prototype.josa = function(nm) {
	var nm1 = nm.trim().substring(0, nm.trim().indexOf("/"));
	var nm2 = nm.trim().substring(nm.trim().indexOf("/") + 1, nm.trim().length);
	var a = this.substring(this.length - 1, this.length).charCodeAt();
	a = a - 44032;
	var jongsung = a % 28;
	return (jongsung) ? nm1 : nm2;
}

String.prototype.notNull = function() {
	return (this == null || this.trim() == "") ? false : true; 
}

String.prototype.trim = function(str) {
	str = this != window ? this : str;
	return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

String.prototype.userid = function() {
	return (this.trim().match(/[a-zA-z]{1}[0-9a-zA-Z]+$/)) ? true : false;
}

String.prototype.getLength = function() {
	return this.length;
}

/*******************************************************************/
function isNumber(fm) {
	t = fm.value ;

	for(i=0;i<t.length;i++) {
		if (t.charAt(i)<'0' || t.charAt(i)>'9') {
			alert("숫자로만 입력해 주십시오!!") ;
			fm.value="";
			fm.focus() ;
			return false ;
		}
	}
}

function loginGo(retUrl) {
	if (retUrl) {
		location.href = "/signup/?mode=login&retUrl=" + escape(retUrl);
	} else {
		location.href = "/signup/?mode=login&retUrl=" + escape(location.href);
	}
}

//**********************************************************************************************************//
// 이미지가 없을 경우 빈 이미지로 대체
function imgError(oImg, imgSrc) {
	oImg.style.display = "none";
	if (oImg.src.indexOf("logo_s.gif") > -1 ) {
		imgSrc = oImg.src.replace("logo_s.gif", "logo.gif");
	}
	var EN = oImg.getAttribute("errNo");
	if (EN == null || !EN) {
		oImg.setAttribute("errNo", 0);
	}

	if (!imgSrc) {
		oImg.onerror = function () {};
		return false;
	}

	oImg.src = imgSrc;

	if(oImg.errNo > 1) {
		oImg.onerror = function () {};
		return false;
	}

	oImg.style.display = "inline";
	oImg.errNo++; // = oImg.errNo + 1;
}
//**********************************************************************************************************//

function hideLayer(obj) {
	var docObj = document.getElementById(obj);
	if(docObj.style.display == "" || docObj.style.display == "block") {
		docObj.className = "MsitemapBox close";
		docObj.style.display = "none";
	} else {
		docObj.style.display = "block";
		docObj.className = "MsitemapBox open";
	}
}


function getflash(url, w, h, oid, eid, loop) {
	var objHtml = "";
	objHtml += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="' + w + '" height="' + h + '" id="navi" align="middle">';
	objHtml += '<param name="allowScriptAccess" value="always" />';
	objHtml += '<param name="allowFullScreen" value="false" />';
	objHtml += '<param name="movie" value="' + url + '" />';
	objHtml += '<param name="quality" value="high" />';
	objHtml += '<param name="bgcolor" value="#ffffff" />';
	if (loop != undefined && loop == "1") objHtml += '<param name="loop" value="1" />';
	objHtml += '<embed id="navi" src="' + url + '" quality="high" bgcolor="#ffffff" width="' + w + '" height="' + h + '" name="sports" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" ';
	if (loop != undefined && loop == "1") objHtml += ' loop=1';
	objHtml += '></embed>';
	objHtml += '</object>';
	document.write(objHtml);
}


function getflash_v2(url, w, h, oid, eid, loop) {
	var objHtml = "";
	objHtml += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="' + w + '" height="' + h + '" id="navi" align="middle">';
	objHtml += '<param name="allowScriptAccess" value="always" />';
	objHtml += '<param name="allowFullScreen" value="false" />';
	objHtml += '<param name="movie" value="' + url + '" />';
	objHtml += '<param name="wmode" value="transparent" />';
	objHtml += '<param name="quality" value="high" />';
	objHtml += '<param name="bgcolor" value="#ffffff" />';
	if (loop != undefined && loop == "1") objHtml += '<param name="loop" value="1" />';
	objHtml += '<embed id="navi" src="' + url + '" quality="high" bgcolor="#ffffff" width="' + w + '" height="' + h + '" name="sports" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" wmode="transparent"';
	if (loop != undefined && loop == "1") objHtml += ' loop=1';
	objHtml += '></embed>';
	objHtml += '</object>';
	document.write(objHtml);
}


// dynamic loader add by rhio.kim 2008.03.18
function loadJS(path, charset1) {
	if (charset1 == undefined) {
		charset1 = "utf-8";
	}
	var oScript = document.createElement("SCRIPT");
		with(oScript) {
			setAttribute("type", "text/javascript");
			setAttribute("language", "javascript");
			setAttribute("charset", charset1);
			setAttribute("src", path);
		}
		document.getElementsByTagName('head')[0].appendChild(oScript);
}