﻿/****************************************************
* 함수명    : _IsInputFormat
* 함수내용  : 입력가능문자
* parameter : fldThis, invalidMessage, gubun
*****************************************************/
function _IsInputFormat(fldThis, invalidMessage, gubun) 
{
	if(fldThis.value.length > 0 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
	{
		var fldValue = fldThis.value;
		var IsExistPattern = false;
		var pattern;

		if (gubun == "Num")
		    pattern = /^[0-9]+$/gi;
		else if (gubun == "EngBig")
		    pattern = /^[A-Z]+$/g;
		else if (gubun == "EngBigNum")
		    pattern = /^[A-Z0-9]+$/g;
		else if (gubun == "EngSmall")
		    pattern = /^[a-z]+$/g;
		else if (gubun == "EngSmallNum")
		    pattern = /^[a-z0-9]+$/g;
		else if (gubun == "EngSmallNumSpc")
		    pattern = /^[a-z0-9\~\!\@\#\$\%\_\^\&\*\(\)\+\=\|\<\>\,\.\?\/\:\{\}\[\]\`]+$/g;
		else if (gubun == "EngSmallNumHanGul")
		    pattern = /^[a-z0-9가-힣ㄱ-ㅎㅏ-ㅣ]+$/g;
		else if (gubun == "Eng")
		    pattern = /^[a-zA-Z\s]+$/gi;
		else if (gubun == "EngNum")
		    pattern = /^[a-zA-Z0-9]+$/gi;
		else if (gubun == "HanGul")
		    pattern = /^[ㄱ-ㅣ가-힣]+$/g;
		else if (gubun == "HanGulEngSmall")
		    pattern = /^[a-z가-힣ㄱ-ㅎㅏ-ㅣ]+$/g;
		else if (gubun == "SpcNot") {
		    if (fldValue.search(/\W|\s\%/g) > -1) {
		        pattern = /^[a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ_]+$/g;
		        if (!pattern.test(fldValue)) {
		            alert(invalidMessage);
		            fldThis.value = "";
		            return false;
		        }
		        else
		            return true;
		    }
		    else
		        return true;
		}
		else if (gubun == "SpcLimit") {
		    pattern = /^[a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ\~\!\@\#\$\%\_\^\&\*\(\)\+\=\|\<\>\,\.\?\/\:\{\}\[\]\`]+$/gi;
		}
		else if (gubun == "Contact") {
		    pattern = /^[0-9]+$|[0-9][\-?]$|[0-9][\-?][0-9]+$/g;
		}
		else if (gubun == "NumOrPoint") {
		    pattern = /^[0-9.]+$/g;
		}
	    
	    //alert(pattern);
	    //alert(pattern.test(fldValue));
		
		if (pattern.test(fldValue)) 
		{
		    if(IsExistPattern)
		    {
		        alert(invalidMessage);
			    fldThis.value = "";
		        return false;
		    }
		    else
			    return true;
	    }
		else
		{	
			if(IsExistPattern)
		        return true;
		    else
		    {
		        alert(invalidMessage);
			    fldThis.value = "";
			    return false;
			}
		}
	}
}

/****************************************************
* 함수명    : _TextBoxTypeChange
* 함수내용  : 일반텍스트박스 -> password로 변경
* parameter : fldThis
*****************************************************/
function _TextBoxTypeChange(fldThis)
{
    var fld = document.getElementById(fldThis); 
    var fldValue = fld.value;
    var outer = fld.outerHTML;
    outer = outer.replace(/type=[a-z]*/, "");
    outer = outer.replace(/value=""/, "value=\"" + fldValue + "\"");
    
    var newTextBox = document.createElement(outer);
	newTextBox.setAttribute("type", "password");
    fld.parentNode.replaceChild(newTextBox, fld);
}


/****************************************************
* 함수명    : _IsTelNum
* 함수내용  : 전화번호 숫자입력검사
* parameter : fldThis, invalidMessage
*****************************************************/
function _IsTelNum(fldThis, invalidMessage) 
{
	if(fldThis.value.length > 0 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
	{
		var fldValue = fldThis.value;
		
		var pattern = /^(\-)|(\--+$)/gi;
		if(pattern.test(fldValue))
		{
			alert(invalidMessage);
			fldThis.value = "";
			return false;
		}
		
		pattern = /^[0-9\-]+$/gi;
		if (pattern.test(fldValue)) 
			return true;
		else
		{
			alert(invalidMessage);
			fldThis.value = "";
			return false;
		}
	}
}

/******************************************
* 함수명    : _StrLength
* 기능      : 문자열 길이구하기            
* parameter : fldValue 
*******************************************/
function _StrLength(fldValue)
{
       var Length = 0;
       var Nav = navigator.appName;
       var Ver = navigator.appVersion;
       var IsExplorer = false;
       var ch;
       if ((Nav == 'Microsoft Internet Explorer') && (Ver.charAt(0) >= 4))
          IsExplorer = true;

       if(IsExplorer)
       {
          for(var i = 0 ; i < fldValue.length; i++)
          {
              ch = fldValue.charAt(i);
              if ((ch == "\n") || ((ch >= "ㅏ") && (ch <= "히")) ||
                 ((ch >="ㄱ") && (ch <="ㅎ")))
                  Length += 2;
              else
                  Length += 1;
          }
       }
       else 
          Length = fldValue.length ;
       
       return Length;
}

/********************************************************************************
 *  함수명  : _IsTel
 *  함수내용 : 전화번호 검사
 * parameter : tel
 *********************************************************************************/
function _IsKeyUpTel(fldThis) 
{   
    var fldValue = fldThis.value.replace(/-/gi, "");
    fldValue = fldValue.substring(0,2);
    if(fldValue == "02")
	        return true;
	else
	{   
	    if(_StrLength(fldThis.value) > 2)
	    {
	        fldValue = fldThis.value.substring(0,3);
            if(fldValue == "031" || fldValue == "032" || 
               fldValue == "033" || fldValue == "041" || fldValue == "042" || 
               fldValue == "043" || fldValue == "051" || fldValue == "052" || 
               fldValue == "053" || fldValue == "054" || fldValue == "055" || 
               fldValue == "061" || fldValue == "062" || fldValue == "063" || fldValue == "064")
                return true;
            else
                return false;
        }
        else
            return true;
    }
}

/********************************************
* 함수명    : _PressUpPatternTel
* 기능      : 전화 올바른 형식으로 변환(국내용)
* parameter : fldThis         
********************************************/
function _PressUpPatternTel(fldThis, invalidMessage)
{   
	if(_IsTelNum(fldThis, invalidMessage))
	{
		var fldValue = fldThis.value.replace(/-/gi, "");
		if(fldValue.length >= 2 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
		{   
			if(!_IsKeyUpTel(fldThis))
			{
				alert(invalidMessage);
				fldThis.value = "";
				return false;
			}
		}
		var seoul = fldValue.substring(0,2);
		if(seoul == "02")
		{   
			switch (fldValue.length) 
			{   
				case 0:
				case 1:
					break;
				case 2:
					fldThis.value = fldValue.substring(0,2) + "-";
					break;
				case 3:
				    fldThis.value  = fldValue.substring(0,2) + "-" + fldValue.substr(2,3);
					break;
				case 4:
				case 5:
					fldThis.value  = fldValue.substring(0,2) + "-" + fldValue.substr(2,3) + "-";
					break;
				case 6:
				case 7:
				case 8:
				case 9:
					fldThis.value  = fldValue.substring(0,2) + "-" + fldValue.substr(2,3)+ "-" + fldValue.substr(5,4) ;
					break;
				case 10:
					fldThis.value  = fldValue.substring(0,2) + "-" + fldValue.substr(2,4)+ "-" + fldValue.substr(6,4) ;
					break;
				default :
					alert(invalidMessage);								
					fldThis.value = "";
			}
		}
		else
		{   
			switch (fldValue.length) 
			{   
				case 0:
				case 1:
				case 2:
					break;
				case 3:
					fldThis.value = fldValue.substring(0,3) + "-";
					break;
				case 4:
				    fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3);
				case 5:
				    break;
				case 6:
					fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3) + "-";
					break;
				case 7:
				case 8:
				case 9:
				case 10:
					fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3)+ "-" + fldValue.substr(6,4) ;
					break;
				case 11:
					fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,4)+ "-" + fldValue.substr(7,4) ;
					break;
				default :
					alert(invalidMessage);								
					fldThis.value = "";
			}
		}
	}

}

/********************************************************************************
 *  함수명  : _IsHp
 *  함수내용 : 휴대폰번호 검사
 * parameter : fld
 *********************************************************************************/
function _IsKeyUpHp(fldThis) 
{ 
    var fldValue = fldThis.value.replace(/-/gi, "");
    fldValue = fldValue.substring(0,3);
    if(fldValue == "010" || fldValue == "011" || fldValue == "016" || 
       fldValue == "017" || fldValue == "018" || fldValue == "019")
    {   
        return true;
    } 
    else
        return false;
}

/********************************************
* 함수명    : _PressUpPatternHp
* 기능      : 휴대폰 올바른 형식으로 변환(국내용)
* parameter : fldThis        
********************************************/
function _PressUpPatternHp(fldThis, invalidMessage)
{   
	if(_IsTelNum(fldThis, invalidMessage))
	{
		fldValue = fldThis.value.replace(/-/gi, "");
		if(fldValue.length >= 3 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
		{   
			if(!_IsKeyUpHp(fldThis))
			{
				alert(invalidMessage);
				fldThis.value = "";
				return false;
			}
		}
		switch (fldValue.length) 
		{   
			case 0:
			case 1:
			case 2:
				break;
			case 3:
				fldThis.value = fldValue.substring(0,3) + "-";
				break;
			case 4:
				fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3);
				break;			
			case 5:
				break;
			case 6:
				fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3) + "-";
				break;
			case 7:
			case 8:
			case 9:
			case 10:
				fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,3)+ "-" + fldValue.substr(6,4) ;
				break;
			case 11:
				fldThis.value  = fldValue.substring(0,3) + "-" + fldValue.substr(3,4)+ "-" + fldValue.substr(7,4) ;
				break;
			default :
				alert(invalidMessage);								
				fldThis.value = "";
		}
	}
}

/*********************************************************************
  *함수명    : _IsDate
 * 함수내용  : 날짜 check
 * parameter : fldValue
 *********************************************************************/
 function _IsDate(fldValue, gubun) 
{   
    fldValue = fldValue.replace(/-/gi, "");
    var mm        = "01";
    var dd        = "01";
    if(gubun == "year")
        fldValue = fldValue + mm + dd;
    if(gubun == "month")
        fldValue = fldValue + dd;
    if(_StrLength(fldValue) != 8 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
        return false;
        
    var monthDate = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var yyyy      = fldValue.substring(0,4);
    mm = fldValue.substr(4,2);
    dd = fldValue.substr(6,2);    
    
    var intYear = parseInt(yyyy);
    var intMonth = parseInt(mm, 10);
    var intDay = parseInt(dd, 10);
    
    if(!_IsNumber(yyyy)|| !_IsNumber(mm) || !_IsNumber(dd)) 
	    return false;
	    
	var toDate = new Date(); //현재시간
	if(gubun == "birth"){
	    if (intYear + intMonth + intDay > parseInt(toDate.getFullYear()) + parseInt(toDate.getMonth() +1) + parseInt(toDate.getDate()))
	        return false;
	}
	
    if (intYear < 1800)
	    return false;
	if (1 > intMonth || 12 < intMonth)
	    return false;
    if (1 > intDay || 31 < intDay)
	    return false;
	
	var intMM = parseInt(mm, 30)
    if ( dd > parseInt(monthDate[intMM-1]) )
    {
        if ( mm == "02" && (yyyy % 4)  == 0  && dd > 29 )
	        return false;
        else
        {
            if ( ( mm == "02" && (yyyy % 4)  != 0 && dd > 28 ) )
	            return false;
            else if ( ( mm != "02" && dd > parseInt(monthDate[intMM-1]) ) )
	            return false;
            else
	            return false;
        }
    }
    
    return true;
}

/****************************************************
* 함수명    : _IsNumber
* 함수내용  : 문자열 숫자인지여부
* parameter : fldValue
*****************************************************/
function _IsNumber(fldValue)
{     		
	var pattern = /^[0-9]+$/gi;
	if (pattern.test(fldValue)) 
		return true;
	else
		return false;
}

/****************************************************
* 함수명    : GetDataMonth(fldValue)
* 함수내용  : 올바른형식으로 날짜변환
* parameter : fldValue
*****************************************************/
function GetDateMonth(fldValue)
{     		
    fldValue = fldValue.replace(/-/gi, "");
    var yy = fldValue.substring(0,4);
    var mm = fldValue.substr(4,2);
    
    if(parseInt(mm) > 1 && parseInt(mm)<= 9)
        mm = "0" + mm;
    return yy + "-" + mm;
}

/********************************************
* 함수명    : _PressUpPatternDate
* 기능      : 날짜
* parameter : fldThis         
********************************************/
function _PressUpPatternDate(fldThis, invalidMessage, gubun)
{   
	if(fldThis.value.length > 0 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
    {
		if(_IsTelNum(fldThis, invalidMessage))
		{	
			var fldValue = fldThis.value.replace(/-/gi, "");
			switch (fldValue.length) 
		    {   
			    case 0:
			    case 1:
			    case 2:
			    case 3:
			        break;
			    case 4:
			        if(gubun == "year")
			        {
			            if(!_IsDate(fldThis.value, gubun))
				        {
				            alert(invalidMessage);
				            fldThis.value = "";    
				        }
			        }
			        else
			            fldThis.value = fldValue.substring(0,4) + "-";
				    break;
			    case 5: fldThis.value  = fldValue.substring(0,4) + "-" + fldValue.substr(4,2);
			            fldThis.value = GetDateMonth(fldThis.value);
				    break;
			    case 6: if(!_IsDate(fldThis.value, "month"))
				        {   
				            alert(invalidMessage);
				            fldThis.value = "";    
				        }			        
				        if(gubun != "month")
				            fldThis.value  = fldValue.substring(0,4) + "-" + fldValue.substr(4,2) + "-";
				    break;
			    case 7:
			        break;
			    case 8:
			        if(!_IsDate(fldThis.value, gubun))
				    {
				        alert(invalidMessage);
				        fldThis.value = "";    
				    }
				    break;
			    default : alert(invalidMessage);								
				          fldThis.value = "";
		    }
	   }
	}
}
 

/********************************************
* 함수명    : _StrComma
* 기능      : 콤마찍기
* parameter : imageWidth, borderColor
********************************************/
function _PressUpPatternComma(fldThis, invalidMessage) {
	if(fldThis.value.length > 0 && event.keyCode != 37 && event.keyCode != 39)
	{
		 var fldValue = fldThis.value;
		 if(fldValue != "-")
		 {
			 var IsdotU = false;
			 if(fldValue.indexOf(".") >= 0 )  
			 { 
				IsdotU = true;
				var dotPos = fldValue.split(".");
				num = dotPos[0];
				dotU = dotPos[1];  
			 }
			 else
				num = fldValue;

			 num = new String(num);
			 num = num.replace(/,/gi,""); 
			 fl = "";   
			 if(num==0) return num; 
			 if(num<0) 
			 { 
				num = num * (-1); 
				fl = "-";
			 }
			 else
				num = num * 1;

			 num = new String(num); 
			 temp = "";
			 co = 3; 
			 num_len = num.length 
			 while(num_len>0)
			 { 
				num_len=num_len-co; 
				if(num_len<0){ co=num_len+co;num_len=0; } 
				temp="," + num.substr(num_len,co) + temp; 
			 }
			 
			 var ch_val = fl + temp.substr(1);            
			 if(IsdotU) ch_val = ch_val + "." + dotU;
			 {
				if(ch_val == "NaN")
				{
					alert(invalidMessage);
					fldThis.value = "";
					return false;
				}   
				else
					fldThis.value = ch_val; 
			 }
		 }
	}
}

/********************************************
* 함수명    : _IsValidJumin
* 기능      : 주민등록번호 Check  
* parameter : jumin.value           
********************************************/
function _IsValidJumin(fldValue)
{   
    // 주민번호 체크
    fldValue = fldValue.replace(/-/gi, "");
    var jumin1 = fldValue.substring(0,6);
    var jumin2 = fldValue.substr(6,7);
    
    var chk = 0 ;
    var yy = jumin1.substring(0,2);
    var mm = jumin1.substring(2,4);
    var dd = jumin1.substring(4,6);
	
    var tmp = 0 ;  		
    var sex = jumin2.substring(0,1);
	
    for (var i = 0; i <= 5 ; i++)
	    tmp = tmp + ((i%8+2) * parseInt(jumin1.substring(i,i+1)))
	
    for (var j = 6; j <=11 ; j++)
        tmp = tmp + ((j%8+2) * parseInt(jumin2.substring(j-6,j-5)))

    tmp = 11 - (tmp %11)
    tmp = tmp % 10
	
    //if ((jumin1.length != 6 ) || (yy < 25 || mm < 1 || mm > 12 || dd < 1))
    if ((jumin1.length != 6 ) || (mm < 1 || mm > 12 || dd < 1))
    {   
	    return false;
	}
    else if (jumin2.length !=7)
    {   
	    return false;
	}
    //else if ((sex != 1 && sex !=2 && sex !=3 && sex !=4) || (jumin2.length != 7 ))
    else if (jumin2.length != 7 )
    {   
	    return false;
	}
    else if (tmp != jumin2.substring(6,7))
    {   
	    return false;
    }

    return true;
}

/********************************************
* 함수명    : _ChangePatternJumin
* 기능      : 주민등록번호 올바른형식으로 바꾸기
* parameter : jumin.value           
********************************************/
function _PressUpPatternJumin(fldThis, invalidMessage)
{   
	if(_IsTelNum(fldThis, invalidMessage) && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
	{
	    var fldValue = fldThis.value.replace(/-/gi, "");
		switch (fldValue.length) 
		{   
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
				break;
			case 6:
				fldThis.value  = fldValue.substring(0,7) + "-";
				break;
			case 7:
			    fldThis.value  = fldValue.substring(0,6) + "-" + fldValue.substring(6,7);
				break;
			case 8:
			case 9:
			case 10:
			case 11:
			case 12:
			    break;
			case 13:
				if(!_IsValidJumin(fldThis.value))
				{   
				    alert(invalidMessage);
				    fldThis.value = "";    
				}
				break;
			default :
				alert(invalidMessage);								
				fldThis.value = "";
		}
	}
}

/********************************************
* 함수명    : _EnterFocusMove
* 기능      : 엔터 컨트롤이동
* parameter : clientId
********************************************/
function _EnterFocusMove(clientId) 
{
    var k = window.event.keyCode;
    //13:enter
    if (k == 13 || k == 9)
    {   
        var obj = document.getElementById(clientId);
        obj.focus();
        if(obj.type == "submit")
            obj.click();
        return false ;
    }
}

/********************************************
* 함수명    : _TabFocusMove
* 기능      : tab키 컨트롤 이동
* parameter : clientId
********************************************/
function _TabFocusMove(clientId) 
{   
    var k = window.event.keyCode;
    //9:tab
    if (k == 13)
    {   
        var obj = document.getElementById(clientId);
        obj.focus();
        if(obj.type == "submit")
            obj.click();
        return false ;
    }
}


















