﻿//======================================================================================================
// 함 수 명 : Validation_TextBox
// 설    명 : 텍스트 박스 입력 여부 체크
// 파라메타 : 텍스트박스 ID
// 파라메타 : 표시 메세지
// 파라메타 : 포커스를 해당 객체로 하는지 여부 (true:한다, false:안한다)
//======================================================================================================
function Validation_TextBox(objectID, message, isFocus)
{
    var oTextBox = document.getElementById(objectID);           //텍스트박스 객체
    var value = Global_Trim(oTextBox.value);                    //문자열의 좌우 공백을 제거한다.
 
    //텍스트박스가 비어 있으면
    if(value == "" || value == null)
    {
        alert(message);
        
        //포커스를 이동할 경우
        if (isFocus == "true")
        {
            oTextBox.focus();
        }
        
        return false;
    }    
    else
    {
        return true;
    }
}

//======================================================================================================
// 함 수 명 : Validation_TextBox2
// 설    명 : 텍스트 박스 입력 여부 체크 및 해당 값과 같은지 여부
// 파라메타 : 텍스트박스 ID
// 파라메타 : 비교하고자 하는 값
// 파라메타 : 표시 메세지
// 파라메타 : 포커스를 해당 객체로 하는지 여부 (true:한다, false:안한다)
//======================================================================================================
function Validation_TextBox2(objectID, str, message, isFocus) {
    var oTextBox = document.getElementById(objectID);           //텍스트박스 객체
    var value = Global_Trim(oTextBox.value);                    //문자열의 좌우 공백을 제거한다.

    //텍스트박스가 비어 있거나 해당 값과 다른 경우
    if (value == "" || value == null || value != str) {
        alert(message);

        //포커스를 이동할 경우
        if (isFocus == "true") {
            oTextBox.focus();
        }

        return false;
    }
    else {
        return true;
    }
}

//======================================================================================================
// 함 수 명 : Validation_TextBox3
// 설    명 : 텍스트 박스 입력 여부 체크 및 해당 값과 다른지 여부
// 파라메타 : 텍스트박스 ID
// 파라메타 : 비교하고자 하는 값
// 파라메타 : 표시 메세지
// 파라메타 : 포커스를 해당 객체로 하는지 여부 (true:한다, false:안한다)
//======================================================================================================
function Validation_TextBox3(objectID, str, message, isFocus) {
    var oTextBox = document.getElementById(objectID);           //텍스트박스 객체
    var value = Global_Trim(oTextBox.value);                    //문자열의 좌우 공백을 제거한다.

    //텍스트박스가 비어 있거나 해당 값과 다른 경우
    if (value == "" || value == null || value == str) {
        alert(message);

        //포커스를 이동할 경우
        if (isFocus == "true") {
            oTextBox.focus();
        }

        return false;
    }
    else {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_DropDownList
// 설    명 : 드롭다운리스트 선택 여부 체크
// 파라메타 : 드롭다운리스트 ID
// 파라메타 : 표시 메세지
//======================================================================================================
function Validation_DropDownList(objectID, message)
{
    var oDropDownList = document.getElementById(objectID);        //선택할 라디오버튼 리스트 컨트롤
    
    if(oDropDownList.options[oDropDownList.selectedIndex].value == "")
    {
        alert(message);
        
        return false;
    }
    else
    {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_CheckBox
// 설    명 : 체크박스 선택 여부 체크
// 파라메타 : 체크박스 ID
// 파라메타 : 표시 메세지
//======================================================================================================
function Validation_CheckBox(objectID, message)
{
    var oCheckBox = document.getElementById(objectID);        //선택할 체크박스 컨트롤
    
    //체크되어 있지않으면 메세지 출력
    if(!oCheckBox.checked)
    {
        alert(message);
        
        return false;
    }
    else
    {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_CheckBoxList
// 설    명 : 체크박스리스트 선택 여부 체크
// 파라메타 : 체크박스리스트 ID
// 파라메타 : 표시 메세지
//======================================================================================================
function Validation_CheckBoxList(objectID, message)
{
    var oCheckBoxList = document.getElementById(objectID);        //선택할 체크박스 컨트롤을 포함하고 있는 테이블
    var oCheckBox = null;
    var isPass = false;
    
    //체크박스 컨트롤 수만큼 반복
    for(var i=0; i < oCheckBoxList.rows.length; i++)
    {
        oCheckBox = document.getElementById(objectID + "_" + i);        //해당 체크박스 컨트롤
        
        //체크되어 있으면
        if(oCheckBox.checked)
        {
            isPass = true;           
            break;
        }
    }

    //체크되어 있지않으면 메세지 출력
    if(!isPass)
    {
        alert(message);
        
        return false;
    }
    else
    {
        return true;
    }
}

//======================================================================================================
// 함 수 명 : Validation_CheckBoxList2
// 설    명 : 체크박스리스트 선택 값이 해당 값과 같은 경우
// 파라메타 : 체크박스리스트 ID
// 파라메타 : 해당 값
//======================================================================================================
function Validation_CheckBoxList2(objectID, str) {
    var oCheckBoxList = document.getElementById(objectID);        //선택할 체크박스 컨트롤을 포함하고 있는 테이블
    var oCheckBox = null;
    var isPass = false;

    //체크박스 컨트롤 수만큼 반복
    for (var i = 0; i < oCheckBoxList.rows.length; i++) {
        oCheckBox = document.getElementById(objectID + "_" + i);        //해당 체크박스 컨트롤

        //체크되어 있으면
        if (oCheckBox.value == str) {
            isPass = true;
            break;
        }
    }

    if (!isPass) {
        return false;
    }
    else {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_RadioButton
// 설    명 : 라디오버튼 선택 여부 체크
// 파라메타 : 라디오버튼 ID
// 파라메타 : 표시 메세지
//======================================================================================================
function Validation_RadioButton(objectID, message)
{
    var oRadioButton = document.getElementById(objectID);        //선택할 라디오버튼 컨트롤
    
    //체크되어 있지않으면 메세지 출력
    if(!oRadioButton.checked)
    {
        alert(message);
        
        return false;
    }
    else
    {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_RadioButtonList
// 설    명 : 라디오버튼리스트 선택 여부 체크
// 파라메타 : 라디오버튼리스트 ID
// 파라메타 : 표시 메세지
//======================================================================================================
function Validation_RadioButtonList(objectID, message) 
{
    var oRadioButtonList = document.getElementsByName(objectID);        //체크할 라디오버튼 리스트 컨트롤
    var isPass = false;
    
    //라디오버튼 수만큼 반복
    for(var i=0; i < oRadioButtonList.length; i++)
    {
        //체크되어 있으면
        if(oRadioButtonList[i].checked)
        {
            isPass = true;           
            break;
        }
    }
    
    //체크되어 있지않으면 메세지 출력
    if(!isPass)
    {
        alert(message);
        
        return false;
    }
    else
    {
        return true;
    }
}

//======================================================================================================
// 함 수 명 : Validation_RadioButtonList2
// 설    명 : 라디오버튼리스트 선택 여부 체크와 체크된 값이 해당값과 같은경우를 체크
// 파라메타 : 라디오버튼리스트 ID
// 파라메타 : 비교하고자 하는 값
//======================================================================================================
function Validation_RadioButtonList2(objectID, value) {
    var oRadioButtonList = document.getElementsByName(objectID);        //체크할 라디오버튼 리스트 컨트롤
    var isPass = false;

    //라디오버튼 수만큼 반복
    for (var i = 0; i < oRadioButtonList.length; i++) {
        //체크되어 있으면서 비교값과 같은 경우
        if (oRadioButtonList[i].checked && oRadioButtonList[i].value == value) {
            isPass = true;
            break;
        }
    }

    if (!isPass) {
        return false;
    }
    else {
        return true;
    }
}


//======================================================================================================
// 함 수 명 : Validation_Number
// 설    명 : 숫자만 입력 받기 (onkeypress 이벤트를 사용해야 한다.)
//======================================================================================================
function Validation_Number()
{
	if(((event.keyCode > 47) && (event.keyCode < 58)) || (event.keyCode == 190) || (event.keyCode == 110))
	{
		event.returnValue = true;
	}
	else
	{
		event.returnValue = false;
	}
}


//======================================================================================================
// 함 수 명 : Validation_EMail
// 설    명 : E-Mail 형식 체크
// 파라메타 : 문자열
//======================================================================================================
function Validation_EMail(str)
{
	if(str != "")
	{
		if(Global_TrimSpaces(str) != "")
		{
			var chkEmail = str.match(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/);

			if (chkEmail == null)
			{
				alert("메일 주소의 형식이 올바르지 않습니다.");				
				return false;
			}
			else
			{
			    return true;
			}
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
}


//======================================================================================================
// 함 수 명 : Validation_SocialNumberFocus
// 설    명 : 주민번호 숫자만 입력및 fouce 자동 이동
// 파라메타 : 주민등록번호 앞자리 입력 텍스트박스 ID
// 파라메타 : 주민등록번호 뒷자리 입력 텍스트박스 ID
//======================================================================================================
function Validation_SocialNumberFocus(frontTextBoxID, rearTextBoxID)
{
    var oFrontTextBox = document.getElementById(frontTextBoxID);        //주민등록번호 앞쪽 입력 텍스트박스 객체
        var oRearTextBox = document.getElementById(rearTextBoxID);          //주민등록번호 뒷쪽 입력 텍스트박스 객체
     
        //입력 문자가 6자가 되면
        if(oFrontTextBox.value.length  > 5)
        {
            oRearTextBox.focus();
        }
}


//======================================================================================================
// 함 수 명 : Validation_SocialNumber
// 설    명 : 주민등록번호 체크
// 파라메타 : 주민등록번호 앞자리
// 파라메타 : 주민등록번호 뒷자리
//======================================================================================================
function Validation_SocialNumber(strFront, strRear)
{
    var str = strFront + "-" + strRear;
    
    // 주민번호의 형태와 7번째 자리(성별) 유효성 검사
    fmt = /^\d{6}-[1234]\d{6}$/;
    
    if (!fmt.test(str)) 
    {
        alert("잘못된 주민등록번호입니다."); 
        return false;
    }

    // 날짜 유효성 검사
    birthYear = (str.charAt(7) <= "2") ? "19" : "20";
    birthYear += str.substr(0, 2);
    birthMonth = str.substr(2, 2) - 1;
    birthDate = str.substr(4, 2);
    birth = new Date(birthYear, birthMonth, birthDate);

    if ( birth.getYear() % 100 != str.substr(0, 2) || birth.getMonth() != birthMonth || birth.getDate() != birthDate) 
    {
        alert("잘못된 주민등록번호입니다."); 
        return false;
    }

    // Check Sum 코드의 유효성 검사
    buf = new Array(13);
    
    for (i = 0; i < 6; i++) 
    {
        buf[i] = parseInt(str.charAt(i));
    }
    
    for (i = 6; i < 13; i++) 
    {
        buf[i] = parseInt(str.charAt(i + 1));
    }

    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
    
    for (i = 0, sum = 0; i < 12; i++) 
    {
        sum += (buf[i] *= multipliers[i]);
    }

    if ((11 - (sum % 11)) % 10 != buf[12]) 
    {
        alert("잘못된 주민등록번호입니다."); 
        return false;
    }

    return true;
}