/**
 *	error message table
 */
var nsErrorMsgTable = new Array();

/**
 *	ÇØ´ç page¸¦ ·ÎµùÇÒ¶§ ½ÇÇàµÇ´Ù.
 *
 */
function window.onload() {
	initErrorMsg();	
	initFields();
	initPage();
}

/**
 *	ÇØ´ç pagedÀÇ ÀÔ·Â Ç×¸ñµéÀ» ÃÊ±âÈ­ ÇÑ´Ù.
 *
 */
function initFields() {
	//°Ë»ç´ëÇ× Ç×¸ñ
	var field;
	
	try {
		//ÇØ´ç page¿¡ ÀÖ´Â inputÀÇ maskingÀ» ÃÊ±âÈ­¸¦ ÇÑ´Ù.
		var fields = document.all.tags("INPUT")
		for (var i=0; i<fields.length; i++) {
			field = fields[i];
			initMask(field);	
		}
	} catch(e) {
		//field ÃÊ±âÈ­¿¡ ¿¡·¯°¡ »ý±ä °æ¿ì
		alert(getErrorMsg(new Error(20000, e.description + " : " + field.name)));
	}			
}


/**
 *	ÇØ´ç page¸¦ ÃÊ±âÈ­ ÇÑ´Ù. °¢ page¿¡¼­ ÀçÁ¤ÀÇ µÉ ¼ö ÀÖ´Â function
 *
 */
function initPage() {
}

/**
 *	ÇØ´ç formÀ» submitÇÏ±â Àü¿¡ ÇØ´ç formÀ» checkÇÑ´Ù.
 *	return true or false
 */
function checkForm(form) {

	//°Ë»ç´ëÇ× Ç×¸ñ
	var field;
	initErrorMsg();
	
	try {
		var fields = form.elements;
		for (var i=0; i<fields.length; i++) {
			field = fields[i];
			//alert(field.name + " : " + field.type + " : " + field.value + " : " + field.checked);
			if(field.tagName == "INPUT") {
				checkRequired(field);
				checkNumber(field);
				checkDate(field);
				checkTelNumber(field);
				checkByte(field);
				checkEngNumber(field);
			} else if(field.tagName == "SELECT") {
				checkRequired(field);
			} else if(field.tagName == "TEXTAREA") {
				checkRequired(field);
				checkByte(field);
			}
		}
		field = null;
		
		//°¢°¡ÀÇ ÆäÀÌÁö Ã³¸® È£Ãâ
		return checkPage(form);

	} catch (e) {
		//exception ¹ß»ýÇÏ¸é messageÃâ·ÂÈÄ focus 
		alert(getErrorMsg(e));
		
		//ÇØ´ç Ç×¸ñ¿¡ focus¸¦ ÁØ´Ù.
		if(field != null) setFocus(field);
			
		//false¸¦ ¸®ÅÏÇÑ´Ù.	
		return false;
	}	
	
}

/**
 *	ÇØ´ç formÀ» submitÇÏ±â Àü¿¡ ÇØ´ç formÀ» checkÇÑ´Ù.
 *	checkForm()°á°ú°¡ ÂüÀÌ¸é submit()
 */
function submitForm(form) {
	if(checkForm(form)) {
		form.submit();	
	} 
}

/**
 *	ÇØ´ç page¸¦ checkÇÑ´Ù. °¢ page¿¡¼­ ÀçÁ¤ÀÇ µÉ ¼ö ÀÖ´Â function
 *
 */
function checkPage(form) {
	return true;
}

/**
 *	ÇØ´ç ¿¡·¯ ¹øÈ£¿¡ ´ëÇÑ ¸Þ¼¼Áö¸¦ °¡Á®¿Â´Ù.
 *	return error message
 *
 */
function getErrorMsg(e) {
	
	var msg;
	
	// error objec¾øÀÌ ¹¬½ÃÀûÀ¸·Î ´øÁø°æ¿ì : throw "xxx" ÇüÅÂ
	if(typeof(e) == "string") {
		msg = e;
	
	//error number°¡ ¾øÀÌ message¸¸ ´øÁø °æ¿ì : throw new Error("xxx")ÇüÅÂ
	} else if(typeof(e.number) == "undefined") {
		msg = e.description;	

	// error number°¡ ÀÖ´Â °æ¿ì Error(00000) È¤Àº Error(00000, "xxx")
	} else {
		msg = nsErrorMsgTable[e.number.toString()];
		//messageµµ ÀÖÀ» °æ¿ì
		if (e.description.length != 0) {
			msg = e.description + "Àº(´Â) " + msg;
		}	
	}
	
	return msg;
}

/**
 *	ÇØ´ç Ç×¸ñÀÌ ÇÊ¼ö Ç×¸ñÀÎ°æ¿ì¿¡ °ªÀÌ ÀÔ·ÂµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
 *  ¸¸¾à °ªÀÌ ÀÔ·ÂµÇÁö ¾Ê¾Ò´Ù¸é Error¹ß»ý
 *	nsRequired ¼Ó¼º
 */
function checkRequired(field) {
	if(!isRequired(field) || !isBlank(field)) return;
	
	var errNumber;
	var fieldDesc = "";
	if (typeof(field.desc) != "undefined")	{
		fieldDesc = field.desc; 
	}
	
	//field°¡ input ÀÏ °æ¿ìÀÇ error number
	if (field.tagName == "INPUT")	{
		errNumber = 10010;
	//field°¡ select ÀÏ °æ¿ìÀÇ error number	
	} else if (field.tagName == "SELECT")	{
		errNumber = 10011;
	} else if (field.tagName == "TEXTAREA")	{
		errNumber = 10010;
	}

	throw new Error(errNumber, fieldDesc);

}

/**
 *	ÇØ´ç Ç×¸ñÀÌ ¼ýÀÚÀÔ·Â Ç×¸ñÀÎ°æ¿ì¿¡ ¼ýÀÚ¸¸ ÀÔ·ÂµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
 *  ¸¸¾à °ªÀÌ Àß¸øÀÔ·Â µÇ¾ú´Ù¸é Error¹ß»ý
 *	OnlyNum ¼Ó¼º
 */
function checkNumber_(field) {
	if(typeof(field.OnlyNum) == "undefined") return;

	//field value°¡ ¼ýÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â error¹ß»ý
	if ((field.value.length != 0) && !isInt(field.value))	{
		var errNumber = 10020;
		var fieldDesc = "";
		if (typeof(field.desc) != "undefined")	{
			fieldDesc = field.desc; 
		}
		throw new Error(errNumber, fieldDesc);
	}
}


function checkNumber(field)
{
	if(typeof(field.OnlyNum) == "undefined") return;
	var Digit = '1234567890.';
	var r1=field.value;
	if (Digit.length > 1)
	{
		for(k=0;k<r1.length;k++)
		{
			if(Digit.indexOf(r1.substring(k,k+1))<0)
			{
				var errNumber = 10020;
				var fieldDesc = "";
				if (typeof(field.desc) != "undefined")	{
					fieldDesc = field.desc; 
				}
				throw new Error(errNumber, fieldDesc);
			}
		}		
	}
}

function checkTelNumber(field)
{
	if(typeof(field.OnlyTel) == "undefined") return;
	var Digit = '1234567890-';
	var r1=field.value;
	if (Digit.length > 1)
	{
		for(k=0;k<r1.length;k++)
		{
			if(Digit.indexOf(r1.substring(k,k+1))<0)
			{
				var errNumber = 10050;
				var fieldDesc = "";
				if (typeof(field.desc) != "undefined")	{
					fieldDesc = field.desc; 
				}
				throw new Error(errNumber, fieldDesc);
			}
		}		
	}
}

function checkDate(field)
{
	if(typeof(field.OnlyDate) == "undefined") return;
	var errNumber = 10040;
	var fieldDesc = "";
	if (typeof(field.desc) != "undefined")	{
		fieldDesc = field.desc; 
	}
	if(!checkValidDate(field.value)) {
		throw new Error(errNumber, fieldDesc);
	}
}

function checkEngNumber(field)	{		
	if(typeof(field.OnlyEngNum) == "undefined") return;
	for (i = 0; i < field.value.length; i++) {
		if (field.value.charAt(i) >= '0' && field.value.charAt(i) <= '9')
			continue;
		else if (field.value.charAt(i) >= 'a' && field.value.charAt(i) <= 'z')
			continue;
		else if (field.value.charAt(i) >= 'A' && field.value.charAt(i) <= 'Z')
			continue;
		else {
			var errNumber = 10060;
			var fieldDesc = "";
			if (typeof(field.desc) != "undefined")	{
				fieldDesc = field.desc; 
			}
			throw new Error(errNumber, fieldDesc);
		}
	}
}


/**
 *	ÇØ´ç Ç×¸ñÀÌ Byte Å©±â¸¸Å­ ÀÔ·ÂµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
 *  ¸¸¾à °ªÀÌ Àß¸øÀÔ·Â µÇ¾ú´Ù¸é Error¹ß»ý
 *	byte ¼Ó¼º
 */
function checkByte(field) {
	if(typeof(field.byte) == "undefined") return;
	
	var byteLen = field.byte;

	if(getByteLength(field.value) > byteLen) {
		var errNumber = 10030;
		var fieldDesc = "(¿µ¹® "+ byteLen + "ÀÚ)" ;
		if (typeof(field.desc) != "undefined")	{
			fieldDesc = field.desc + fieldDesc;
		}
		throw new Error(errNumber, fieldDesc);
	}
}


function getByteLength(s){
   var len = 0;
   if ( s == null ) return 0;
   for(var i=0;i<s.length;i++){
      var c = escape(s.charAt(i));
      if ( c.length == 1 ) len ++;
      else if ( c.indexOf("%u") != -1 ) len += 2;
      else if ( c.indexOf("%") != -1 ) len += c.length/3;
   }
   return len;
}





/**
 * ÇØ´ç Ç×¸ñÀÌ ÇÊ¼ö Ç×¸ñÀÎÁö Ã¼Å©ÇÑ´Ù.
 * return true / false
 */
function isRequired(field) {
	return typeof(field.required) != "undefined"
}

/**
 * ÇØ´ç Ç×¸ñÀÌ value°ªÀÌ ÀÖ´ÂÁö Ã¼Å©ÇÑ´Ù.
 * return true / false
 */
function isBlank(field) {
	return field.value.length == 0;
}

/**
 *	field¿¡ focus¸¦ ¼¼ÆÃÇÔ
 *
 */
function setFocus(field) {
	field.focus();
	if (field.tagName == "INPUT") {	
		field.select();
	}
}

/**
 *	ÇØ´ç fieldÀÇ nsMask°¡ ÀÖ´Ù¸é Ã³¸®¸¦ ÇÑ´Ù.
 *	==> Â÷ÈÄ¿¡ ¿ä±¸»çÇ×ÀÌ ÀÖÀ»°æ¿ì Ãß°¡ÇÑ´Ù.
 */
function initMask(field) {
	if(typeof(field.nsMask) == "undefined") return;
	var mask = field.nsMask.toUpperCase();
	
	//¼ýÀÚ¸¸ ÀÔ·Â Á¦ÇÑ
	if(mask == "NUMBER") {

	//¼ýÀÚ¹× ¾ËÆÄºª ÀÔ·Â Á¦ÇÑ	
	} else if(mask == "NUMALPH") {
		
	//±Ý¾× masking	
	} else if(mask == "CURRENCY") {
		
	//ºñÀ² masking	
	} else if(mask == "RATE") {
		
	}
	
}


/**
 *	value °¡ ¼Ò¼öÁ¡ ÀÌÇÏ °ªÀÌ ÀÖÀ¸¸é true ¾Æ´Ï¸é false¸¦ ¹ÝÈ¯ÇÔ.
 *
 */
function isFloat(value) {
	try {
		var intVal = parseInt(value);
	} catch (e) {
		return false;
	}
	return value != intVal;
}

/**
 *	value °¡ Á¤¼ö ÀÌ¸é true ¾Æ´Ï¸é false¸¦ ¹ÝÈ¯ÇÔ.
 *
 */
function isInt(value) {
	try {
		var intVal = parseInt(value);
	} catch (e) {
		return false;
	}
	return value == intVal;
}

/**
 *	numStrÀÇ °ª¿¡¼­ Á¤¼öºÎ¸¦ ±¸ÇÑ´Ù. getIntPart(123.456) -> 123
 *
 */
function getIntPart(num) {
	var numStr = num + "";
	var dotIndex = numStr.indexOf(".");
	if (dotIndex == -1) return numStr;

	return numStr.substr(0, dotIndex);
}

/**
 *	numStrÀÇ °ª¿¡¼­ ¼Ò¼öºÎ¸¦ ±¸ÇÑ´Ù. getFloatPart(123.456) -> 456
 *
 */
function getFloatPart(num) {
	var numStr = num + "";
	var dotIndex = numStr.indexOf(".");
	if (dotIndex == -1) return "";

	return numStr.substring(dotIndex + 1);
}

/**
 *	value °¡ ¼Ò¼öÁ¡ ÀÌÇÏ °ªÀÌ ÀÖÀ¸¸é true ¾Æ´Ï¸é false¸¦ ¹ÝÈ¯ÇÔ.
 *
 */
function isFloat(value) {
	try {
		var intVal = parseInt(value);
	} catch (e) {
		return false;
	}
	return value != intVal;
}

/**
 *	value °¡ Á¤¼ö ÀÌ¸é true ¾Æ´Ï¸é false¸¦ ¹ÝÈ¯ÇÔ.
 *
 */
function isInt(value) {
	try {
		var intVal = parseInt(value);
	} catch (e) {
		return false;
	}
	return value == intVal;
}


 /*******************************
  * ³¯Â¥ Ã¼Å©
  *******************************/
  function checkValidDate(chkVal){

	if(isNaN(Number(chkVal))){
      return false;
    }
	
	if(chkVal.length < 8)
		return false;

    if(chkVal.length == 6)
      chkVal = '20' + '' + chkVal;

    yearNum = Number(chkVal.substring(0,4));

    if(yearNum < 1900 || yearNum > 2100){
      return false;
    }
    if(chkVal.length > 4){
      monthNum = Number(chkVal.substring(4,6));
      if(!(monthNum >= 1 && monthNum <= 12)){
        return false;
      }
    }
    if(chkVal.length > 6){
      dayNum = Number(chkVal.substring(6,8));
      return isValidDay(yearNum,monthNum,dayNum);
    }
    return true;
  }

/*****************
* ÀÏÀÚÃ¼Å©
*****************/
 function isValidDay(yyyy, mm, dd) {
    var m = mm - 1;
    var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

    if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0)
      end[1] = 29;

    return (dd >= 1 && dd <= end[m]);
  }

/**
 *	Error message tabel ÃÊ±âÈ­
 *
 */
function initErrorMsg() {
	nsErrorMsgTable["20000"] = "ÃÊ±âÈ­¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù.";
	nsErrorMsgTable["10010"] = "ÇÊ¼öÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.";
	nsErrorMsgTable["10011"] = "ÇÊ¼ö¼±ÅÃ Ç×¸ñÀÔ´Ï´Ù.";
	nsErrorMsgTable["10020"] = "¼ýÀÚÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.";
	nsErrorMsgTable["10030"] = "ÁöÁ¤µÈ ±æÀÌ¸¦ ÃÊ°úÇÏ¿´½À´Ï´Ù.";
	nsErrorMsgTable["10040"] = "³¯Â¥ÀÔ·ÂÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.";
	nsErrorMsgTable["10050"] = "¼ýÀÚ(-) ÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.";
	nsErrorMsgTable["10060"] = "¿µ¹®,¼ýÀÚ ÀÔ·Â Ç×¸ñÀÔ´Ï´Ù.";
}	


/*
´ÙÀ½°ú °°ÀÌ ÀÌº¥Æ®¸¦ Áà¼­ »ç¿ëÇÏ¸é µË´Ï´Ù.
<textarea name="introduce" rows="3" cols="70" onChange="CheckStrLen('1000',this);" 
onKeyUp="CheckStrLen('1000',this);"></textarea>
*/
function CheckStrLen(maxlen,field)
{
	 var temp; //µé¾î¿À´Â ¹®ÀÚ°ª...
	 var msglen;
	 msglen = maxlen*2;
	 var value= field.value;
	 
	 l =  field.value.length; 
	 tmpstr = "" ;

	 if (l == 0)
	 {
	  value = maxlen*2;
	 }
	 else 
	 {
	  for(k=0;k<l;k++)
	  {
	   temp =value.charAt(k);

		   if (escape(temp).length > 4)
			msglen -= 2;
		   else
			msglen--;
		  
			   if(msglen < 0) 
			   {
					alert("ÃÑ ¿µ¹® "+(maxlen*2)+"ÀÚ ÇÑ±Û " + maxlen + "ÀÚ ±îÁö º¸³»½Ç¼ö ÀÖ½À´Ï´Ù.");
					field.value= tmpstr;
					return false;
					break;
			   }
			   else 
			   {
					tmpstr += temp;
			   }
		  }
	 }
}

function next_tab(name1, len, name2)
{
	var tmp = eval(name1 + ".value.length");
	var length = eval(len);
	if (tmp == length)
		eval(name2 + ".focus()");
}



function checkemail(a)
{
	var goodEmail = a.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.co.kr)|(\.or.kr)|(\.pe.kr)|(\.go.kr)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
	if (goodEmail)
	{
		return true;
	}
	else
	{
		return false;
	}
}



/** =============================================
Comment: ¾÷·Îµå ÆÄÀÏÅ¸ÀÔ ¹× ±æÀÌ Ã¼Å©
---------------------------------------------- */
function checkFileLenOrType(fieldValue,chkLen,chkType) {
	if (fieldValue.indexOf("'") != -1) {
		alert("ÆÄÀÏÀÌ¸§¿¡ Àß¸øµÈ ¹®ÀÚ°¡ ÀÖ½À´Ï´Ù.");
		return false;
	}
	if (fieldValue.indexOf("\"") != -1) {
		alert("ÆÄÀÏÀÌ¸§¿¡ Àß¸øµÈ ¹®ÀÚ°¡ ÀÖ½À´Ï´Ù.");
		return false;
	}
	if (chkLen =="TRUE" && !checkFilenameLen(fieldValue) ) {
		return false;
	}
	if (chkType =="TRUE" && wrongImgFormat(fieldValue)) {
		alert("ÀÌ¹ÌÁö¸¦ Ã·ºÎÇÏÁö ¾Ê¾Ò°Å³ª Áö¿øÇÏÁö ¾Ê´Â ÆÄÀÏÇü½ÄÀÔ´Ï´Ù.\n\n[jpg, gif Æ÷¸ËÀ» Áö¿øÇÕ´Ï´Ù.]");
		return false;
	}

	return true;
 }



function checkFilenameLen (imgPath) {
	var len = imgPath.length;
	var idx = imgPath.lastIndexOf("\\");
	var sFilename = imgPath.substring(idx+1,len-4);
	if ( FilenameSize(sFilename) > 50 ) {
		alert("ÆÄÀÏÀÌ¸§ ±æÀÌ°¡ Á¦ÇÑ°ªÀ» ÃÊ°úÇÏ¿´½À´Ï´Ù.\n\n" + imgPath.substring(idx+1,len));
		return false
	} else {
		return true
	}
}
function FilenameSize (s) {
	var i;
	var len = 0;
	for ( i=0 ; i<s.length; i++) {
		if ( s.charCodeAt(i) > 255 ) {
			len += 2;
		} else {
			len ++;
		}
	}
	return len;
}
function wrongImgFormat(imgPath) {
	var len = imgPath.length;
	var sFormat = imgPath.substring(len-4);

	if ( sFormat == ".jpg" || sFormat == ".JPG" ||
		sFormat == ".gif" || sFormat == ".GIF" ) {
		return 0
	}

	return 1
}
