///////////////////////////////////////////////////////////////////////////
// validator
// Æû°´Ã¼ À¯È¿¼º °Ë»ç
// 
// 
// 
///////////////////////////////////////////////////////////////////////////

/// ¿¡·¯¸Þ½ÃÁö Æ÷¸ä Á¤ÀÇ ///
var NO_BLANK = "{name+À»¸¦} ÀÔ·ÂÇÏ¿© ÁÖ½Ê½Ã¿À";
var NO_SELECT = "{name+À»¸¦} ¼±ÅÃÇÏ¿©ÁÖ½Ê½Ã¿À";
var NOT_VALID = "{name+ÀÌ°¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù";
var TOO_LONG = "{name}ÀÇ ±æÀÌ°¡ ÃÊ°úµÇ¾ú½À´Ï´Ù (ÃÖ´ë {maxbyte}¹ÙÀÌÆ®)";
var TOO_SHORT = "{name}ÀÇ ±æÀÌ°¡ ºÎÁ·ÇÕ´Ï´Ù (ÃÖ¼Ò {minbyte}¹ÙÀÌÆ®)";

/// ½ºÆ®¸µ °´Ã¼¿¡ ¸Þ¼Òµå Ãß°¡ ///
String.prototype.trim = function(str) { 
	str = this != window ? this : str; 
	return str.replace(/^\s+/g,'').replace(/\s+$/g,''); 
}

String.prototype.hasFinalConsonant = function(str) {
	str = this != window ? this : str; 
	var strTemp = str.substr(str.length-1);
	return ((strTemp.charCodeAt(0)-16)%28!=0);
}

function josa(str,tail) {
	return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
}

function validate(form) {
	var i=0;

	for (i = 0; i < form.elements.length; i++ ) {
		var el = form.elements[i];
		if(el.tagName.toUpperCase() != "OBJECT") {
			el.value = el.value.trim();
	
			if (el.getAttribute("REQUIRED") != null) {
				//select ±¸¹® Ã³¸®
				if(el.type.indexOf("select")>-1){
					//|| el.option[el.selectedIndex].value == ""
					if (el.selectedIndex==0 ) {
						return doError(el,NO_SELECT);
					}
				}else{
					if (el.value == null || el.value == "") {
						return doError(el,NO_BLANK);
					}
				}
			}
	
			if (el.getAttribute("MAXBYTE") != null && el.value != "") {
				var len = 0;
				for(j=0; j<el.value.length; j++) {
					var str = el.value.charAt(j);
					len += (str.charCodeAt() > 128) ? 2 : 1
				}
				if (len > parseInt(el.getAttribute("MAXBYTE"))) {
					maxbyte = el.getAttribute("MAXBYTE");
					return doError(el,TOO_LONG,"",maxbyte);
				}
			}
			if (el.getAttribute("MINBYTE") != null && el.value != "") {
				var len = 0;
				for(j=0; j<el.value.length; j++) {
					var str = el.value.charAt(j);
					len += (str.charCodeAt() > 128) ? 2 : 1
				}
				if (len < parseInt(el.getAttribute("MINBYTE"))) {
					minbyte = el.getAttribute("MINBYTE");
					return doError(el,TOO_SHORT,"",minbyte);
				}
			}
	
			if (el.getAttribute("OPTION") != null && el.value != "") {
				if (!funcs[el.getAttribute("OPTION").toLowerCase()](el)) return false;
			}
	
			if (el.getAttribute("FILETYPE") != null && el.value != "") {
				var validFileType = el.getAttribute("FILETYPE").split(",");
				var nFileType = el.value.substring(el.value.lastIndexOf(".")+1,el.length);
				var isValidFileType = false;
				for (j=0; j<validFileType.length ; j++) {
					if (nFileType.toUpperCase()==validFileType[j].toUpperCase().replace(/\s/g,"")) {
						isValidFileType = true;
					}
				}
				if (!isValidFileType) {
					var nameString = "";
					if (el.getAttribute("hname") != null && el.getAttribute("hname") != "") {
						nameString = "{name+ÀÌ°¡} ";
					}
					return doError(el,nameString+"ÀûÀýÇÑ ÆÄÀÏ Æ÷¸ËÀÌ ¾Æ´Õ´Ï´Ù.");
				}
			}
		}
	}
	return true;
}

function doError(el,type,action,byte) {
	var pattern = /{([a-zA-Z0-9_]+)\+?([°¡-ÆR]{2})?}/;
	var name = (hname = el.getAttribute("HNAME")) ? hname : el.getAttribute("NAME");
	pattern.exec(type);
	var tail = (RegExp.$2) ? josa(eval(RegExp.$1),RegExp.$2) : "";
	alert(type.replace(pattern,eval(RegExp.$1) + tail).replace(pattern,byte));
	if (action == "sel") {
		el.select();
	} else if (action == "del")	{
		el.value = "";
	}
	if (el.getAttribute("UNFOCUSED") == null) {
		if(el.type!="hidden"&&el.style.display.toUpperCase()!="NONE"){		
			el.focus();
		}
	}	
	return false;
}	

/// Æ¯¼ö ÆÐÅÏ °Ë»ç ÇÔ¼ö ¸ÅÇÎ ///
var funcs = new Array();
funcs['nospace'] = isNoSpace;
funcs['email'] = isValidEmail;
funcs['emailfirst'] = isValidEmailFirst;
funcs['emailend'] = isValidEmailEnd;
funcs['phone'] = isValidPhone;
funcs['userid'] = isValidUserid;
funcs['hangul'] = hasHangul;
funcs['number'] = isNumeric;
funcs['number2'] = isNumeric2;
funcs['engonly'] = alphaOnly;
funcs['hangulonly'] = hangulOnly;
funcs['jumin'] = isValidJumin;
funcs['bizno'] = isValidBizNo;
funcs['date'] = isValidDate;
funcs['pw'] = isValidPassword;
funcs['acpw'] = isValidAccountPassword;

/// ÆÐÅÏ °Ë»ç ÇÔ¼öµé ///
function isNoSpace(el) {
	var pattern = /[\s]/;
	return (!pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¶ç¾î¾²±â ¾øÀÌ ÀÔ·ÂÇØÁÖ½Ã±â ¹Ù¶ø´Ï´Ù");
}

function isValidEmail(el) {
	var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}

function isValidEmailFirst(el) {
	var pattern = /^[_a-zA-Z0-9-\.]+$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}

function isValidEmailEnd(el) {
	var pattern = /^[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}



//¼öÁ¤ ÇÊ¿ä
function isValidUserid(el) {
	var pattern = /^[a-zA-Z0-9]{6,8}$/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} 6ÀÚÀÌ»ó 8ÀÚÀÌÇÏÀÌ¾î¾ß ÇÏ°í,\n¿µ¹®,¼ýÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù");
}

function hasHangul(el) {
	var pattern = /[°¡-ÆR]/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±ÛÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù");
}
function hangulOnly(el) {
	var pattern = /^[°¡-ÆR]+$/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ÇÑ±Û¸¸ ÀÔ·Â°¡´É ÇÕ´Ï´Ù");
}

function alphaOnly(el) {
	var pattern = /^[a-zA-Z]+$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}

function isNumeric(el) {
	var pattern = /^[0-9]+$/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function isNumeric2(el) {
	var pattern = /^[0-9,.]+$/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}


function isValidJumin(el) {
    var pattern = /^([0-9]{6})-?([0-9]{7})$/; 
	var num = el.value;
    if (!pattern.test(num)) return doError(el,NOT_VALID); 
    num = RegExp.$1 + RegExp.$2;

	var sum = 0;
	var last = num.charCodeAt(12) - 0x30;
	var bases = "234567892345";
	for (var i=0; i<12; i++) {
		if (isNaN(num.substring(i,i+1))) return doError(el,NOT_VALID);
		sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
	}
	var mod = sum % 11;
	return ((11 - mod) % 10 == last) ? true : doError(el,NOT_VALID);
}

function isValidBizNo(el) { 
	var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/; 
	var num = el.value;
    if (!pattern.test(num)) return doError(el,NOT_VALID); 
    num = RegExp.$1 + RegExp.$2 + RegExp.$3;
    var cVal = 0; 
    for (var i=0; i<8; i++) { 
        var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7); 
        cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10; 
    } 
    var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0'; 
    cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2)); 
    return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10) ? true : doError(el,NOT_VALID); 
}

/*
function isValidPhone(el) {
	var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
	if (pattern.exec(el.value)) {
		if(RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019") {
			el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
		}
		return true;
	} else {
		return doError(el,NOT_VALID);
	}
}
*/

function isValidPhone(el) {
	var pattern = /^[0-9-]+$/;
	return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function isValidDate(el) {
	var oDateStr = el.value;

	var oDate = new Date(oDateStr.substr(0,4),oDateStr.substr(4,2)-1,oDateStr.substr(6,2));

	var oYearStr=oDate.getFullYear();

	var oMonthStr=(oDate.getMonth()+1).toString();
		
	oMonthStr = (oMonthStr.length ==1) ? "0"+ oMonthStr: oMonthStr; 
	var oDayStr=oDate.getDate().toString();
	oDayStr = (oDayStr.length ==1) ? "0"+ oDayStr: oDayStr; 

	return  (oDateStr == oYearStr+oMonthStr+oDayStr) ? true : doError(el,NOT_VALID); 
}

function isValidPassword(el) {
	var pattern = /^[A-Za-z0-9_\-\!@#]{4,12}$/;
	return (pattern.test(el.value)) ? true : doError(el,"ºñ¹Ð¹øÈ£°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\nºñ¹Ð¹øÈ£´Â 4ÀÚÀÌ»ó 12ÀÚ ÀÌÇÏÀÇ ¿µ¹®, ¼ýÀÚ, Æ¯¼ö¹®ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù");
}

function isValidAccountPassword(el) {
	var pattern = /^[0-9]{4,8}$/;
	
	return pattern.test(el.value) ? true : doError(el,"ºñ¹Ð¹øÈ£°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\nºñ¹Ð¹øÈ£´Â 4ÀÚÀÌ»ó 8ÀÚ ÀÌÇÏÀÇ ¼ýÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù");
}


function makeValidationDate(obj,obj_year,obj_month,obj_day){
	if(obj_month.value.length==1)
		obj_month.value = "0" + obj_month.value;
	if(obj_day.value.length==1)
		obj_day.value = "0" + obj_day.value;

	obj.value = obj_year.value+obj_month.value+obj_day.value;
}

function makeValidationDate_Sel(obj,obj_year,obj_month,obj_day){
	if(obj_month.options[obj_month.selectedIndex].value.length==1)
		var t_month = "0" + obj_month.options[obj_month.selectedIndex].value;
	else
		var t_month = obj_month.options[obj_month.selectedIndex].value;

	if(obj_day.options[obj_day.selectedIndex].value.length==1)
		var t_day = "0" + obj_day.options[obj_day.selectedIndex].value;
	else
		var t_day = obj_day.options[obj_day.selectedIndex].value;

	obj.value = obj_year.options[obj_year.selectedIndex].value+t_month+t_day;
}

Date.prototype.toY4MDString = function(delim) {
	if (delim == undefined) delim = "";
	var year = this.getFullYear().toString();
	var month = this.getMonth() + 1;
	var day = this.getDate();
	month = (month < 10 ? "0" : "") + month;
	day = (day < 10 ? "0" : "") + day;
	return year + delim + month + delim + day;
}






/**
 ´ÙÀ½ ÆûÀ¸·Î ÀÌµ¿
**/
function goNext(obj,nextObj) {
	try {
		var maxLength = obj.getAttribute("MAXLENGTH");
		if (maxLength>0&&obj.value.length==maxLength) {
			nextObj.focus();
		}
	} catch (e) { }
}




// Çã¿ëµÈ byte¸¸Å­ ÀÔ·ÂµµÁß ½Ç½Ã°£À¸·Î stringÀÚ¸£±â
// <textArea>µî¿¡ »ç¿ëÇÏ¸é µË´Ï´Ù.
// onKeyup="checkByte(this,Á¦ÇÑÇÒbyte¼ö,"ÇöÀçbyteÁ¤º¸»Ñ·ÁÁÙ¿µ¿ªÀÇID");"
// ¸¶Áö¸· ÀÎÀÚ´Â ¼±ÅÃ»çÇ×ÀÔ´Ï´Ù.
// ex)  onKeyup="checkByte(this,200,'nowByteShowArea');"

function getBytes(sString) {
	var c = 0;
	for (var i=0; i<sString.length; i++) {
		c += parseInt(getByte(sString.charAt(i)));
	}
	return c;
}
function getByte(sChar) {
	var c = 0;
	var u = escape(sChar);
	if (u.length < 4) { // ¹Ý°¢¹®ÀÚ : ±âº»ÀûÀÎ ¿µ¹®, ¼ýÀÚ, Æ¯¼ö±âÈ£
		c++; // + 1byte
	} else {
		var s = parseInt(sChar.charCodeAt(0));
		if (((s >= 65377)&&(s <= 65500))||((s >= 65512)&&(s <= 65518))) // ¹Ý°¢¹®ÀÚ À¯´ÏÄÚµå 10Áø¼ö ¹üÀ§ : ÇÑ±¹¾î, ÀÏº»¾î, Æ¯¼ö¹®ÀÚ
			c++; // + 1byte
		else // Àü°¢¹®ÀÚ : À§ Á¶°ÇÀ» Á¦¿ÜÇÑ ¸ðµç ¹®ÀÚ
			c += 2; // + 2byte
	}
	return c;
}
function cutOverText(obj,maxByte,viewAreaID) {
	var sString = obj.value;
	var c = 0;
	for (var i=0; i<sString.length; i++) {
		c += parseInt(getByte(sString.charAt(i)));
		if (c>maxByte) {
			obj.value = sString.substring(0,i);
			break;
		}
	}
	showNowByte(obj.value,viewAreaID);
}
function showNowByte(sString,viewAreaID) {
	var vArea = document.getElementById(viewAreaID);
	if (vArea) vArea.innerHTML = getBytes(sString);
}
function checkByte(obj,maxByte,viewAreaID) {
	var sString = obj.value;
	showNowByte(sString,viewAreaID);
	if (getBytes(sString) > maxByte) {
		alert("ÃÖ´ë "+maxByte+"Bytes(ÇÑ±Û "+(maxByte/2)+"ÀÚ/¿µ¹® "+maxByte+"ÀÚ)±îÁö¸¸ ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.");
		cutOverText(obj,maxByte,viewAreaID);
	}
}




///////////////////////////////////////////////////////////////////////////
// submit
// submit Áßº¹ ¸·±â, direct submit ±ÝÁö
// 
// 
// 
///////////////////////////////////////////////////////////////////////////
document.write('<iframe name="SafeSubmitFrame" src="about:blank" style="position:absolute;left:-10px;top:-10px;width:1px;height:1px;visibility:hidden"></iframe>');
document.write('<form name="SafeSubmitHeaderData" method="post" style="position:absolute;left:-10px;top:-10px;margin:0px;padding:0px;">');
document.write('<input type="hidden" name="ibkToken">');
document.write('</form>');

var SafeSubmitForm = null;
var SafeSubmitmode = "";
var sTokenName = "token";
var isDoubleClickMode = false;

function getSafeForm() {
	var targetForm = null;
	//var sTokenValue = "";
	var sThisErrorCode = "00";
	if (arguments.length>0) {
		if (arguments[0].tagName=="FORM") {
			targetForm = arguments[0];
		} else if (document[arguments[0]].tagName=="FORM") {
			targetForm = document[arguments[0]];
		} else {
			sThisErrorCode = "11";
		}
	} else {
		sThisErrorCode = "11";
	}
	
	/*
	try {
		sTokenValue = IBK_TOKEN_STRING;
	} catch(e) {
		sThisErrorCode = "22";
	}
	*/
	
	if (sThisErrorCode=="00") {
		if (targetForm[sTokenName]) {
			sThisErrorCode = "33";
			targetForm = null;
		} else {
			var inputObject = document.createElement("INPUT");
			inputObject.setAttribute("type","hidden");
			inputObject.setAttribute("name",sTokenName);
			inputObject.setAttribute("id",sTokenName);
			//inputObject.setAttribute("value",sTokenValue);
			targetForm.appendChild(inputObject);
			//targetForm.submit();
		}
	}
	
	if (sThisErrorCode=="11") {
		alert("Àü¼ÛÇÒ Form Á¤º¸¸¦ °¡Á®¿ÀÁö ¸øÇß½À´Ï´Ù.");
	/*
	} else if (sThisErrorCode=="22") {
		alert("Token °ªÀÌ Á¤ÀÇµÇÁö ¾Ê¾Ò½À´Ï´Ù.");
	*/
	} else if (sThisErrorCode=="33") {
		alert("Ã³¸®ÁßÀÔ´Ï´Ù. Àá½Ã¸¸ ±â´Ù·Á ÁÖ¼¼¿ä.");
		isDoubleClickMode = true;
	}
	return targetForm;
}

function SafeXecureSubmit() {
	SafeSubmitmode = "SafeXecureSubmit";
	var sParamString = "";
	for (var i=0; i<arguments.length; i++) {
		if (i>0) sParamString += ", ";
		sParamString += "arguments["+i+"]";
	}
	SafeSubmitForm = eval("getSafeForm("+sParamString+")");
	if (!isDoubleClickMode) {
		SetSafeSubmitMode();
	}
}

function SafeSubmit() {
	SafeSubmitmode = "SafeSubmit";
	var sParamString = "";
	for (var i=0; i<arguments.length; i++) {
		if (i>0) sParamString += ", ";
		sParamString += "arguments["+i+"]";
	}
	SafeSubmitForm = eval("getSafeForm("+sParamString+")");
	if (!isDoubleClickMode) {
		SetSafeSubmitMode();
	}
}

function SetSafeSubmitMode() {
	if (SafeSubmitForm!=null) {
		var ibkToken = SafeSubmitForm[sTokenName].value;
		var SafeSubmitHeaderData = document.SafeSubmitHeaderData;
		if (SafeSubmitHeaderData) {
			SafeSubmitHeaderData.ibkToken.value = ibkToken;
			SafeSubmitHeaderData.target = "SafeSubmitFrame";
			SafeSubmitHeaderData.action = "/common/jsp/SafeSubmit.jsp";
			SafeSubmitHeaderData.submit();
		}
	} else {
		alert("´ë»ó FormÀ» Ã£À» ¼ö ¾ø½À´Ï´Ù.");
	}
}

function insertTokenValue(sTokenValue) {
	SafeSubmitForm[sTokenName].value = sTokenValue;
}


function DoSafeSubmit(sTokenValue) {
	var isSuccess = false;
	if (SafeSubmitmode=="SafeSubmit") {
		if (SafeSubmitForm!=null) {
			insertTokenValue(sTokenValue);
			SafeSubmitForm.submit();
			isSuccess = true;
		}
	} else if (SafeSubmitmode=="SafeXecureSubmit") {
		if (SafeSubmitForm!=null) {
			insertTokenValue(sTokenValue);
			try {
				XecureSubmit(SafeSubmitForm);
			} catch(e) {
				alert("¾ÏÈ£È­ Àü¼Û ¿À·ù : " + e);
			}
			isSuccess = true;
		}
	}
	if (!isSuccess) {
		alert("¿Ã¹Ù¸¥ Á¢±ÙÀÌ ¾Æ´Õ´Ï´Ù.");
	}
}






/*
 ÆÄÀÏ¾÷·Îµå
*/
function goUploadFile(fileForm, newfileForm, uploadPath, mode) {
	if (mode==null) mode = "";
	if (uploadPath==null) {
		try {
			uploadPath = sUploadFilePath+'/';
		} catch(e) {
			uploadPath = "";
		}
	}
	var pathID = "ROOT";
	if (uploadPath!=null&&uploadPath!="") {
		var pathString = uploadPath;
		if (pathString.length>1) {
			pathString = pathString.substring(0,pathString.length-1);
		}
		if (pathString.length>1) {
			pathID = pathString.substring(pathString.lastIndexOf("/")+1,pathString.length).toUpperCase();
		}
	}
	window.open("/common/jsp/upload_form.jsp?fileForm=" + fileForm + "&newfileForm=" + newfileForm + "&uploadPath=" + uploadPath + "&pathID="+pathID+"&isImage=N&mode="+mode,"upload","width=340,height=300,status=yes");
}

/*
 ÀÌ¹ÌÁö¾÷·Îµå
*/
function goUploadImage(fileForm, newfileForm, uploadPath) {
	if (uploadPath==null) {
		try {
			uploadPath = sUploadFilePath+'/';
		} catch(e) {
			uploadPath = "";
		}
	}
	var pathID = "ROOT";
	if (uploadPath!=null&&uploadPath!="") {
		var pathString = uploadPath;
		if (pathString.length>1) {
			pathString = pathString.substring(0,pathString.length-1);
		}
		if (pathString.length>1) {
			pathID = pathString.substring(pathString.lastIndexOf("/")+1,pathString.length).toUpperCase();
		}
	}
	window.open("/common/jsp/upload_form.jsp?fileForm=" + fileForm + "&newfileForm=" + newfileForm + "&uploadPath=" + uploadPath + "&pathID="+pathID+"&isImage=Y","upload","width=340,height=300,status=yes");
}




