/////////////////////////////////////////////////////////////////////
//         name   : chkForm.js                                     //
//         Author : Kim juseok (snactin@empal.com)                 //
//         1. isNumeric(Str)                                       //
//         2. isAlphabet(Str)                                      //
//         3. isAlphabetNumeric(Str)                               //
//         4. isSpace(Str)                                         //
//         5. removeSpace(Str)                                     //
//         6. isEmpty(Str)                                         //
//         7. getByteLength(Str)			     				   //
//		   8. isKorean(name)					    			   //
//		   9. isTelNumeric(Str)						    		   //
//		   10. isDate( value )									   //
//		   11. isEmail(Str)                                        //
//		   12. conTelNumber(Str)                                   //
//		   13. isCompanyNumber(Str)                                //
//		   14. isJuminNumber(Str)                                  //
//         15. isFile(Str)                                         //
/////////////////////////////////////////////////////////////////////

/************************************************************************
*  Function Name : isNumeric(Str)                                       *
*  Description   : input Data¿¡ ´ëÇØ ¼ýÀÚÀÎÁö ¾Æ´ÑÁö CHECK             	*
*  Input Data    : Str                                         		    *
*  Output Data   : true/false (¼ýÀÚ -> true, ¼ýÀÚ°¡ ¾Æ´Ñ °æ¿ì -> false) *
*  »ç¿ëµÇ´Â Function : None                                         	*
************************************************************************/
function isNumeric(Str) {
	
	var retValue = true;
	var count;
	var permitChar = "0123456789";
	
	for (var i = 0; i < Str.length; i++) {
		count = 0;
		for (var j = 0; j < permitChar.length; j++) {
			if(Str.charAt(i) == permitChar.charAt(j)) {
				count++;
				break;
			}
		}
		
		if (count == 0) {
			retValue = false;
			break;
		}
	}
	return retValue;
}


/************************************************************************
*  Function Name : isAlphabet(Str)                                      *
*  Description   : input Data¿¡ ´ëÇØ ¿µ¹®ÀÚÀÎÁö ¾Æ´ÑÁö CHECK             *
*  Input Data    : Str                                         		    *
*  Output Data   : true/false (¿µ¹®ÀÚ->true, ¿µ¹®ÀÚ°¡ ¾Æ´Ñ °æ¿ì ->false) *
*  »ç¿ëµÇ´Â Function : None                                         	    *
************************************************************************/
function isAlphabet(Str) {
	
	var retValue = true;
	var count;
	var permitChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	for (var i = 0; i < Str.length; i++) {
		count = 0;
		for (var j = 0; j < permitChar.length; j++) {
			if(Str.charAt(i) == permitChar.charAt(j)) {
				count++;
				break;
			}
		}
		
		if (count == 0) {
			retValue = false;
			break;
		}
	}
	return retValue;
}


/************************************************************************
*  Function Name : isAlphabetNumeric(Str)                               *
*  Description   : input Data¿¡ ´ëÇØ ¿µ¼ýÀÚÀÎÁö CHECK		          	*
*  Input Data    : Str                                           		*
*  Output Data   : true/false (¿µ¼ýÀÚ -> true, ¿µ¼ýÀÚ¾Æ´Ñ°æ¿ì -> false) *
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isAlphabetNumeric(Str) {
	var retValue = true;
	var count;
	var permitChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
	
	for (var i = 0; i < Str.length; i++) {
		count = 0;
		for (var j = 0; j < permitChar.length; j++) {
			if(Str.charAt(i) == permitChar.charAt(j)) {
				count++;
				break;
			}
		}
		
		if (count == 0) {
			retValue = false;
			break;
		}
	}
	return retValue;
}


/************************************************************************
*  Function Name : isSpace(Str)                                         *
*  Description   : input Data¿¡ ´ëÇØ °ø¹éÀÌ ÀÖ´ÂÁö ¿©ºÎ CHECK          	*
*  Input Data    : Str                                           		*
*  Output Data   : true/false (°ø¹é -> true, °ø¹éÀÌ ¾ø´Â °æ¿ì -> false)  *
*  »ç¿ëµÇ´Â Function : ChkVal(String)                                  	*
************************************************************************/
function isSpace(Str) {
	return ChkVal(Str);
}

function ChkVal(Str) {
	var retValue=false;
	for (var i=0; i<Str.length; i++) {
		if (Str.charAt(i)==' ') {
			retValue=true;
			break;
		}
	}
	return retValue;
}

/********************************************************************
*  Function Name : removeSpace(str)                                 *
*  Description   : Input Data ÀÇ Space¸¦ Á¦°ÅÇÑ´Ù.                   *
*  Input Data    : Str                                              *
*  Output Data   : retValue                                         *
*  »ç¿ë Function : None                                             *
********************************************************************/
function removeSpace(Str)
{
    var src = new String(Str);
    var retValue = new String();
    var i, len = src.length;
	
    for(i = 0;i < len;i++) {
        if(src.charAt(i) != " ") {
            retValue = retValue + src.charAt(i);
        }
    }
    
    return retValue;
}

/************************************************************************
*  Function Name : isEmpty(Str)                                         *
*  Description   : input Data¿¡ ´ëÇØ  NULL CHECK       				   	*
*  Input Data    : Str                                           		*
*  Output Data   : true/false (NULL -> true, NULL¾Æ´Ñ°æ¿ì -> false)     *
*  »ç¿ëµÇ´Â Function : removeSpace(Str)                                	*
************************************************************************/
function isEmpty(Str) {
	var len = removeSpace(Str).length;
    
    return(Str == "" || len == 0) ? true : false;
}


/************************************************************************
*  Function Name : getByteLength(Str)	                                *
*  Description   : input Data¿¡ ´ëÇØ byte±æÀÌ¸¦ ±¸ÇÔ  	                *
*  				   ÇÑ±Û ÇÑ±ÛÀÚ¸¦ 2byte·Î ÀÎ½ÄÇÑ´Ù.					  	*
*  Input Data    : Str                                           		*
*  Output Data   : retValue (byte±æÀÌ)									*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function getByteLength(Str){
	var retValue = 0;
	if ( Str == null ) return 0;
	for(var i=0;i<Str.length;i++){
		var c = escape(Str.charAt(i));
		if ( c.length == 1 ) retValue ++;
		else if ( c.indexOf("%u") != -1 ) retValue += 2;
		else if ( c.indexOf("%") != -1 ) retValue += c.length/3;
	}
	return retValue;
}


/************************************************************************
*  Function Name : isKorean(Str)                                  		*
*  Description   : input Data¿¡ ´ëÇØ ÇÑ±ÛÀÎÁö CHECK		          		*
*  Input Data    : Str                                           		*
*  Output Data   : true/false (ÇÑ±Û -> true, ÇÑ±Û¾Æ´Ñ°æ¿ì -> false)   	*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isKorean(Str) {
    var ch = "\0";    
	var retValue = true;     
	for (var i = 0, ch = Str.charAt(i); (i <Str.length) && (retValue); ch = Str.charAt(++i)) {
        if ((ch >= '0') && (ch <= '9'))              retValue = false;
        else if ((ch >= 'a') && (ch <= 'z'))              retValue = false;
        else if ((ch >= 'A') && (ch <= 'Z'))              retValue = false;
        else if ( ch == ' ' || ch == '~' || ch == '`' || ch == '\\'|| 
			ch == '-' || ch == '_' || ch == '|' || ch == '+' ||
			ch == '=' || ch == ',' || ch == '.' || ch == '/' ||
			ch == '<' || ch == '>' || ch == '?' || ch == '!' ||
			ch == '@' || ch == '#' || ch == '$' || ch == '%' || 
			ch == '^' || ch == '&' || ch == '*' || ch == '(' || 
			ch == ')' || ch == '\"' || ch == '[' || ch == '(' )
			retValue = false;     
	}    
	return retValue;
}


/************************************************************************
*  Function Name : isTelNumeric(Str)                                	*
*  Description   : input Data¿¡ ´ëÇØ '-'Æ÷ÇÔ ¼ýÀÚÀÎÁö CHECK        		*
*  Input Data    : retValue                                           	*
*  Output Data   : true/false (¼ýÀÚ -> true, ¼ýÀÚ¾Æ´Ñ°æ¿ì -> false) 	*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isTelNumeric(Str) {
	
	var retValue = true;
	var count;
	var permitChar = "0123456789-";
	
	for (var i = 0; i < Str.length; i++) {
		count = 0;
		for (var j = 0; j < permitChar.length; j++) {
			if(Str.charAt(i) == permitChar.charAt(j)) {
				count++;
				break;
			}
		}
		
		if (count == 0) {
			retValue = false;
			break;
		}
	}
	return retValue;
}


/************************************************************************
*  Function Name : isDate(Str)	                            		    *
*  Description   : input Data¿¡ ´ëÇØ ÀÔ·ÂµÈ ³¯Â¥ validation CHECK  		*
*  Input Data    : Str                                        	   	    *
*  Output Data   : true/false (À¯È¿ -> true, À¯È¿ÇÏÁö¾ÊÀº°æ¿ì -> false)	*
*  »ç¿ëµÇ´Â Function : checkMonth( month ), checkDay( year, month, day )*
************************************************************************/
function isDate( Str ) {
    
    if( Str.length != 8 ){
    	return false;
    }
    var year = Str.substring(0,4);
    var month = subTxt(Str.substring(4,6));
    var day   = subTxt(Str.substring(6,8));
    if ( parseInt( year ) >= 1900  && checkMonth( month ) && checkDay( year, month, day ) )
        return true;
    else
	 return false;
	
}

function subTxt( Str )
{
	if(Str.substring(0,1) == 0) {
		Str = Str.substring(1,2);
	}
	return Str;
}

function checkMonth( Str )
{
    if ( parseInt( Str ) <= 0  || parseInt( Str ) > 12  )
        return false;
    else
        return true;
}

function checkDay( yyyy, mm, dd )
{
    var monthDD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var im = parseInt(mm) - 1;
    
    if( ( (yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0) )
        monthDD[1] = 29;
    
    if( parseInt( dd ) <= 0 || parseInt( dd ) > monthDD[im] )
        return false;
    else
        return true;
}


/************************************************************************
*  Function Name : isEmail(Str)                            				*
*  Description   : input Data¿¡ ´ëÇØ Email validation CHECK        		*
*  Input Data    : Str                                           		*
*  Output Data   : true/false ((À¯È¿ -> true, À¯È¿ÇÏÁö¾ÊÀº°æ¿ì -> false)*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isEmail(Str) {
	var chkflag=true;
	var retValue;
	if (window.RegExp) {
		var tmpstr="a";
		var exam=new RegExp(tmpstr);
		if (tmpstr.match(exam)) {
			var ret1=new RegExp("(\\.@)|(\\,@)|(\\;@)|(\\!@)|(\\?@)|(\\#@)|(\\$@)|(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
			var ret2=new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
			retValue=(!ret1.test(Str) && ret2.test(Str));
		}
		else
			chkflag=false;
	}
	else
		chkflag=false;
	if (!chkflag)
		retValue=((Str!="") && (Str.indexOf("@"))>0 && (Str.index.Of(".")>0)); 
	return retValue;
}


/************************************************************************
*  Function Name : conTelNumber(Str)                          			*
*  Description   : ¿µ¹®ÀÚ input Data¿¡ ´ëÇØ ¼ýÀÚÀüÈ­¹øÈ£·Î º¯È¯			*
*  Input Data    : Str                                           		*
*  Output Data   : phonenumber 											*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function conTelNumber(Str) {
	
	var Strlength = Str.length;
	Str = Str.toLowerCase();
	var phonenumber = "";
	
	for (i = 0; i < Strlength; i++) {
		var character = Str.charAt(i);
		
		switch(character) {
		case '0': phonenumber+="0";break;
		case '1': phonenumber+="1";break;
		case '2': phonenumber+="2";break;
		case '3': phonenumber+="3";break;
		case '4': phonenumber+="4";break;
		case '5': phonenumber+="5";break;
		case '6': phonenumber+="6";break;
		case '7': phonenumber+="7";break;
		case '8': phonenumber+="8";break;
		case '9': phonenumber+="9";break;
		case '-': phonenumber+="-";break;
		case 'a': case 'b': case 'c': phonenumber+="2";break;
		case 'd': case 'e': case 'f': phonenumber+="3";break;
		case 'g': case 'h': case 'i': phonenumber+="4";break;
		case 'j': case 'k': case 'l': phonenumber+="5";break;
		case 'm': case 'n': case 'o': phonenumber+="6";break;
		case 'p': case 'q': case 'r': case 's': phonenumber+="7";break;
		case 't': case 'u': case 'v': phonenumber+="8";break;
		case 'w': case 'x': case 'y': case 'z': phonenumber+="9";break;
		}
	} 
	return phonenumber;
}


/************************************************************************
*  Function Name : isCompanyNumber(Str)                        			*
*  Description   : input Data¿¡ ´ëÇØ »ç¾÷ÀÚµî·Ï¹øÈ£ CHECK          		*
*  Input Data    : Str                                           		*
*  Output Data   : true/false ((À¯È¿ -> true, À¯È¿ÇÏÁö¾ÊÀº°æ¿ì -> false)*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isCompanyNumber(Str) {
	
	var num9=0;
	var crtsum=0;
	var num,num1,num2 =0;
	
	num9 = parseInt(Str.substring(8,9))*5;
	if (num9>9) {
		num1 =parseInt(num9/10);
		num2 = num9%10;
		num = num1 + num2;
	} else {
		num = parseInt(num9);
	}
	crtsum = parseInt(Str.substring(0,1))+
		parseInt(Str.substring(1,2))*3+
		parseInt(Str.substring(2,3))*7+
		parseInt(Str.substring(3,4))+
		parseInt(Str.substring(4,5))*3+
		parseInt(Str.substring(5,6))*7+
		parseInt(Str.substring(6,7))+
		parseInt(Str.substring(7,8))*3+
		num;
	crtsum = 10 - (crtsum%10);
	if ((crtsum%10) == (parseInt(Str.substring(9,10)))) {
		return true;
	} else { 
		return false;
    }
}


/************************************************************************
*  Function Name : isJuminNumber(Str1, Str2)                   			*
*  Description   : input Data¿¡ ´ëÇØ ÁÖ¹Îµî·Ï¹øÈ£ CHECK            		*
*  Input Data    : Str1, Str2                                      		*
*  Output Data   : true/false ((À¯È¿ -> true, À¯È¿ÇÏÁö¾ÊÀº°æ¿ì -> false)*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isJuminNumber(ResNo1, ResNo2)
{
	var chk =0;
	var yy = ResNo1.substring(0,2);

	var mm = parseInt(ResNo1.substring(2,4), 10);
	var dd = parseInt(ResNo1.substring(4,6), 10);
	var sex = parseInt(ResNo2.substring(0,1), 10);

	// À¯È¿ÇÑ ´Þ, ÀÏ Ã¼Å©
	if ((mm>12)||(mm<1)||(dd<1)||(dd>31)) {
		return false;
	}

  	if ((sex != 1 && sex !=2 && sex !=3 && sex !=4)||(ResNo2.length != 7 )){
    		return false;
  	}

  	for (var i = 0; i <=5 ; i++){
		chk = chk + ((i%8+2) * parseInt(ResNo1.substring(i,i+1)))
 	}

  	for (var i = 6; i <=11 ; i++){
        	chk = chk + ((i%8+2) * parseInt(ResNo2.substring(i-6,i-5)))
 	}


  	chk = 11 - (chk %11)
  	chk = chk % 10


  	if (chk != ResNo2.substring(6,7))
  	{
    		return false;
  	}


    var intYear, intMonth, intDay
    var dayToday, dayUser

    if (sex == 3 || sex == 4) {
        intYear = "20" + yy
    }

    intMonth = mm - 1
    intDay = dd

    dayUser = new Date(intYear, intMonth, intDay);
    dayToday = new Date()

    if ( (dayUser.getTime() - dayToday.getTime()) > 0 ) {
		    return false;
	}

    return true
}
/*
function isJuminNumber(Str1, Str2){
	
	var total = 0;
	var temp = new Array(13);
	var k;
	
	for(var i=1; i<=6; i++)
		temp[i] = Str1.charAt(i-1);
	for(var i=7; i<=13; i++)
		temp[i] = Str2.charAt(i-7);
	
	for(i=1; i<=12; i++){
		k = i + 1;
		if(k >= 10)
			k = k % 10 + 2;
		total = total + temp[i] * k;
	}
	var mm = temp[3] + temp[4];
	var dd = temp[5] + temp[6];
	
	var totalmod = total % 11;
	totalmod = 11 - totalmod;
	if(totalmod == temp[13] && mm < 13 && dd < 32 && (temp[7]==1 || temp[7]==2)){
		return true;
	}else{ 
		return false;
	}
}	*/

/************************************************************************
*  Function Name : isFile(Str)				                   			*
*  Description   : input Data¿¡ ´ëÇØ ÆÄÀÏÀÌ¸§ CHECK            		    *
*  Input Data    : Str		                                    		*
*  Output Data   : true/false ((À¯È¿ -> true, À¯È¿ÇÏÁö¾ÊÀº°æ¿ì -> false)*
*  »ç¿ëµÇ´Â Function : none		                                     	*
************************************************************************/
function isFile(Str){
	var matchTxt=Str.match(/^[A-Za-z]:(\\.+)+$|^\\(\\.+)+$/ig);
	if ( matchTxt == null ) {
		return false;
	} else {
		return true;
	}
}