/*********************************************
* ÆÄÀÏ¸í: lib.validate.js
* ±â´É: À¯¿¬ÇÑ ÀÚµ¿ Æû °Ë»ç±â
* ¸¸µçÀÌ: °ÅÄ£¸¶·ç <comfuture@studyfriend.net>
  ¼öÁ¤: lainTT <tt@laintt.net>
* ³¯Â¥: 2002-10-01
**********************************************
* ¿ÀÀ×! ¸ÚÁø ¹æ½ÄÀÇ Æû Ã¼Å©±º¿ä.....
  ¸ÚÁø ÄÚµå¸¦ º¸¸é °¨Åº...¿ì¾¾...ÁøÀÛ ¾Ë¾ÒÀ¸¸é
  »ý³ë°¡´Ù ¸éÇÏ´Â °Çµ¥. Webµµ ÇÏ¸é ÇÒ¼ö·Ï ºüÁ® 
  µå´Âµ­...¤»¤»¤»
**********************************************/

/// ¼­ºê¹Ô ÁßÀÎÁö Ã¼Å© ///
var SUBMIT_CK = false;

/// ¿¡·¯¸Þ½ÃÁö Æ÷¸ä Á¤ÀÇ ///
var NO_BLANK  = "{name+Àº´Â} ¹Ýµå½Ã ÀÔ·ÂÇØÁÖ¼¼¿ä";
var NOT_VALID = "{name+ÀÌ°¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù";
var TOO_LONG  = "{name}ÀÇ ±æÀÌ°¡ ÃÊ°úµÇ¾ú½À´Ï´Ù";
var TOO_SMALL = "{name}ÀÇ ±æÀÌ°¡ ³Ê¹« Àû½À´Ï´Ù.";
var NOT_VALID_PASS = "{name}´Â 4ÀÚÀÌ»ó, ´Ü¼øÇÑ ¼ýÀÚ¸¦ ÇÇÇØ¼­ ÀÔ·ÂÇØÁÖ¼¼¿ä";

/// ½ºÆ®¸µ °´Ã¼¿¡ ¸Þ¼Òµå Ãß°¡ ///
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) {
    for (i = 0; i < form.elements.length; i++ ) 
	{
        var el = form.elements[i];
        el.value = el.value.trim();

        if (el.getAttribute("REQUIRED") != null) 
		{
            if (el.value == null || el.value == "") {
                return doError(el,NO_BLANK,"sel");
            }
        }

        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,"cut");
            }
			if( el.getAttribute("MINBYTE") != null )
			{
				if (len < parseInt(el.getAttribute("MINBYTE"))) {
					minbyte = el.getAttribute("MINBYTE");
					return doError(el,TOO_SMALL,"sel");
				}
			}
        }

        if (el.getAttribute("OPTION") != null && el.value != "") {
            if (!funcs[el.getAttribute("OPTION")](el)) return false;
        }
    }

    //if(SUBMIT_CK == true) {
    //    return false;       // submit ÁßÀÌ¸é µÎ¹øÀÌ»ó submit ±ÝÁö
    //} else {
    //    SUBMIT_CK = true;   // submit ÁßÀ¸·Î Ã¼Å©
    //}

    return true;
}


function validate_re(form) {
    for (i = 0; i < form.elements.length; i++ ) 
	{
        var el = form.elements[i];
        el.value = el.value.trim();

        if (el.getAttribute("REQUIRED") != null) 
		{
            if (el.value == null || el.value == "") {
                return doError(el,NO_BLANK,"sel");
            }
        }

        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,"cut");
            }
			if( el.getAttribute("MINBYTE") != null )
			{
				if (len < parseInt(el.getAttribute("MINBYTE"))) {
					minbyte = el.getAttribute("MINBYTE");
					return doError(el,TOO_SMALL,"sel");
				}
			}
        }

        if (el.getAttribute("OPTION") != null && el.value != "") {
            if (!funcs[el.getAttribute("OPTION")](el)) return false;
        }
    }

    return true;
}



function doError(el,type,action) {
    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));
    if (action == "sel") {
        el.select();
        el.focus();
    } else if (action == "cut") {
		el.value = cutByte(el.value, el.getAttribute("MAXBYTE"));
        el.focus();
    } else if (action == "del") {
        el.value = "";
    }
    SUBMIT_CK = false;
    return false;
}

// byte·Î ¹®ÀÚ¿­ ÀÚ¸£´Â ÇÔ¼ö
function cutByte(str, maxlen) {
    var len = str.length;
    var bytes = 0;

    for(i=0; i<len; i++) {
        bytes += (str.charCodeAt(i) > 128 || str.charCodeAt(i) == 34) ? 2 : 1;
        if(bytes >= maxlen - 1) {
            return str.substring(0,i);
        }
    }
}

/// Æ¯¼ö ÆÐÅÏ °Ë»ç ÇÔ¼ö ¸ÅÇÎ ///
var funcs = new Array();

funcs['isdate8'] = isValidDate8;    // 8ÀÚ¸® ³¯Â¥
funcs['isdate10'] = isValidDate10;    //10ÀÚ¸® ³¯Â¥
funcs['isnum']   = isValidNumber;   // Number Only
funcs['isfloat'] = isValidFloat;    // Float Only
funcs['isgoodpass'] = isValidPassword;    // ÆÐ½º¿öµå Çü½Ä ck

/// ÆÐÅÏ °Ë»ç ÇÔ¼öµé ///
function isValidDate8(el) {
	var pattern = /^[0-9]{8}$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID,'sel');
}
function isValidDate10(el) {
	var pattern = /^[0-9$-]{10}$/;
	return (pattern.test(el.value)) ? true : doError(el,NOT_VALID,'sel');
}

function isValidNumber(el) {
    var pattern = /^[0-9$-]+$/;
    return (pattern.test(el.value.replace(/,/gi,"") )) ? true : doError(el,NOT_VALID,'sel');
}

function isValidFloat(el) {
    var pattern = /^[0-9]*([0-9][\.][0-9])?[0-9]*$/;
    return (pattern.test(el.value)) ? true : doError(el,NOT_VALID,'sel');
}

function isValidPassword(el) {
    var len = el.value.length
    if(len < 4) {
        doError(el,NOT_VALID_PASS,'sel');
    } else if(el.value == '1234') {
        doError(el,NOT_VALID_PASS,'sel');
    } else {
        var same_char_ck = false;
        for(var i=0; i<len; i++) {  // ¿¬¼Ó¹®ÀÚ Ã¼Å©
            if(i > 0 && el.value.substring(i, i+1) != el.value.substring(i-1, i)) break;
            if(len - 1 == i) same_char_ck = true;
        }
        return !same_char_ck ? true : doError(el,NOT_VALID_PASS,'sel');
    }
}

// ÁÖ¹Îµî·Ï ¹øÈ£ ¹øÈ£ °Ë»ç
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); 
}

//=====================================================================//
// ObjectÀÇ Value°¡ ºñ¾îÀÖ´ÂÁö È®ÀÎ
function fncIsEmpty(obj)
{
   var inputStr = obj.value;
   var i;	
   for ( i = 0 ; i < inputStr.length ; i++ )
   {
      if ( inputStr.substring( i, i+1 ) != " " )
         return false;
   }
   return true;
}
// ObjectÀÇ Value°¡ low high ÀÎÁö
function fncIsLowHigh(obj, low, high) {

	var inputStr = obj.value;
	var i;
	
	if ( fncIsEmpty(obj) )			return false;
	if(inputStr.length < low )		return false;
	if(inputStr.length > high )		return false;
		
    return true;
}

// ¾ËÆÄºª/ ¼ýÀåÀÎÁö Ã¼Æ®
function fncIsAlphaNumeric(obj) {
	var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
	var inputStr = obj.value;
	var i;
	
	
	if ( fncIsEmpty(obj) )
		return false;
		
	for ( i = 0 ; i< inputStr.length ; i++ )
	{
		var oneChar = inputStr.charAt(i);
		
		for ( j = 0 ;  j < str.length ; j++){
			if (oneChar == str.charAt(j)) break;
     			if (j+1 == str.length)	return false;
     		}
     	}
     	return true;
}

// ½ºÆäÀÌ½º¸¦ Æ÷ÇÔÇÑ ºóÄ­ °Ë»ç
function fnc_Validation_IsBlank(strVal)
{
	var exp = /^\s*$/;
	return exp.test(strVal);
}

// ÀüÈ­¹øÈ£ Çü½Ä °Ë»ç
function fnc_Validation_IsPhone(strPhone)
{
	var val = strPhone;
	var exp = /^\d{2,3}-\d{3,4}-\d{4}$/;
	return exp.test(strPhone);
}

// ÀÌ¸ÞÀÏ Çü½Ä °Ë»ç
function fnc_Validation_IsMail(strMail)
{
	var blnMail = false;
	var exp = /^.+@.+\..+$/;
	
	if (!fnc_Validation_IsBlank(strMail))
	{
		var val = strMail.toLowerCase();
		//if(val.search("hanmail") < 0 && val.search("daum") < 0) blnMail = exp.test(val);
		blnMail = exp.test(val);
	}
	
	return blnMail;
}

// ¿µ¹®°ú ¼ýÀÚÀÇ Á¶ÇÕÀÎ°¡¸¦ Ã¼Å©
function fnc_Validation_IsCharNumberic(strVal) // ¿µ¹®/¼ýÀÚ
{
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1abcdefghijklmnopqrstuvwxyz0123456789";
	for (i = 0;  i < strVal.length;  i++)
	{
		ch = strVal.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			return (false);
			break;
		}
	}
	k = strVal.length - 1
	if (strVal.charAt(k) == ".")
		return (false);
		
	return (true);
}

// ¿µ¹®°ú ¼ýÀÚ¿Í Á¶ÇÕÀÎ°¡¿Í !@$%^&* Æ÷ÇÔ¿¡¼­Ã¼Å©
function fnc_Validation_IsCharNumbericspeciality(strVal) // ¿µ¹®/¼ýÀÚ
{
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1abcdefghijklmnopqrstuvwxyz0123456789!@$%^&*";
	for (i = 0;  i < strVal.length;  i++)
	{
		ch = strVal.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			return (false);
			break;
		}
	}
	k = strVal.length - 1
	if (strVal.charAt(k) == ".")
		return (false);
		
	return (true);
}


// ±Ý¾× ¼ýÀÚ¸¦ ÇÑ±Û·Î.. : num_han, ciphers_han, NUM_HAN
function num_han(num)
{
    if ( num == "1" )       return "ÀÏ";
    else if ( num == "2" )  return "ÀÌ";
    else if ( num == "3" )  return "»ï";
    else if ( num == "4" )  return "»ç";
    else if ( num == "5" )  return "¿À";
    else if ( num == "6" )  return "À°";
    else if ( num == "7" )  return "Ä¥";
    else if ( num == "8" )  return "ÆÈ";
    else if ( num == "9" )  return "±¸";
    else if ( num == "½Ê" ) return "½Ê";
    else if ( num == "¹é" ) return "¹é";
    else if ( num == "Ãµ" ) return "Ãµ";
    else if ( num == "¸¸" ) return "¸¸ ";
    else if ( num == "¾ï" ) return "¾ï ";
    else if ( num == "Á¶" ) return "Á¶ ";
    else if ( num == "0" )  return "";
}

function onlyNumber() {
	if((event.keyCode < 48)||(event.keyCode > 57)) {
		event.returnValue = false;
	}			
}

function onlyOneNumber(strValue) {
	if(strValue.length != 0 && event.keyCode == 49)  // 1ÀÌÁö¸¸ ¾ÕÀÚ¸®°¡ 1ÀÌ ¾Æ´Ï¸é ÀÔ·Â X
	 {event.returnValue = false;}
			
	if((event.keyCode < 48)||(event.keyCode > 49)) { // 0,1¸¸ ÀÔ·Â °¡´É	
		event.returnValue = false;
	}	
}


	
function NUM_HAN(num, mode, return_input)
{
	onlyNumber();

    if ( num == "" || num == "0" ) {
        if ( mode == "3" ) {
            return_input.value = "";
        }
        else if ( mode == "4" ) {
			return "";
		}
        return;
    }

    num=new String(num);
    num=num.replace(/,/gi,"");

    var len  = num.length;
    var temp1 = "";
    var temp2 = "";

    if ( len/4 > 3 && len/4 <= 4 ) {
        if ( len%4 == 0 ) {
            temp1 = ciphers_han(num.substring(0,4)) + "Á¶" + ciphers_han(num.substring(4,8)) + "¾ï" + ciphers_han(num.substring(8,12)) + "¸¸" + ciphers_han(num.substring(12,16));
        }
        else {
            temp1 = ciphers_han(num.substring(0,len%4)) + "Á¶" + ciphers_han(num.substring(len%4,len%4+4)) + "¾ï" + ciphers_han(num.substring(len%4+4,len%4+8)) + "¸¸" + ciphers_han(num.substring(len%4+8,len%4+12));
        }
    }
    else if ( len/4 > 2 && len/4 <= 3 ) {
        if ( len%4 == 0 ) {
            temp1 = ciphers_han(num.substring(0,4)) + "¾ï" + ciphers_han(num.substring(4,8)) + "¸¸" + ciphers_han(num.substring(8,12));
        }
        else {
            temp1 = ciphers_han(num.substring(0,len%4)) + "¾ï" + ciphers_han(num.substring(len%4,len%4+4)) + "¸¸" + ciphers_han(num.substring(len%4+4,len%4+8));
        }
    }
    else if ( len/4 > 1 && len/4 <= 2 ) {
        if ( len%4 == 0 ) {
            temp1 = ciphers_han(num.substring(0,4)) + "¸¸" + ciphers_han(num.substring(4,len));
        }
        else {
            temp1 = ciphers_han(num.substring(0,len%4)) + "¸¸" + ciphers_han(num.substring(len%4,len));
        }
    }
    else if ( len/4 <= 1 ) {
        temp1 = ciphers_han(num.substring(0,len));
    }

    for (var i=0; i<temp1.length; i++) {
        temp2 = temp2 + num_han(temp1.substring(i, i+1));
    }

    temp3=new String(temp2);
    temp3=temp3.replace(/¾ï ¸¸/gi,"¾ï ");
    temp3=temp3.replace(/Á¶ ¾ï/gi,"Á¶ ");

    if ( mode == 1 ) {
        alert(temp3 + " ¿ø");
    } else if ( mode == 2 ) {
         return_input.value = "( " + temp3  + "" + document.Form1.ItemType.options[2].text +")";
    } else if ( mode == 3 ) {
        return_input.value = "( " + temp3 + " ¿ø )";
    } else if ( mode == 4 ) {
		return "( " + temp3 + " ¿ø )";
	}
	

}

function ciphers_han(num)
{
    var len  = num.length;
    var temp = "";

    if ( len == 1 ) {
        temp = num;
    }
    else if ( len == 2 ) {
        temp = num.substring(0,1) + "½Ê" + num.substring(1,2);
    }
    else if ( len == 3 ) {
        temp = num.substring(0,1) + "¹é" + num.substring(1,2) + "½Ê" + num.substring(2,3);
    }
    else if ( len == 4 ) {
        temp = num.substring(0,1) + "Ãµ" + num.substring(1,2) + "¹é" + num.substring(2,3) + "½Ê" + num.substring(3,4);
    }

    num=new String(temp);
    num=num.replace(/0½Ê/gi,"");
    num=num.replace(/0¹é/gi,"");
    num=num.replace(/0Ãµ/gi,"");
    return num;
}

//±Ý¾×¿¡ , Âï±â..
function numchk(num)
{
	if( num == "0" )
	{
		return "" ;
	}
	else if( num == "-" )
	{
		return "-" ;
	}	
	else
	{
	    num=new String(num);
	    num=num.replace(/,/gi,"");
	    return numchk1(num);
	}
}

function numchk1(num){
    var sign="";
    if(isNaN(num)) 
    {
        alert("¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù");
        return "" ;
    }
    
    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;
    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);
}


function fnc_onlyNumber_alert(num , numobj)
{
	if(isNaN(num)) {alert("¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù"); numobj.value="";numobj.focus(); return "";   }
}



//----------------------------------------------------//
	 String.prototype.trim = function()
    {
      return this.replace(/(^\s*)|(\s*$)/gi, "");
    }

    String.prototype.replaceAll = function(str1, str2)
    {
      var temp_str = "";

      if (this.trim() != "" && str1 != str2)
      {
        temp_str = this.trim();

        while (temp_str.indexOf(str1) > -1)
        {
          temp_str = temp_str.replace(str1, str2);
        }
      }

      return temp_str;
    }
//----------------------------------------------------//

function fncPriceDesc(obj, strValue)
{
	obj.innerHTML =  strValue ;
}


//----------------------------------------------------//
